Tales of software craftsmanship

Tales of software craftsmanship

How to write a kick-ass proposal for Google Summer of Code

In a few weeks students can begin submitting their applications for Google Summer of Code 2015.

KDE has been accepted as a mentoring organization again this year, and I’ve already been contacted by several students looking to do a Google Summer of Code project with KDE. Prospective Summer of Code students usually have lots of enthusiasm, and they often write great proposals with little or no help, but sometimes these proposals might not be structured well or lack key information.

I’ve seen my share of good and bad proposals. I’ve been a Google Summer of Code student with KDE three times (four if you count Summer of KDE) so I’ve been in the very situation prospective Summer of Code students find themselves right now. I’ve also been on the other side of the fence: I have been a Google Summer of Code and Google Code-In mentor (and organization administrator) and I’m a professional software engineering instructor (since 2008), so I like to think I can relate with both students and mentors in this case.

This post is for students who wish to take part in Google Summer of Code.

Google Summer of Code is a kind of like a scholarship program, and a very competitive one: if you get picked, you’re one of just a thousand students in the world (1307 last year, 40 of those with KDE) who get to spend their summer hacking on open source software while learning from the very best software craftsmen, and get paid for it too. In order to achieve that, you need to submit an application to Google. An application is essentially a bunch of information you enter in a form, the most important part of it is your proposal.

A Google Summer of Code proposal is a document, it can be rich text but it’s best to consider it plain text because the web application that handles proposal only has basic formatting features.

The KDE community maintains a wiki page specifically targeted at Summer of Code students with very useful information on how to get started. Read it. Really, read it, please. Yes, all of it. Done? Great! Assuming you’ve gone through points 1-3 of the Recommended steps list, it’s time to prepare your proposal.

Writing a good proposal is not easy, especially if you’re a student making first contact with an organization, in this case your proposal is your best advertisement. You have to convince the organization (or at least some key people inside it) why you of all people are the right person for the job. What follows applies to KDE, but it should work for other organizations as well.

I used to structure my proposals the following way (worked well 3 times). This is not a hard rule. You can structure your proposal otherwise, but I think this is a good guideline if you need some inspiration:

  1. Introduction. Your software project should solve a clearly defined problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. This is somewhat like an elevator pitch.
  2. Project goals. This section should again be short and to the point, and it might be a good idea to format it like a list. You should propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the three months of the Google Summer of Code season is what counts. At this point you are making a commitment.
  3. Implementation. This section can be longer and more detailed. You should describe what you plan to do as a solution for the problem you defined earlier. You don’t need to provide a lot of technical details, but you do need to show that you understand the technology and illustrate key technical elements of your proposed solution in reasonable detail.
  4. Timeline. This section is easily overlooked, yet it’s arguably more important than the previous section. With the timeline you show that you understand the problem, that you have thought hard about a solution, and that you have also broken the solution down into manageable bits. If your timeline is reasonable and its deadlines achievable, you show that you have an actual plan on how to go from idea to delivery. With this section you set expectations, so do not make promises you can’t keep. A modest, realistic and detailed timeline is much better than a timeline that promises to move mountains. Mentors are often among the top professionals in their field, and they can easily spot unrealistic timelines.
  5. About me. If you’re done with the other sections this will be a piece of cake. Just put down your contact information and write a few sentences about you and why you think you’re the best for this job. It’s ok to brag a little.

Overall, submit your proposal early, keep it short but include all the necessary information. Get it reviewed by the right people in the organization, well before submitting it to the Google Summer of Code web application. As far as KDE is concerned, you should submit your proposal to the developers mailing list of the relevant subproject as published on the ideas page. I can’t stress this enough: get feedback. Organizations want good proposals and good students, and are usually eager to help you improve your proposal. Just write a brief and informal email, attach your proposal and ask for feedback.

I hope this advice proves useful. We have also gathered some accepted proposals from past years, you might find them useful as inspiration.

You can submit more than one proposal to the same organization or different organizations to increase your chances, but my advice is to not overdo it: quality is better than quantity.

Good luck!

Code all the summer


  • Reply Inge Wallin |

    I cannot stress enough the strength of the mentors. You will get access to people for *months* for whom other people pay €300 – 400 *a day* for to get training from. Many core KDE people actually teach training courses and this is the official price for them.

    • Reply isemenov |

      Well, I believe they do corporate training and nobody hires them for private 1-to-1 training? So you still have to divide that value by the number of students.

      And yeah, I do agree it’s really cool to be able to talk to and get consulted by the professional Qt coaches absolutely for free when working on KDE, e.g. via IRC. I always thank Chtulhu (:P) for the fact that I can ping dfaure any time I need him and he will provide valuable advice and fix kdelibs with me and for me (ok, for my project, to be correct.)

      Still.. I have this kind of personal ethical problem, related to open source and getting paid for it. If I am sponsored, and am an intern, and ask a dev that knows more than I do to help me, and that dev does some fix for me or does a major part of it, and is *not* paid at all – I’m like abusing him here? Not fair right? Well this is why I really like to consult professional Qt/KDE devs on complex issues – I always know we’re both rewarded for doing it, nothing unfair here. What do you think? Sorry for hijacking it a bit but the topic is so close, couldn’t resist asking.

      • Reply Teo |

        Personally I wouldn’t feel abused as far as GSoC is concerned. In the long run, it’s for the good of a project I deeply care about. Sure I’d like to get paid to hack and to mentor, but that’s not what’s being offered by Google in this instance, it’s moot. Google offers some money for the project and some more for the student. In exchange, the student will write some code and the project has a shot at getting a new contributor. The only thing I have to do is set aside a few minutes a day to give a helping hand, minutes I’d spend hacking for free anyway – sounds like pretty much win-win to me. This way the student does some hacking (which some other contributor would have to do for free otherwise), more code is written and my workload-for-free isn’t any heavier. Also, as a rule I would help a student with suggestions and the occasional debugging, but not by writing major parts of *his* work i.e. work he promised to do – that’s the deal and I find it quite fair.

      • Reply Inge Wallin |

        You should definitely *not* feel as if you’re abusing him or her. If they do it as part of their job, they are being paid to do it and if not, well even professionals are allowed to have a hobby, no? I am both a professional developer and have taught teaching courses before, and I love to teach what I know. Helping new people getting up to speed in my favourite project is a joy, at least if the “student” is picking up what I say. :)

  • Reply isemenov |

    Well I was actually talking about general open source development, not only gsoc, because people are sometimes sponsored to hack on open source projects :) But yeah, I see your point there – the ratio between the amount of work for you, volunteering, and for the paid guy.

  • Reply aishraj |

    An excellent guide. Thanks Teo.
    I’ve my eyes set on a couple of KDE projects of this year’s GSoC. Hoping to make it. :)

Post a comment