Almanac for Clearing Google Summer of Code (GSoC)
Hey! How are you! In case you don’t know, I am Harishankar Kumar, at the time of writing (3rd October 2023), A final year student at Thapar University, here in this blog (or supposedly almanac), I will be sharing out my experience of getting into GSoC, working for it, and finally advices to my juniors or anyone looking to clear the same!
My motivation to write this
A lot of my juniors and students from different universities approached me on different platforms for advice regarding GSoC, as much as I love to help others and my passion for mentoring, my time is still insufficient, A lot of frequently asked questions, things I’d love to share with everyone, the G-S-o-C’s of Google Summer of Code goes here, so if in future anyone wants any advice regarding this, I’d just send them the blog link! (Say Cheese if you came here by the link itself, haha got you).. Without further ado, let’s start!
What is Google Summer of Code (GSoC)
The Google Summer of Code, often abbreviated to GSoC, is an international annual program in which Google awards stipends to contributors who successfully complete a free and open-source software coding project during the summer.
Wikipedia
And there you go! So, in a nutshell, it is a program where students are given good money to contribute to open-source projects, and really! This seems like quite a charity work by Google (as these organizations are not Google-owned, but just third-party), and Google acts as an intermediary and pays you to work for these organizations, In fact, I believe it is pretty charitable and noble work by google, but don’t let this simple description of Google Summer of Code to fool you! It is much more than that!!
The Dark Side of GSoC
Just kidding, there’s no dark side to GSoC. In fact, it is one of the best programs for learning and earning at the same time, Google Summer of Code is not what the description says, it is more, understanding it properly will give you an edge in getting your proposals selected and successfully completing the program, So what really is Google Summer of Code?
It is a program where open-source organizations gain fresh contributors to help them further improve their projects!
Didn’t understand? Let me make that simpler: the thing is, these open-source projects you see always constantly lack people to work on them. True open-source is charity work. You don’t usually get paid for it (and that’s why it is called contributing). No matter how big they are, these organizations and big projects always need more talented people to join the community, help them progress, and keep the project alive and there you go! Google Summer of Code is a platform where these organizations can find new blood through students. The simple formula is that Google will give money, certificates, etc., and motivate students to work on these big projects and get deeply involved with the community. After their tenure, more often than not, these students will still be part of the community, contributing as they please! So there you go! GSoC helps organizations find fresh students, and these students become part of the community after their project. I have seen students mentoring for the same organization for next year and making long-term contributions!
What Google Summer of Code IS NOT
- A way to quickly earn money – look, you must work hard. It takes motivation, dedication, and hard work to clear the summer of code. It takes resolve to put in the countless hours required to succeed in this program.
- A side project – The whole program takes a lot of time, although possible it is unadvisable to work side-by-side with your other commitments like internship, etc.
and much more, I will be skipping on this for now.
Part 1: How to Get Your Proposal Selected
The first and foremost important thing to work in the summer of code is getting your proposal selected. If you have no idea what I mean, then read below:
So what happens is, these big open source organizations usually list the kind of projects they want their contributor to work upon, well this is just for reference, someone could for example propose to work on a completely different thing, etc! So how do contributor mention the project he want to work upon? Simple, It’s using Proposals!
Potential GSoC contributors contact the mentor organizations they want to work with and write a project proposal based on ideas the organization has suggested. Once accepted, GSoC contributors spend a few weeks becoming familiar with the community norms and codebase while determining expected milestones with their mentor for the summer. GSoC contributors then spend 12+ weeks coding on their projects.
Description of proposal, taken from https://summerofcode.withgoogle.com/how-it-works
So essentially, proposals are the way to convince organizations to choose you. If they accept your proposal, congratulations! You are officially a part of GSoC and will work on the proposed project for the next few months! But getting your proposal accepted is not easy, it’s the most difficult task in this whole journey, so the further sections will be focusing on just that!
Step 1: Search for a good organization/project
The first step to this daunting journey is finding organizations/projects that match your interests or something you find interesting. Why? Because the projects listed have lots and lots of complex code, millions of lines of code in variety of languages, At first, you might even doubt your capabilities (as a Software Engineer) looking at them.
The initial journey of navigating your project of interest is the most difficult, you are completely new to the software, have no idea about its architecture, and are clueless about how things work, Well, What do you think helps the most in this? Well good programming skills in tech-stack do help, but it is useless if you are not patient enough to persist in looking at things, what gives you this patience? Yep, it’s the drive that keeps you wanting to contribute to that specific organization or project, to explain it better let me present my example:
So as part of my organization hunting, I came across this one called ScummVM, what do they do? Simple! They were building software that emulated old 20th-century games (made for obsolete hardware) work on modern platforms like Windows, Linux, Android, etc.. At first sight, I totally loved the concept due to my personal history with old-age games, Let me explain! So when I was like 14-15 years old, there was this RPG game that I loved to play on my Windows phone, that game was a sweet and pleasant memory to me, and thinking about it still gives me nostalgia, but as much as I would love to play it, I cannot, due to unavailability of windows phone now, and no methods to port the game. When I saw this organization, my interest was suddenly piqued, and I joined their discord server out of curiosity. things happened (later in post) and I started contributing, now the code for ScummVM was very complex, like VERY, they literally built virtual machines that has rendering, music player, game files parser, to even compilers for game-specific languages, my initial days to even implement simplest of features or fixing bugs were full of hardships, I looked at screen for hours and hours, tweaked code, read docs, etc to get even basic of understanding.. All my persistent hard work wouldn’t have been possible If I didn’t possess this drive to contribute to this project, without it I bet I would have left it long ago, and would be too lazy to put in the hard work required!
In the end, I would like to say that
You will have to love the organization, the process, the place where you are working, the thing you are working for, it’s people, the culture, and have to contribute not for clearing GSoC, but for the betterment of that organization!
Harishankar Kumar, Just a random quote
Bonus Example:
For example, You see VLC as one of the organizations, well, If you are also a frequent movie watcher, and use it regularly for your binge-watching sessions, What’s stopping you from contributing to it? Implement a new feature? Or something cool you have in mind?
Step 2: Start Early, Work Smartly!
Next is also a very important one, that is to start early and work smartly, Why and How?
Let’s answer the first one, Why? Do you remember the part where I enlightened you about the dark side of GSoC? The Ultimate truth, the reality.. err, jk, well, the thing is, At the end of the day, the organizations are just looking for worthy people to work with them, Now how to prove you are worthy? Easy! Lift Mjolnir, and you are selected!
Well, obviously, pun intended! Even if you lift Mjolnir, It still doesn’t make you qualified for getting selected, well it doesn’t even matter! Anyways, coming back to track
As I have mentioned previously, these open-source organizations are looking for long-term contributors and those who can actually work on their projects, so the best way to convince them is to contribute to their projects!! To accomplish this, It is advised to start early and contribute to their projects by fixing minor bugs and making small changes, communicating to mentors/others, and getting guidance if stuck! (More about it in next section)
Step 3: Communicate and Make Yourself Known!
and I cannot stress this enough: Yes, communicate! For newbies working to contribute, you would be imperfect and make lots of mistakes and errors, and no matter how good of a programmer you are, It would be challenging! So the best way to get yourself out of this is to communicate! There should be someone, it can be a mentor or some veteran who has long since contributed who would be willing to help you understand things or guide steps in implementing the specific features, In my case, I was very lucky to find a very active mentor, who helped in every step, whenever I was stuck anywhere, I would just ping him, and he would help me get out of pinch! The whole essence of Google Summer of Code and Open-Source contribution is Communication!
The next step is similar: while communicating, you should aim to make yourself known! Be active around developer communities, talk regularly, and make others aware of your presence. Remember, you shouldn’t be annoying and should always follow the community’s guidelines! The trick is to get your name known by mentors and org admins who might be choosing different proposals to select!
Whenever an organization evaluates a proposal, they weigh the value of how much students can bring to their ecosystem, and the best way to convince them is to start contributing early and maintain rapport with the mentor.
Harishankar Kumar, I love making quotes
Step 4: Wait
If you follow all three steps properly, put in hard work, and nothing goes wrong, you are almost certain to be selected! Please note it is still “almost” because you never know what might happen (more of this below), The conversion rate of GSoC is low, but that’s just for low-quality proposals and occasional applicants, for someone like you, who had put this much efforts and preparing for long time, The conversion rate is very high, like very!
If not selected, well, worry not, there might still be some mechanics at play that were not in your favor, there is also a bit of luck involved, some reasons you are not selected:
- Good hard work, thorough preparation but bad proposal: Like anything, please communicate with your mentor and show them your proposal (if possible). They might provide valuable feedback on what to include and what not to!
- Lacking hard work, preparations not sufficient: Well, next year?
- Hard work, thorough preparation, perfect proposal: But still not selected, this might be due to your organization getting fewer slots than usual. The way this works is that you submit a proposal to the Google Summer of Code program, and the organization ranks proposals based upon priority, and Google assigns some X number of slots to each organization, thus top proposals are selected! If the specific year Google chose to assign very few slots, you might be rejected regardless of a good proposal!
Some Bonus Tips
Some of them were given by my seniors itself (legacy)
- Look to contribute to difficult projects, these might have fewer students to contribute and thus a greater chance of getting yourself selected.
- Look for an active organization with helpful members and mentors if possible! There are some organizations where even getting your mentor to reply is almost impossible, which spikes the difficulty of getting yourself to shine out (especially when the deadline to submit is approaching).
- Focus on the deliverables part of the proposal, reviewers usually view this and your existing contributions to judge your proposal and make a decision.
- Remember the code styles, and use linters to automatically format code, take reference from existing codebase to understand.
Well, that’s it, I guess. The sections ahead focus on what to expect and how to work after you are selected in this program! You can safely ignore the further section and close this blogpost and work on the above-mentioned things, come back later and read further after getting selected! (Or you can read it all, regardless XD, I’d recommend this one)
Part 2: After You are Selected!
Well, if you came this far, Congratulations! I am so happy for your acceptance, and if this blog made even a percent of a difference, It would put a smile on my face (plus good karma!), Comment out your organization and the year below, I’d love to hear it out! Anyways coming to the main point, after you are selected…
You went through the toughest process, but it’s not over yet!
Tip 1: Utilize the Community Bonding Period Effectively
After selecting yourself, there would be one month of community bonding period, where you are supposed to interact with the organization, learn its culture, etc. Well, if you have followed earlier steps, you must already have a fair idea of what goes, who the mentor is, and what communication style works! Based on your preparation, this phase is smoothest and probably takes the least effort, but it is where you must shine!
You should aim to utilize this period well, start contributing early, and implement as many things as you can, Initial contributions are the most difficult and take the most time, you might still be unfamiliar with the code base, and it can take more time to develop habit of regularly programming, committing, opening-pull requests/patches, etc! In this period, you can read all docs, try to understand more of things and prepare yourself for the next months that are about to come. Remember, do everything that reduces your work and makes you more productive in the future!
Tip 2: Communicate Regularly, Be Accountable
Next is communicating regularly, a lot of people make the mistake of thinking you just need to contribute and complete your project, well it is true but you should also aim to communicate regularly and be accountable for each line of code you are writing, This includes sending your availability or mentioning what you are working on today, and also be careful for everything you write, it should not just work, but instead follow all coding guidelines, fits into structure and maintain good practices! Again, I am not sure how the contributing styles work for your organization/project, but each contributor usually has to maintain blogs documenting their progress!
Tip 3: Don’t Slack Off, Communicate for Leaves, Unavailability
As important as it is to communicate regularly, It is also important to communicate any leaves, or future unavailability in advance, Most GSoC’ers fail due to suddenly disappearing on their mentors, Try to do as much of work you can, so your progress is not slowed, Keep working!
Tip 4: Ask if Stuck
Yes, It’s your project, but they are your mentor; the thing is, the code you are working is already very difficult, it is quite a miracle for you to understand and work, and no one expects you to code flawlessly everything and finish project, there would be lots of places where you are stuck, Ask mentor, find related issues or documentations to help you, just explore, be attentive and keep working! There’s no shame in asking for help, even for simpler problems!
and that’s it, well there are a lot more things involved, tips left to be given, but well, It’s already 2 AM and I am tired to write, Though if you reach here, I can confidently say for sure that you will successfully learn anything required and finish your project, but still if there’s anything you need help with, you can contact me (contacts given in end).
Ending it, I am tired
Well, that’s it for this blog! I hope it is helpful and makes you understand one thing or two, ending up I’d like to say that this all is just my personal views and opinions, each and every organization/project is different, So what is written here, might not be useful for you! Keep vigilant and be prepared to put in the required hard work to accomplish this!
Ending up, I’d like to throw some links to my project for Google Summer of Code ’23 (ScummVM)
Project Link – https://summerofcode.withgoogle.com/programs/2023/projects/vvsx36fu
My GSoC Blog – https://blogs.scummvm.org/hsk
Contributions (GitHub PRs) – https://github.com/scummvm/scummvm/pulls?q=is%3Apr+author%3Ahari01584
Contact Details
In case of any doubts, feedback, or troubles, You can still contact me at:
Email: hari01584@gmail.com
Discord: agent_orange
Last Word
Thank you so much for reading this up to now, If this was helpful, I’d love to see that in the comments, also I apologize for any writing mistakes, or grammatical issues (Yes this was written by hand, not ChatGPT generated, haha), with that being said I pray for your success and wish you all the best for this wonderful of a journey! With that being said, See you next time!
Amazing blog !!!! Keep up the great work ❤
Saved as a favorite, I like your website!