Hello there, college student! Google Summer of Code (or GSoC) is one of the best things you can do during any of the summer holidays you have in college years. If you’re reading this post, I assume you are a college student who loves to code, has some experience writing programs (even small ones are fine), and wants to know more about GSoC - either about the application procedure, or how to actually get started with your journey into GSoC. Let’s begin!
First step (Important!): Go through my blog post on getting started with open source. A lot of the concepts are the same, and I will mostly not re-iterate them here.
So, what is Google Summer of Code (GSoC)?
Google Summer of Code (or GSoC) is a three-month program for students, giving them the opportunity to work on great open source projects under the guidance of an assigned mentor. It is the perfect way to get started with open source, or if you already contribute to open source projects, to move on to bigger and more complex projects.
In my case, it was the gateway to starting to contribute to open source organizations, and I’ve learnt a lot in these three months. Equally important are the people you get to know - your mentors and other members of the community. The point is: if you do not have an internship or project to do in your summers, or even if you do, GSoC is an amazing thing to give your time to.
The GSoC process and timeline
I assume you’ve went through the blog post I mentioned earlier, and know what open source is. Let’s go through the GSoC process first, and then we’ll dive into more interesting stuff.
Mid February: Organizations apply to GSoC
Different open source organizations participate in GSoC every year. Well, a lot of them participate every year, but there are some additions and deletions too. Just like us, the student applicants, organizations too, have to apply to be selected to GSoC. The list of selected mentoring organizations is released mid-to-late February. Every organization has a list of ideas, or a list of projects they want students to take up during GSoC. Most organizations are also open to new project ideas by the students.
Mid March: Student applications begin
Almost a month after the list of selected organizations are published on the GSoC website, the student applications begin. This is where the real hustle starts. We’ll talk about tackling this later. For now, I’ll just detail what the process looks like. Basically, the student has to choose a mentoring organization and a project they want to contribute to. They talk to the community, the mentors, make a couple of code contributions to show that they’re interested and willing to learn, and then write a proposal. The proposal is a simple 8-10 page document, detailing what you understand about the project, and how you’re going to tackle it. It also contains a breakdown of the three months, in terms some milestones you’re going to achieve at certain time intervals. The students apply to the orgaization and the project they are interested in on the GSoC portal with their proposal.
- End of March: Student application deadline
- Early May: Accepted students are announced
As you can see, the application period only lasts for a couple of weeks. It is mostly utilized in drafting and fine-tuning your proposal and maybe making one or two additional code contributions. So, exploring your project a couple of weeks before the application period is essential.
What you really need to do
Some people start looking for GSoC projects and organizations in December. Some in January. And some, just after last year’s GSoC ends. You don’t need to do any of that. Don’t focus on the when, but on the what. Here’s what you need to do: know which org and project you’re going to try and apply to by mid February. This isn’t as easy as it sounds. In fact, it’s the toughest part of the entire process, and probably the deciding factor as well.
I feel there are two types of organizations in GSoC:
- Web and mobile development (low initial barrier)
Most of us have worked on some mobile or web technology, and so, these are the organizations we are attracted towards. These organizations are also relatively easy to contribute to. Most of the times, there are minor bugs, or tweaks you can make to the code, or the UI, which can count as your code contributions in your proposal. But, from a GSoC perspective, these are difficult precisely because of the same reason. There are a lot of students making generic pull requests, minor contributions, and meaningless modifications, just to get their contributions in. It feels like a race, and I’m not a very big fan of that. There are two options here - either make meaningful PRs, engage in good discussions with mentors, and actually contribute to the organization, or, choose an organization of the second type.
- Esoteric organizations (high initial barrier)
I’m bundling a lot of organizations under this heading, which is probably not the right thing to do. But, for the sake of this post, and for brevity, let’s go with it. So these organizations are the ones which have some framework, some technology, or even domain-specific knowledge, which most college students are not familiar with. For example, some organizations deal with brain simulations, and require domain-specific knowledge there. Others simply use a non-familiar programming framework (like Qt or Gtk). Again, I am speaking from the perspective of college students. These frameworks are really mature and popular among more experienced developers. These organizations demand a high entry barrier - learning how to build their projects, getting familiar with the technologies used or reading up on a little domain knowledge. But this barrier acts as a filter too. You won’t find too many students attempting these projects. You’ll find less of a race here.
Note: You most probably will have to experiment with a couple of organizations before you decide the one you’re going to apply to. Yes, you can apply to multiple organizations as well, but I’m not sure if that’s a good thing to do (upto you, really). Anyway, even while trying out different organizations, stick with each one for a good amount of time. No organization is easy to contribute to. Don’t just keep zig-zagging between different organizations, never really getting to know even one properly. Remember, stick with it. Also, even though I told you not to worry about the when, January or Feburary might be a good time to start exploring different organizations.
This section is mostly for a sense of completion to this post. Feel free to skip it for now, and come back when you’re actually writing your proposal for applying to GSoC.
So, as I said earlier, a proposal is usually an 8-10 page document which details exactly how you’re going to tackle your project. Here’s the important takeaway: you don’t write your proposal by yourself. I mean, of course you have to write it, but the content, the topics, the meat of the proposal will be what you discuss with your mentors. It is, in a way, this discussion that you have to present in your proposal. Almost always, you send your mentors a draft of the proposal you write, they suggest improvements, and the process repeats a couple of times. If you do not follow this iterative process, writing a proposal can seem quite daunting - how would you know how to start dealing with your project? The code is vast and unfamiliar, and it is almost impossible to know where to start without first discussing it with your mentors.
The proposal is really important, and you want to make sure that it is perfect. Make sure it is as clear and definitive as you can make it. Include proper technical details (and maybe diagrams or screenshots) wherever required. Polish it to a high sheen.
You’ll notice I refer to “mentors” a lot throughout the post - and it may be confusing to know whom I refer to. Who are the mentors? Well, as I said before, each organization publishes a list of project ideas for students to apply to. Each of these ideas also has the contact information of the mentors for the project. Do reach out to them! You will not be able to do this on your own (and you do not have to). :)
That’s it for this post! It is really just a collection of things I did not know when starting out that I hope can help you. As always, feel free to comment or reach out if you need more help with anything. Remember, it will take effort, but it is well worth it! :D