Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History


Information for Students

These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.

Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

If there is no specific contact given you can ask questions on the general Clojure Google Group -

Adding a Proposal

Please follow this template. If you don't have Confluence access please submit your idea, following this template to the clojure mailing list with the subject prefix [GSoC Idea].  Also, feel free to add new categories.

Project title (heading level 3)

Brief explanation: A few sentences describing the problem to solved.

Expected results: What should the student have been able to produce at the end of the project. This includes things like tests and documentation.

Knowledge prerequisites: If a student needs to know something to be able to complete the project, be sure to list it.

Mentor: Add your name if you are developer who is willing to be a primary or secondary mentor for the project.

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 see the Google Summer of Code 2012 and the 2013 Project Ideas 2013 for examples of project ideas.

Project Ideas

Please organise your project idea into a category below. Feel free to create new categories if needed.

Core Clojure

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.

Difficulty: Hard

Mentor: Daniel Solano Gómez


Quil on ClojureScript

Brief explanation: Quil is a drawing and animation library for clojure. It is basically wrapper over Processing. Currently Quil works only on vanilla clojure (JVM based). It would be cool to have it also on ClojureScript. Processing already have javascript version: Processing.js, so it can be used for our goals.

Expected results: quil clojurescript library capable of running regular quil sketches, documentation how to use it in clojurescript project.

Knowledge prerequisites: familiarity with clojurescript, javascript

Skill Level: Medium

Mentor: Nikita Beloglazov (


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

Difficulty: Easy

Mentor: Ambrose Bonnaire-Sergeant