If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.
Previous year's Project Ideas
Please organise your project idea into a category below. Feel free to create new categories if needed.
Lean JVM Runtime
Brief explanation: The current Clojure/JVM runtime is fully-featured, and can become even more fully-featured with projects like core.typed. However, sometimes it is important to have a leaner runtime that is less resource-intensive. This is ideal for instances where Clojure serves primarily as a library or in lean runtime environments like Google App Engine or Android where a quick startup is desirable. The goal of this project would be to create an alternative lean Clojure runtime and associated compiler. The compiler may be based either of the standard compiler or the ClojureScript compiler. Clojure vars would compile to static fields or methods. It will be necessary to find out which subset of the language makes sense (for example, vars would probably not really exist anymore).
Expected results: A lean Clojure runtime and compiler (well, some good progress to this end)
Knowledge prerequisites: A thorough understanding of Clojure and some familiarity with byte code generation for the JVM.
Mentor: Daniel Solano Gómez
Quil on ClojureScript
Expected results: quil clojurescript library capable of running regular quil sketches, documentation how to use it in clojurescript project.
Skill Level: Medium
Mentor: Nikita Beloglazov (firstname.lastname@example.org)
Dynalint: Improved Core Clojure errors and warnings
Brief explanation: Error reporting has been identified as a common complaint of Clojure in the latest Clojure Survey. In many cases, addressing these concerns directly in the core Clojure implementation would degrade performance, while an explicit "strict" or debug mode for Clojure would require extensive changes to Clojure core. Dynalint takes another approach: it is an external tool that can "instrument" core Clojure functionality to emit warnings and better errors. This approach has some limitations, but it can quickly make headway in an area that Clojure struggles with.
Expected results: A comprehensive suite of useful warnings and errors for the (near) latest version/s of Clojure.
Knowledge prerequisites: None
Mentor: Ambrose Bonnaire-Sergeant