"Participation [in Summer of Code] also encourages teamwork. These new developers must be collectively trained on the project's preferences with respect to languages, coding practices, patterns, and other conventions throughout the duration of the program...In the end, you're making a long-term investment into the future of your project and hopefully encouraging students to remain involved as new core developers."
Computer Science seems to no longer hold sway as the career of choice among North American undergraduates. A variety of reasons for the steady decline of enrollment--down 60% in the United States since 1999--have been explored. These include economic factors such as concerns about job security and the accompanying increase in off-shoring of information technology roles. Further, studies have noted that Computer Science as a whole simply doesn't look like much fun to today's incoming student populations. There's a general perception that Computer Science means spending one's day chained to a keyboard and monitor, scraping by as a "code monkey". In particular, students cite a lack of a social element as a major deterrent to pursuing a career in Computer Science.
In this article, we examine the Google Summer of Code (GSoC) program, the world's first global initiative to introduce College and University students to free/libre open source software (F/LOSS) development. Over the past four years, the program has provided a model that allows College and University students to more deeply engage with the joys of computing. The experience of our participants stands in sharp contrast to the generalizations mentioned earlier. We will discuss the origins and evolutions of the program, as well as its structure. We will also discuss how students benefit by participating in GSoC, focusing on some select success stories. Finally, we discuss how Google views this investment in the F/LOSS community and its potential to improve the overall progression of Computer Science as a discipline.
A Bit of History: The First Summer of Code
Early in 2005, Google faced a challenge well-known to software companies looking to expand their business offerings: planning the rapid and long-term growth of its engineering staff. The progression of software development, both as an industry and an art, requires a constant flow of new inputs and ideas to push the existing technical bounds of products and services. When searching for these fresh perspectives, Google heavily recruits from the recent graduate populations of the best software engineering schools worldwide.
Larry Page, Google's Co-Founder, had an idea that evolved into a pragmatic approach to getting more College and University students interested in the art of software engineering: coding during their school holidays. Larry noted that many students weren't able to find jobs that developed their programming skills. In turn, this dearth of employment opportunities meant that they were missing the opportunity to focus on improving their knowledge, not to mention the opportunity to spend time writing good code simply for the love of solving a particular problem.
Larry asked Chris DiBona, Open Source Programs Manager at Google Inc., for help. After some brainstorming, the idea of GSoC was born. Chris reached out to his social network with an interesting proposal, aptly titled "welcome to the experiment." Chris proposed pairing college students with mentors from F/LOSS projects and paying the students a stipend for writing F/LOSS code. Google would claim no rights to the source code created and required that it be publicly published and licensed under an Open Source Initiative Approved License. During the first GSoC in 2005, forty projects and many dedicated mentors joined Google in achieving the goal of introducing students to the world of F/LOSS development. Applications were solicited globally and 400 students were accepted into the program. Participants in the first GSoC came from 49 countries.
The experiment continued in 2006, expanding to include more than 90 F/LOSS projects, over 600 students and 1,200 mentors from 90 countries. In 2007, we were joined by participants from every continent (except, of course, Antarctica), welcoming more than 900 students and 1,500 mentors from 130 F/LOSS projects. In its fourth year, 2008, the program grew to include participants from 98 countries, more than 1,100 students, 175 F/LOSS projects and 2,500 mentors.
Making Time for the Social Side of Software
In 2007, we made a change to the timeline of the program to improve the learning experience of our students. We added approximately six weeks at the beginning of the program for students to learn more about the online community they had just joined. This Community Bonding Period has been very well received. Many newly accepted GSoC students use this time to learn more about the fundamental tools of software engineering such as: i) using version control systems; ii) submitting code for peer review; iii) working with a variety of Integrated Development Environments (IDEs); and iv) putting the finer points on their learning of a new programming language. (For more information on how Google chooses from the applicant pool, see our criteria. It's also the ideal time to subscribe to the right mailing lists and learn who are the "go-to" people in the project for questions about a particular area. The Community Bonding Period also gives the project's newcomers the opportunity to observe how the project's committer team works together. They can become familiar with the project's engineering practices. This makes them more efficient contributors more quickly.
Not surprisingly, we've found that this extra time has helped students to feel more engaged. Projects widely report that this time spent getting to "know each other" results in more students who continue to contribute to their projects over time. Many projects report that they have gained new core developers, known as committers, through participating in GSoC. One example is the FreeBSD project, which has seen more than a dozen of their GSoC students join the project as full committers. Many students choose to attend their F/LOSS project's developer conferences, often sponsored by their project's community members. Frequently they are invited as speakers presenting the results of their GSoC work, which helps their professional development. Universally, students report that these conferences are an enjoyable opportunity to both learn from expert developers and have fun hacking with their friends.
How Google Summer of Code Works
Since it has proved a useful model for encouraging contributions to F/LOSS, it's worth examining how the program works in a bit more detail. First, Google's Open Source Programs Office selects F/LOSS projects to act as mentoring organizations to would-be student participants. For more on how mentoring organizations apply to the program, see our FAQs. Each organization accepted as a mentoring organization designates one or more individuals to act as organization administrators (org admins). Org admins perform all the administrative functions necessary to keep things running smoothly, such as vetting mentor applications, collecting and publishing status reports, and providing additional guidance to students when their mentor(s) are not available. Mentors include any project member who would like to volunteer their time and which meet their organization's selection criteria, which vary across projects. It's worth noting that many community members regularly step up to provide guidance to their project's GSoC students though they do not formally mentor any particular student on a regular basis.
Once organizations have been accepted and have published a list of ideas (suggestions for development that would benefit the project), would-be student participants apply to work with the mentoring organization(s) of their choice. While many students have done excellent work on an idea proposed by their mentoring organizations, the nearly universal feedback we've received from the participating F/LOSS projects is that the best student projects are those which the students draft themselves with community guidance.
Once a student is selected to participate, she executes her proposal with the help of her assigned mentor(s) for a three month period. Mentors and students are asked to provide mid-term and final evaluations of work completed to date, and historically 5-10% of students do not pass their mid-term evaluations. The most common reasons cited for students failing their evaluations include a lack of sufficient time and focus on the project, lack of communication with their mentors and, as a result, the creation of a buggy and non-functional code base. Should a student not pass an evaluation, Google's financial sponsorship of the project ceases. Students are encouraged to continue their work on the project even if they fail an evaluation. In a few cases, great work has resulted from a student taking some time away from the program and returning to complete the project some months later.
Assuming that the student continues to make progress throughout the term of the program, she receives a 4,500 USD stipend, with payments structured to provide tiered incentives at the beginning, middle and end of the program term. Those students who successfully complete their projects also receive a program t-shirt and certificate of completion. Success is defined as completion of the project to the satisfaction of the mentor, and it is common practice for mentors to solicit feedback from their wider project community and the student when making their evaluations. Google provides guidance when asked or in cases where project goals may not have been fully met. In very rare circumstances, a student feels their evaluation did not fully reflect their accomplishments. When this happens, an engineer from Google's Open Source Programs Office performs an independent code review and the company's Program Administrators make the final call on whether the code produced meets the goals stated in a student's application. Recognizing that software development is an iterative process, Google expects that goals can change over time and that the initial project plan may differ greatly from the final work produced. What is most important from our perspective in defining success is that the student participant learns more about real world software development practice. Of course, it is all the better if the student bonds deeply with their project community and continues working with the project long after the conclusion of the program, and this does happen frequently.
At the close of the program, Google provides a 500 USD donation per student to each F/LOSS project participating in the program, regardless of the student's success or failure. Each mentoring organization decides whether these funds go directly to the mentors or are disbursed in a different fashion, such as to cover the costs of a developer conference. In most cases, mentors are not paid for their efforts and contribute their time for the reward of teaching and sharing knowledge, as well as the promise of decreasing their project's bus factor.
Select Success Stories
While we may speculate about the long-term impact of the program, there have already been substantial achievements over the past four years. Some of the greatest success stories that emerge from GSoC share the same theme: former students choose to mentor other students for the program. Each year, a few dozen former students join the ranks of our mentors; as most of them are still enrolled as students, choosing to mentor means forgoing the 4,500 stipend. They often comment that the opportunity to give back to their project's community through mentoring means more to them than financial benefit. Since there are so many wonderful stories of this kind to tell, I'll just touch on two students turned mentors living in Canada.
Angela Byron joined the Drupal project in 2005 as a GSoC student and had never contributed to a F/LOSS project before the program. Today, she's the maintainer for the next major release, Drupal 7, and sits on the Board of Directors for the Drupal Association. She's also a published author and accomplished speaker. From 2006 on, Angie acted as an organization administrator for Drupal and did much to organize her community for GSoC. She mentored GSoC student Andrew Morton in 2007 and Jimmy Berry in 2008. Andrew created a metrics system to quickly crowd source data to determine which software modules were most useful, and Jimmy created a module for performing usability tests of Drupal. Angie works from home in Montreal for a boutique software training consultancy specializing in Drupal and other open source software.
Steffen Pingel began his contributions to the Eclipse project as a GSoC student in 2006. He created software that allowed developers using Mylyn, a task-focused interface for Eclipse, to access the very popular open source issue tracking and project management software package, Trac. Since then, Steffen has given numerous talks on Mylyn at various international conferences. He returned to the program in 2008 to mentor Jingwen Ou, who added a wiki-based task entry system to Mylyn. Steffen works with his former mentor at a boutique software consultancy and lives in Vancouver.
Angie and Steffen are just two examples of students who have gone on to accomplish great things. More than half of the nearly 200 F/LOSS projects who have mentored for GSoC report that they have gained new committers through the mentoring process. Most projects report that at least one or two former students who do not continue to contribute extensively will still answer basic questions on mailing lists and contribute occasional improvements to the project's code base. Each mentoring organization has their own success stories to tell, and those interested should check the individual projects' websites for more details. Links to this year's participating projects can be found at the GSoC 2008 website.
Careers in Computing: Benefits to Students that Benefit Industry
The impact of the GSoC program in the software development world speaks volumes. Graduates from the program consistently let us know that participation in GSoC is viewed favourably when they seek employment in the industry. One mentor told me that his first interview question for new candidates for Now Public, a crowd sourced independent public media site, is "Were you a Google Summer of Code student?" While many of our student participants are still enrolled in College or University, many that complete the program report that they've accepted internships or full-time employment with major software development firms like Apple, Cisco, Hewlett-Packard, IBM, Intel, Nokia and RedHat. Many others have joined or founded boutique software design firms. Google has hired some GSoC participants, but only a handful. Less than 2% of our mentors and students have ever interviewed with the company.
Researching Technology, Developing Programmers
We're often asked about our motivations for running the GSoC program. Simply put, we want more College and University students writing code. Over the past four years of the program, 2,400 students have produced ~6 million lines of source code. That's a lot of people experimenting with technology, learning from one another, and creating new and useful things.
The greatest benefits we receive from running GSoC are the same as those that the rest of the world receives by Google's investment in the program:
- more F/LOSS code available for everyone
- better trained software developers taking positions throughout industry
- a stronger F/LOSS development eco- system
The most accurate way to characterize GSoC is as a Research and Development partnership with the F/LOSS community. Google provides infrastructure and financial incentives for engagement and the community provides the social and technical expertise. Together, they create a solid foundation in the social and technical fundamentals of the art of software design for more than two thousand of the world's future technologists. At the very least, this investment yields more available source code. At the very most, this foundation provides some of the best and brightest thinkers with the opportunity to focus their talents on solving critical problems in computing. The resulting acceleration of their own development should improve the efficiency and health of Computer Science in general, with requisite benefits resulting for Google, wider industry, and the extended F/LOSS community. We are confident that the impact of the program will be felt long into the future as more code is written and as those trained through the program continue to contribute their hard won knowledge back into the field.