What is Google Summer of Code?

Google Summer of Code (GSoC) is a program that offers college and university student developers stipends to write open source code. Each year Google works with many open source, free software and technology-related groups to identify and fund proposals for student open source projects.

GSoC pairs accepted student applicants with mentors from the participating projects.  Accepted students  gain exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits. In turn, the participating organizations are able to more easily identify and bring in new developers. Best of all, more source code is created and released for the use and benefit of all; all code produced as part of the program is released under an Open Source Initiative approved license.

The program has brought together thousands of students and mentors from nearly 100 countries worldwide. At the time of writing, over 200 open source projects from areas as diverse as operating systems and community services have participated as mentoring organizations for the program. Successful students have widely reported that their participation in GSoC made them more attractive to potential employers and that the program has helped greatly when embarking on their technical careers.

Goals of the Program

The program has several goals:

  • Get more open source code written and released for the benefit of all
  • Inspire young developers to begin participating in open source development
  • Help open source projects identify and bring in new developers
  • Provide students the opportunity to do work related to their academic pursuits during the summer: "flip bits, not burgers".
  • Give students more exposure to real-world software development scenarios (e.g., distributed development and version control, software licensing issues and mailing list etiquette).

A Brief History of Google Summer of Code

Google Summer of Code began in 2005 as a complex experiment with a simple goal: helping students find work related to their academic pursuits during their school holidays. The first year, 40 projects participated and 400 students began the experiment. In 2009, the fifth Google Summer of Code wrapped up to the best results yet. More than 85% of the 1,000 student participants in the program successfully completed their projects. Best of all, most of the organizations participating over the past five years reported that the program helped them find new community members and active committers.

If you are interested in a more extensive history of the program, please see the appendix.

Participant Roles

There are four roles in the Google Summer of Code program:

Program Administrator: Program administrators are employees of Google's Open Source Programs Office who run the program. These folks do a variety of tasks: select the participating open source projects each year, create and analyze the program evaluations, administer the program mailing lists, ensure that participants are paid and send out the all important program t-shirt. Program administrators do not select which student proposals are accepted into Google Summer of Code.

More broadly, program administrators can provide useful advice to both new and seasoned participants in a variety of areas due to their experience with the program and mentoring process. Not sure how to handle a disappearing student? Don't know which mailing list has the latest information on payments? Wondering how to best improve your organization's application for the program? Find a program administrator and ask away!

Organization Administrator: Org admins are the cat herders for an open source project involved in GSoC. These people submit the organization's application to participate in the program to Google, ensure that mentors fill out evaluations in a timely fashion and generally organize their project's participation in GSoC. Org admin acts as Google's go-to person in the event any issues arise. There are also some trivial administrative tasks in the online system for GSoC that can only be completed by organization administrators, all of which are enumerated in the system documentation. Some org admins also mentor students during GSoC, and that's perfectly fine; it is just highly recommended that folks know they have enough time to execute both roles simultaneously.

Org admins are the final authority about matters such as which student projects will be accepted, who will mentor whom. On the social side, should a mentor and student have difficulties communicating or making progress, an org admin will often step in as a neutral party to help the two work together more effectively. Org admins also help track down disappearing participants, whether mentors or students.

Mentor: Mentors are those people from the community who volunteer to work with a student. Mentors provide guidance such as pointers to useful documentation, code reviews, etc. In addition to providing students with feedback and pointers, a mentor acts as an ambassador to help student contributors integrate into their project's community. Some organizations choose to assign more than one mentor to each of their students. Many members of the community provide guidance to their project's GSoC students without mentoring in an "official" capacity, much as they would answer anyone's questions on the project mailing list or IRC channel.

Student: A student participant in GSoC is typically a college or university student, though the only academic requirement is that the accepted applicants be enrolled in an accredited academic institution. Students must also be at least 18 years of age in order to participate. Students come from a variety of academic backgrounds, and though most students are enrolled in a Computer Science program there is no requirement that they be studying CS or IT; past student participants in GSoC have come from disciplines as varied as Ecology, Medicine and Music.

Students submit project proposals to the various organizations participating in GSoC. The organizations select which student proposals they would like to see funded by Google. Successful student participants have often gone on to become committers to the organization they worked with in GSoC. Many students have also gone on to become mentors and even org admins for the program.

Program Structure

All of the program rules are enumerated in the GSoC FAQs each year. Provided all of the rules regarding eligibility for the program are followed, Google takes a fairly hands off approach to GSoC. Each organization will structure their participation in GSoC in whichever way makes the most sense for their technical and community needs.

Organization Applications: The GSoC program is announced each year on the Official Google Blog http://googleblog.blogspot.com among other places. Once the program is announced, open source projects know when they can submit applications. Each organization is expected to apply to participate. The questions asked in the organization application are published in advance and linked from the Program FAQ. Organizations usually have one week to apply for the program. Following receipt of applications, Google's program administrators will select which organizations will participate in that year's Google Summer of Code.

Student Applications: Students are encouraged to begin talking to the participating organizations as soon the list of accepted organizations is published. Prior to the opening of applications, taking some time to talk to would-be student applicants helps them refine their ideas so that mentoring organizations will have better quality proposals to sift through. Each organization is asked to provide a proposal template, but the best student applications go far beyond the template and an organization's ideas list. Students are given at least a week to complete their application.

Following the student application deadline, organizations begin reviewing the proposals they received. During the review phase, organizations maintain an open dialogue with their student applicants, asking them to refine their proposals or doing further additional interviewing to determine which students are most likely to be a good fit for the community and the work required. Over the course of several weeks, each organization whittles down their list of proposals to those they would most like to see funded. Google lets each organization know how many of its student proposals they will fund, and organizations select their top N proposals.

It is sometimes the case that a single student's proposals fall within the top N for more than one organization. Google leaves it to the organizations and the student to decide which organization the student will work with during the course of the program. Typically, this duplicate accepted state is resolved by discussions between the organization administrators and the student.  Technically the organizations are not required to involve the student in the decision process, but it is good practice to take their preferences into account. Following any such resolutions, the list of students who are to be accepted is considered final and is then published.

The Community Bonding Period: Before students are expected to start working on their projects, there is a period of 6-8 weeks built into the program to allow them to get up to speed without the pressure to execute on their project proposals. During this time students are expected to get to know their project communities: join in IRC, introduce themselves on the mailing lists, etc. This time is also when students should begin setting up their development environments, understand how their project's source control works, refine their project plans, read up on any necessary documentation and otherwise prepare to complete their project proposals. Mentors should spend this time helping their students understand which resources will be most useful to them, introducing them to the members of the community who will be most helpful with their projects and generally acculturating them.

Start of Coding: Start of coding is the date when the program officially begins and students are expected to start executing on their project proposals. At start of coding Google provides an initial payment to the student, just over 10% of the overall stipend. At this point, students should begin regular check-ins and regular patch submissions.

Midterm Evaluations: Approximately half way through the program, Google requires that mentors submit evaluations of their students progress. Should the project not be proceeding effectively it does not continue: and the student is dropped from the program. Students who receive a successful evaluation from their mentors continue working on their projects and receive a second program payment, approximately 45% of the overall stipend. Google also asks students to submit an evaluation reviewing their project to date, their mentor and organization's performance and any obstacles to their progress. Google may also ask org admins and mentors without students assigned to submit a general evaluation about the program during this phase.

As software development is an iterative process, it is quite common that the original project plan will need to be reworked and new milestones set. Following evaluations, Google will help the organizations and their students make any necessary course corrections. Directly following midterm evaluations is the perfect time for mentors and students to have a formal check-in regarding progress to date and to reset goals for the project as needed.

Pencils Down: At the final deadline for coding, students are welcome and encouraged to continue working on their projects, but their work will only be evaluated based on work done before the pencils down date. Google suggests that work be done about a week earlier to give the student time for last minute improvements and corrections, as well as preparing their work for delivery.

Final Evaluations: Final evaluations should be based only on work the student has completed during the program. Should the project goals not have been met to the satisfaction of the mentor, the student is dropped from the program and does not receive anything further from Google. As with midterm evaluations, students are asked to submit an evaluation of their overall success. Google will ask all participants from each organization to submit an evaluation of the overall success of GSoC.

Post Final Evaluations: Students who successfully complete their final evaluations are asked to submit a code sample to Google. These students then receive the final program stipend payment, a certificate of completion and a truly spiffy t-shirt. All program mentors and org admins also receive a t-shirt.

It's a goal of Google Summer of Code that the student participants stick around long after the program has ended and continue contributing to their project communities. Great mentors continue working with their students to encourage them to do so. It's also customary during this time for organizations to publish a post-GSoC wrap up report letting the whole world know how their participation in the program fared. Everyone, both mentors and students, take a well deserved break, but truly energetic organizations begin planning for the next GSoC during this time.