Skip to end of metadata
Go to start of metadata

Mentoring organization application

This page provides a workspace where we can prepare our application.  Previous years' applications are at Google Summer of Code 2012 Application Questions and Mentoring Organization Application 2013.

Organization profile

ID: clojure

Name: Clojure

Description: Clojure is a dynamic programming language that targets the Java Virtual Machine (JVM), JavaScript, and Microsoft's .NET framework.  It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.  Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

Clojure, as a GSoC mentoring organization, includes projects from all parts of the Clojure ecosystem, from IDE tooling to logic programming libraries.

Tags: Clojure, Lisp, Functional Programming, ClojureScript

Main License: Eclipse Public License

Ideas list:

Mailing list:

Organization website:

IRC Channel: #clojure on freenode

Feed URL:

Google+ URL:

Twitter URL:

Blog page:

Facebook URL:

Veteran organization? Yes



If you chose "veteran" in the organization profile dropdown, please summarize your involvement and the successes and challenges of your participation. Please also list your pass/fail rate for each year.


We have participated the past three years as a GSoC mentoring organisation.  In 2012 and 2014 all of our students passed, and in 2013 6 of 7 students passed.

We are most proud of the several students who have continued their GSoC work and have taken up leadership roles within the community.  For example, Ambrose Bonnaire-Sergeant (2012, 2013) successfully raised over $35,000 to continue his work on Typed Clojure, part of which went to help Nicola Mometto (2013, 2014) continue his Clojure in Clojure work.  Nicola's work has also been sponsored by Cognitect.  Alexander Yakushev (2012–2014) has taken the lead in the Clojure/Android community and has significantly helped increase the adoption of Clojure on Android.  Reid McKenzie (2014) maintains a Clojure community documentation site, Grimoire.

Despite our successes from the past three years, there is still plenty of room for improvement.  We need to do a better job of keeping the community updated on students' progress.  As the organisation grows, we need to develop ways scale our participation and to improve communication between administrators, mentors, and students.  We have a couple of GSoC-related mailing lists, a blog, and a twitter account, all of which have helped. However, we need to make sure we are making adequate use of them.  Last year we had several administrators and delegating duties between them seemed to help.  This year we need to improve that by recruiting more administrators, and perhaps even having specialised duties for each one.  As ever, we will work on recruiting more people to be involved as administrators and mentors.

Why is your organization applying to participate in Google Summer of Code 2015? What do you hope to gain by participating?

Review; update numbers

The Clojure community has been growing at a healthy rate since the initial language announcement in 2007.  The Clojure mailing list now has nearly 10,000 subscribers, the Freenode IRC channel sees greater than 400 participants, and there were numerous conferences last year dedicated to Clojure or that featured Clojure.  At these conferences, many if not most participants are first-time attendees and Clojure beginners.  All of this activity means many open source projects within the community need help, including porting Clojure to new platforms, improving mobile and web development, and making Clojure tools easier to use.  GSoC has been very beneficial for the Clojure community, and we hope to continue our success from years past.

By participating we hope to accomplish several things:  Of foremost importance, students get an opportunity to contribute to projects that would require far more sophistication in programming languages with more complex semantics than a Lisp—for example constraint logic programming over finite domains or improving the minimalistic ClojureScript compiler to produce optimal JavaScript code.  We believe this kind of knowledge is incredibly useful outside the context of the Clojure language or community in particular.  Taking on a proposal also gives students the critical opportunity to own a highly visible project and become a community leader.  The Clojure community largely consists of practitioners, so many projects of moderate difficultly with significant community benefits do not get addressed simply for lack of time.  We are a grassroots organization, not an academic institution, and we don't have the infrastructure in place to encourage community members to set aside two to three focused months to work on useful projects.  As such, GSoC provides us with an excellent opportunity to benefit and grow our community.

Certainly not least of all, we have had many of our past GSoC students go on to lead projects within the community and help grow the community.

How many potential mentors do you have for this year's program? What criteria did you use to select them?

Need an estimate on number of mentors

We select mentors based on their prior participation in the Clojure community.  A mentor for a given student project will usually be a lead developer for an existing open source project related to the student's project.  This will help ensure the mentor has both an interest in success of the GSoC project as well as the necessary expertise to be an effective mentor.

Our mentors are generally leaders within Clojure community who have been involved in the development of the programming language more than three years. These community leaders have shown a dedication and level of involvement that is simple to verify.  Additionally, many of our mentors are repeat mentors or former students, and, as such, have shown that they are committed to participating in GSoC.

As for numbers, it's hard to tell this early on in the process how many will be available.  We have a core of about a half-dozen mentors who have participated previously and have expressed interest in participating again.  If we are selected as a mentoring organization, usually more potential mentors show up as they begin engaging with potential students.

What is your plan for dealing with disappearing students?

It is most critical to prevent such a scenario entirely.  We attempt to accomplish this through careful selection of the proposal, mentor, and student.  A proposal of proper scope, a dedicated mentor, and a student with a visible history of seeing projects to their end is critical to success.  Also critical is observing their involvement in the community prior to the student's selection.  We prefer students who have already started developing a working relationship with their mentor and interacting with the community.  Finally, a proper interview is probably required in order to find out whether the mentor/student pairing is ideal and whether the student will be free of time conflicts during the GSoC time period to see their project to completion.

What is your plan for dealing with disappearing mentors?

Ideally, all projects will have at least one backup mentor.  Even so, mentors are selected from the community precisely for their history of involvement in the community and the issues surrounding proposal.

What steps will you take to encourage students to interact with your project's community before and during the program?

We will be clear that community involvement prior to selection will be a strong factor for being considered for a proposal.  Our experience in previous years has taught us that those students with the strongest community/mentor involvement before the program performed the best.  We believe that open source contribution is not solely a summer time affair.  Students should be talking with mentors from the start in order to develop the adequate understanding and material required to tackle the proposal.  This may include, but is not limited to, showing familiarity with an API, submitting patches, and reading papers and discussing them with mentors.  We believe that a well considered proposal/mentor/student combination reinforces student engagement during the GSoC period.

We will strongly encourage students to provide updates to the community at large about the work they are doing on a biweekly basis.  To increase the effectiveness of this, we will make it easy for the community to be able to follow our students' progress.  In previous years, a number of students were interviewed in community electronic publications, and we would like to encourage that once more.

What will you do to encourage your accepted students to stick with the project after Google Summer of Code?

Most of the proposal are significant enough that students should feel a sense of ownership about their accomplishment.  At the same time, the proposals are important enough to the Clojure community that members can provide support once the intensive GSoC period is done and the student must focus more time on academic responsibilities.  We will encourage students to submit talks about their work to community conferences, and we will take the opportunity to use GSoC's travel stipend to get our students to conferences.  All in all, we feel like we have done a good job of keeping our students engaged with the community after their project has completed.

Are you an established or larger organization who would like to vouch for a new organization applying this year?  If so, please list their name(s) here. Optional

 No answer.

Is there anything else we should know or you'd like to tell us that doesn't fit anywhere else on the application? Optional

No answer.