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

Main License: Eclipse Public License

Logo URL: http://www.deepbluelambda.org/images/Clojure-logo.png

Ideas list: http://dev.clojure.org/display/community/Project+Ideas

Mailing list: http://groups.google.com/group/clojure

Organization website: http://dev.clojure.org/display/community/Google+Summer+of+Code+2014

IRC Channel: #clojure on freenode

Feed URL:

Google+ URL:

Twitter URL:

Blog page:

Facebook URL:

Veteran organization? Yes

Questionnaire

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

 The Clojure community has been growing at a healthy rate since the initial language announcement in 2007.  The Clojure mailing list now has nearly 9000 subscribers, the Freenode IRC channel sees greater than 400 participants, and there were three conferences scheduled last year dedicated to Clojure.  At these conferences, the question is no longer ‘Do you get to use Clojure at work?’ or ‘Are you using Clojure in production?’, but 'How are you using Clojure in production?'.  All of this activity means many open source projects within the community need help, including porting Clojure to new platforms and improving mobile and web development.  Given the interest from students and mentors on the mailing list has encouraged us to apply again for GSoC.

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.

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

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.

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.

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.

No answer.

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 two years as a GSoC mentoring organisation.  In 2012 all four 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) continue his Clojure in Clojure work.  Nicola's work has also been sponsored by Cognitect.  Alexander Yakushev (2012, 2013) has taken the lead in the Clojure/Android community and has significantly helped increase the adoption of Clojure on Android.

Despite our successes from the past two years, there is still plenty of room for improvement.  We did a better job last year on keeping the community updated on students' progress, and we will need to continue improving on that.  We will also need to figure out ways to improve communication between administrators and mentors.  We set up a mailing list last year, and that helped.  We will also be trying to get more people involved in the program both as mentors and as administrators.  We think that by delegating duties and improving communication, it will be easier avoid the situation where a single person that gets too busy with duties outside of GSoC causes a lot of problems for others.