GSoC: Tips and tricks
Google Summer of Code (GSoC) is a program for university students all over the world. Not going to go into the details describing what it is. All this info is available on Google’s website. Instead, I’d like to share some things that I learned over the three years1 I participated as a student and one as a mentor. Over the course of these years, I learned some things that might be worth sharing with other students who are interested in applying, organizations and mentors.
Consider avoiding very popular organizations.
Sure, working for organizations like Mozilla, GitHub, or Wikimedia sounds sexy, but getting accepted there is also significantly more difficult2. Some of the organizations I worked with get a surprisingly low amount of good quality applications.
When I was a mentor at MetaBrainz we had plenty of slots to fill with students, but no good competition for them. Chances are that if you applied and had a basic knowledge of a project with a decent proposal, we’d had no choice but to accept you.
Contact organizations early.
For organizations, choosing a student can be a difficult task. You can make that task easier for them by getting involved even before the program officially begins for students.
The first impression is important though. Do a bit of research before talking to people on IRC, mailing list, or whichever another medium they use. If you are interested in a specific project, try to set up a development environment and start contributing. An organization will probably have a bug tracker of some kind, where you can find an easy to fix bug to get yourself into the development process.
Don’t be afraid to ask questions if you want! Just make sure to try and answer them yourself first3.
Try to contribute before applying.
Find projects that you are interested in and start getting involved in the development process. Some projects might be difficult to contribute to due to their complexity, but you should at least try.
The bare minimum is setting up your development environment. If you haven’t done that before or during your application, then the project might not be for you. It’s fine to ask questions if you get stuck and need help. Some projects are not very actively maintained and might have issues in the setup process. Uncovering these issues by going through existing instructions and testing a piece of software on your platform would already be a good contribution to start with.
Quality of applications is more important than quantity.
GSoC application process is not gambling. You don’t get a higher chance of getting in by submitting as many proposals as you can. You get a higher chance by spending time creating a good proposal and being close to an organization that you like.
Make sure that your project is carefully planned. Most of the time it’s better to give yourself more time to account for unexpected problems, bug fixing, testing, feedback, and other time-consuming tasks. If it’s appropriate and you want to spend some time, it might be a good idea to do some prototyping to accompany your proposal.
Require regular reports.
I found that it’s a good idea to keep your community in the loop in terms of what students are doing. That way students keep themselves in check and you can make sure that their work is still on schedule. And if it’s not on schedule, whether there’s a good reason for it. They might need additional help with something they are stuck on, or things just take longer than expected (which is normal for most kinds of project that require planning).
Do your best to make sure that student is not doing throwaway work
While it’s nice for the student to participate in the program and get paid for it, it’s much more rewarding for people to see their work be useful to others4. Another reason is that for most students GSoC work is a sort of internship, so it’s better to spend your time doing something you are proud of, something that will be good for your career.
My very first project got abandoned after I finished working on it. While it was nice to get some practice, it would’ve been better if that project got further attention and use. A good way to solve it is to not put ideas that organization isn’t interested in.
Respond to students who are interested in working with you.
This advice might vary depending on the number of applications that organization receives. Based on my experience some organizations don’t respond to students’ questions or respond way too late in the application process so a student doesn’t have enough time to produce a good proposal.
I encountered this a couple of times. One time I contacted the organization about an idea I was interested in. That organization responded to my initial questions and said that this idea was still relevant. I proceeded to build a prototype to make my proposal stand out among any other might be submitted. The prototype that I build became a good addition to the proposal and was helpful in conveying my idea. After all that effort I didn’t get any response at all from that organization. This was quite disappointing. Proposal creation practice would’ve been much nicer if there was any kind of feedback.
- Google has lowered the number of times you can participate as a student over time. When I was participating there was no such limit. ↩︎
- This is especially relevant if you don’t have a lot of experience and/or are new to open source development. ↩︎
- This article has plenty of great suggestions for asking questions on the internet: http://www.catb.org/~esr/faqs/smart-questions.html. ↩︎
- This was certainly the case for me. While I like to work on my own projects for fun, it’s definitely more satisfying to know that your work is useful to someone. ↩︎