Google Highly Open Participation Contest

The Google Highly Open Participation Contest for junior high and high school students is well under way, and the response from around the world has been phenomenal.

Expanding on the idea of the Google Summer of Code program, Google has developed a new contest aimed at encouraging pre-university students to participate in open source projects. The goal is to introduce these students to open source in general, and help them become directly involved in one of several specific, participating projects. While the contest concludes on February 4, 2008, some of the contestants might decide to stick around after the contest and continue to contribute. Based on the contributions I have seen so far, I hope they do.

Contest Background

Ten different open source projects have been asked to participate in the contest this year: The Apache Software Foundation, Drupal, GNOME, Joomla!, MoinMoin, Mono, Moodle, Plone, the Python Software Foundation (PSF), and SilverStripe. Each project is responsible for developing tasks that the contestants can complete, and mentors to advise and monitor the progress.

The contestants are trying to complete as many separate tasks as possible over the course of the contest. Therefore, the tasks are all relatively short, designed to be completed in days, rather than weeks. This also allows the mentors to give more timely feedback. The tasks cover all of the areas of an open source project, including coding, documentation, outreach, testing, research, training, translation, and user interface research and design.

Each contestant selects one task at a time to work on. As they are working on the task, they are free to ask questions or use any resources available to them to do the work. One of the key roles of the mentors is to answer questions if the contestant is stuck on a problem. Once the task is done, the contestant submits their finished work for review by a mentor. When it is approved, they are free to move on and claim their next task.

For every three tasks completed, the contestant is awarded $100 US (up to $500 US for completing 15 tasks). Ten grand prize winners will also receive a trip to Google’s headquarters in Mountain View, California. The selection of the grand prize winner is left up to each project, but the intent is to reward a contestant who selects more difficult tasks, does work beyond the scope of the original task, or is outstanding in some other way.

PSF Involvement

The PSF was selected by Google to participate in the contest because of its previous work with the Summer of Code (SoC) contest. Titus Brown was an administrator for the SoC, and is leading the mentoring team for GHOP. Titus invited me, as well as community members Georg Brandl, Grig Gheorghiu, Christian Heimes, André Roberge (among others) to be mentors. Tasks have also been contributed by Brett Cannon, Collin Winter, Michal Kwiatkowski, Greg Wilson, Terry Peppers, Shannon Behrens, Michael Carter, Phil Hassey, and Michael Mol, and several of them have also taken on more mentoring work as a result of their participation. The list of mentors and contributors is changing rapidly as more people become involved, so please accept my apologies if I have left your name out.

All of the work on PSF tasks is being organized through the Google Code site and the #ghop-python IRC channel on irc.freenode.net. Contestants claim tasks from the issue tracker, and are given a deadline to complete the work. Questions and feedback are communicated via a public Google Group mailing list as they work through their projects.

Response from Students

Overall participation numbers vary, but at last count there were somewhere around 375 contestants for all 10 projects. Paweł Sołyga has been collecting statistics for the contest, and prepared the figures you see here. Figure 1 shows the task progress as of 13 December. From the 812 tasks defined for all projects, 238 are already completed, another 295 are in progress, and 279 remain to be claimed. Figure 2 shows the distribution of those tasks across the various projects.

task progress report

Task Progress as of 13 December

task distribution report

The distribution of tasks across projects.

The response for the PSF’s tasks has been nothing short of amazing, and we’re only a few weeks into the contest as I write this. While Figure 3 shows that Joomla! has attracted more contestants, Figure 4 shows that the students participating in the PSF project are completing more tasks. Is that another example of the power of Python?

graph showing Joomla contributors

Joomla! has attracted more contestants.

graph showing PSF tasks completed

PSF contestants completed more tasks.

We started out with 65 tasks, and they were all claimed within the first week. We added 100 more, and many of those have been snapped up already, too. We hope to add a new batch of open tasks each Friday, because as the holidays approach and school terms are ending, we are seeing more students sign up to participate. There has been a steady flow of messages on the mailing lists set up for advising contestants, but most of the traffic has been requests for us to hurry up and review their completed work so they can keep going. These kids are talented and motivated.

Beneficiaries

The PSF tasks completed so far have benefited core Python as well as a few smaller projects. As part of the outreach and advocacy tasks, several contestants gave presentations about Python programming to their school or local user groups. The presentations completed so far have covered general Python programming, Genshi, pygame, and Django. PDFs of the slides, and in many cases pictures from the event, have been posted to the Python GHOP issue tracker. In addition to the live presentations, a few screencasts for orbited and Windmill have been completed and posted online as well.

Other outreach and documentation tasks have led to Python being the top referenced programming language on http://www.RosettaCode.org/, with updates to 17 different example pages in the RosettaCode wiki covering topics ranging from basic control structure examples to more complex subjects such as object serialization and working with XML and XPath.

Through André Roberge’s involvement in the project, several tasks have been created around Crunchy. Translations into Italian, Polish, Macedonian, Spanish, Estonian, Brazilian Portuguese, Hungarian, and German have been submitted already and an Esperanto translation is under way. That list of languages illustrates the global nature of the contest, an important aspect that Google reinforced by launching it at the Open Source Developers’ Conference in Brisbane, Australia. In addition to translation, Crunchy’s test suite has been expanded by several contestants and it has been enhanced to operate with Python 3.0. There is also a “Turtle” graphics package being developed to enable Crunchy presentations to use live drawing commands to render graphics in the browser.

Georg Brandl has been overseeing contributions to core Python documentation and unit tests. He reports 23 GHOP-related commits to the Python svn repository from 16 separate contributors. Test coverage for CGIHTTPServer, DocXMLRPCServer, SimpleHTTPServer, and SimpleXMLRPCServer has been expanded so far. Code examples have been added to the documentation for the re, datetime, xml.etree.ElementTree, xmlrpclib, wsgiref, itertools, logging, mmap, csv, pprint, traceback, and ConfigParser modules for Python 2.6. The C API Reference material has been expanded in several areas, too, and there has been quite a bit of work on the documentation in the Python 3.0 branch.

Will Guaraldi has mentored students working on several PyBlosxom tasks. Most of the completed tasks are related to testing various plugins and documentation. They have led to updates for the pygallery, contact, filter, autoping, and latest plugins so far. There are still a few open tasks for creating caching plugins and a reStructuredText formatter. And I’m sure when those tasks are gone, the PyBlosxom team will come up with some others.

Competing

Students interested in participating as a contestant should visit the GHOP main page to review the rules, and then dive in and find tasks of interest on the various project lists. As I have described, there are tasks available at all levels of difficulty and in many different areas of interest. There are enough options that everyone should be able to find some way to join as a contestant.

Open Tasks

I listed a lot of the work that has already been done, but what’s left for contestants to work on? There are still several outreach tasks for giving presentations to technical, as well as non-technical, groups. Paul McGuire has contributed tasks for working on PyParsing. There are tasks related to social networking applications. Mark Dufour has a few open tasks related to Shed Skin. Several of the tasks ask the students to test core Python modules or create examples for the documentation. There are performance testing tasks, and complex programming tasks such as implementing a ropes data structure or a cyclomatic complexity analyzer. There have been requests to extend the functionality of Crunchy and trac by creating new plugins as well. Titus has even defined a few meta-tasks for the students to come up with tasks for other contestants. If you want to participate in GHOP, and can’t find a task you’re interested in from the the PSF list, it’s not because we aren’t trying.

Other Ways to Participate

Only pre-college students 13 and up can compete, but there are other ways for the rest of us to participate. The contestants have been burning through the tasks at a much faster pace than we anticipated. Part of that was no doubt due to our underestimating their abilities, and starting out with relatively simple tasks. As a result, we need task suggestions from the community (this is an open source project, after all). We want to keep a few “introductory” tasks on the list, but we do want to have more challenging work for those advanced participants. If you have ideas for Python-related tasks, check out the guidelines on the ghop-python page to find instructions for submitting them. We need your participation!

Another way to contribute would be to sign on as a mentor. Many of even the most talented contestants are new to open source in general, and most probably won’t have experience with the participating projects. They’re going to need help from experienced, patient advisers to solve the tasks set before them. If you have the time and inclination, join the ghop-python Google group and watch for questions you can answer. Also keep an eye out for them on comp.lang.python or other forums where they may be going for assistance.

Conclusion

For my own part, I’ve found working on this project very rewarding. I’ve gained a greater appreciation for the contributions the other mentors have made to our community, and it has been exciting to observe the students learning to join that community as they complete their tasks. I have had several good conversations through IRC with contestants as we worked out issues they were having and refined their submissions. It has also been inspiring to see how students from all over the world take up the challenge of spreading knowledge of, and contributing to, open source. Their energy and enthusiasm is refreshing, and I’m looking forward to watching how the rest of the contest unfolds over the next couple of months. It sounds a little trite, but these kids are the next generation of developers. This is an excellent opportunity for us to introduce them to open source and pass on the traditions of cooperation and teamwork that form the basis of the thriving community we have today.