Hi Reader! I am Pratyush Ranjan, currently a junior majoring in Mechanical Dept. Speaking about Mech, my interests and major are not aligned at all like many others at IITK. I do not want to define a boundary to what I have done and what I want to do but I can comment freely that I know something about everything which is emerging these days and niche topics of software development are included among those.
At the end of my second year, I was selected as a student developer in GSoC under the Linux Foundation. During this phase, I can guarantee that my understanding of how and what of general software development increased exponentially. Here are my two cents about the whole process.
So the high time to decide that you would like to do Google Summer of Code or any other thing generally comes during December-January(after your end sems). Now you may be an expert in some tech stack but if not then also you can give a shot at it. Just try to learn some good programming stuff during that time in depth. If you know only “git pull/clone/push/fork”, please start learning it too. It will hardly take a day or so but will save you from all the hassles which you will face later on. I am sure that for every kind of stuff there exists an open-source community that needs people to identify and make a change.
Whatever I have seen till now I think it is not the case that the community requires you because they were not able to add the desired feature/solve the issue. It is more about having an ensemble of ideas and the inability to devote time. Take the example of the Linux kernel. I don’t think that anybody knew Linux better than Linus Torvalds. But the community continued growing and people started adding new features and that change is what we witness today.
Not only GSoC there are many other open-source programs that you can participate in (If GSoC didn’t have the word ‘G’, it would not have been hyped this much). And even if you don’t get selected there is nothing to worry about. If you have done great work for the community you would be sooner or later incorporated into the community. And that is pretty rewarding in itself. Will cover the perks later on.
Moving forward, at this time nothing would have been decided. You would not know which organisation would be going to get selected. I would say shortlist 2-4 organisations on the basis of given factors:-
- Your knowledge of the tech stack the organisation uses.
- Your interest in the work the organisation does.
- Whether this organisation is getting selected from the past few years(2-3).
- The number of projects which this organisation approves.
- The number of applicants/proposals which these organisations get. (Obviously more applicants implies a lesser probability to get selected)
Ideally, the order of thoughts should be the same as given above but then ultimately it is you who have to make the decision and this world too is not very ideal. So you can prioritise in any order.
Project proposals are secondary but important things to do. More important is to commit actually to the organisation. So during the phase of January-May and hopefully later on, you have to add Pull requests, Review Pull Requests of others, add missing information in the documentation. participate in the events held by the community to know more information about it. It is also necessary because it will help you gain much better insight about the project you would opt for the proposal. You should also join the mailing list of the community.
Engagement and Participation
In most organisations, they look for your past PRs, quality of PRs and description of PRs. So the most important part is to engage with maintainers and issue creators(mostly organisation members) on GitHub to know more about an issue. And try to solve it as if it is mandatory for your selection(and believe me it is).
Most issues would not be trivial in general and sometimes it will turn out pretty hard. It took me about 11 days to solve my first substantial issue. And that PR too contained a few bugs discovered later on. If you are stuck you can either ask for a different issue to be assigned(do this if no scope is left) or can ask for help from the maintainers. Tell them what all you have tried and their results and what piece of information/snippet you didn’t understand. Mostly those people are considerate enough to answer in great detail but don’t get disheartened if you get a reply as “if you don’t understand what this is about, how are you going to solve it”. Just kidding or am I? Also, don’t ask questions like “I didn’t understand the API functions, can you tell me about it?” Typically you are supposed to be a good documentation reader and these things are easily available on docs.
So overall you need to take on issues and solve them one after the other. In the mid of March, the result of the selected organisations would be rolled out. Although you should keep contributing to other organisations which didn’t get selected because your main aim should be on contributing to open-source, you can also focus on only the organisations which got selected if you are having time management issues.
Now select one of the projects offered by the organisations which sounds interesting to you based on your domain knowledge and start discussing the project with your expected mentors/org maintainers. The projects would be proposed on the idea list of the orgs. Some organisations post their project ideas as early as January so keep an eye on the website of these orgs. Discuss each and every aspect of what this project aims to accomplish and how it is going to do so with your mentor. The “how” part is more important here. Reach a point where you know what exactly you are going to do when you will start working on the project. Needless to say, you must contribute all along with this phase in the form of PRs/Code reviews. There may be a possibility that at the time of implementation you face some issues due to which you would have to take a different approach but that is fine. It happens with everyone.
In about the first week of April, student Applications will begin and you have to make a proposal of the project you want to do. I’ll say give yourself 7 days to complete the proposal since you already know what to do. It should be detailed, if possible add GUI illustrations (if the project is based on GUI implementation). The most important part here is the week-by-week timeline. Share your proposals with the mentors so that it is critically analysed before final submissions. You can find more about this on YouTube.
Just keep on contributing and you will get through. GSoC selections are declared in about mid-May. On a crude basis, you would be giving about 30 hrs/week for the project. Achieve all the tasks on time and you will have a successful summer with your organisation.
Remember that students do fail in GSoC so please keep working as you have promised earlier. Also please keep doing CP/Leetcode in your summers. GSoC won’t help much in your upcoming internship season but will surely add credibility to your resume. You would surely get invites for interviews from good companies but I’ll recommend you to keep faith in SPO.
In the end, even if you don’t get selected, be proud of yourself because you would have pulled off great time management skills during your 4th semester and you would have also gained so much in terms of programming skills just via contributing. Easier said than done, you will probably get the vibes of “I tried so hard and got so far, but in the end, it doesn’t even matter”. Frankly, it matters, remember it’s your work that will remain there and will sooner or later pay you off. Either someone will notice your PRs and will send you mail for some kind of opportunity or it can be in some other way. Be google-able, add backlinks of your personal website/Linkedin at all the places so that people can find you and eventually reach out to you.
It is genuinely fine to not do any kind of internship during this time but it is terrible if you find yourself guilty of wasting time. Do some deep work in any line of thoughts which is also a corporate/research skill and you will make your interviewers happy with your knowledge on the subject matter.
Most important is to keep in mind why such programs were started in the first place. The idea is to keep contributing and give back to society. Nearly all the programming resources are free, the open-source organisations provide you with software that your PCs need without you even knowing it and for all of that doing open-source contributions is a way to show your gratitude.