How I got selected for this year's GSoC and how you can too?
A fully-fledged guide for every student.
Getting selected into Google Summer of Code is one of the most prestigious things a student can aim for. While getting selected into the former is not a piece of cake, it is not climbing mt. Everest either. So, let's see how I managed to make it to this year's GSoC. But before diving into this ultimate guide, Let's draw some motivation from master Yoda:
Okay, but what is this GSoC, you're bragging about?
Well, folks, the Google Summer of Code is a global program focused on bringing more student developers into open-source software development. It is basically one of the most important programs out there which promote the spirit of open-source and the fun part of which is that it is accessible to almost every student in the world no matter their degree or college. It's also a very great pathway for a student to become a better developer as they get to participate with one of the world's finest open-source communities and get to work under the influence of one of the best people out there to develop world-changing software products.
Sounds Cool, How'd you get started with open-source anyway?
Storytelling time!
Since the day I got to know about this program and about open-source software in general, I have been looking forward to contributing to any open-source software that I could find, and fortunately for me, I had a long list of open-source organizations with me thanks to the GSoC's previous year archives, where I found a lot of awesome open-source organizations from which I first choose to check out this organization called The Wikimedia Foundation, which is the parent organization of none other than " the Wikipedia"(๐ฎ right?). I was nervous at first since that was my first experience with any open-source community but after some interaction with them I was more confident than ever before for starting my contribution and so I researched their projects and selected a project which required python skills namely pywikibot and now it was time to fix a bug to get used to the code-base and which I did(although it was super simple) and my reaction was:
I made many contributions thereafter which I decided to switch to some new organization that solely focused on C++ development as I was highly looking forward to honing my C++ skills(C++ is โค๏ธ) and I got introduced to LibreOffice whose development mainly consisted of C++ alongside Java and Python. For those of you who don't know LibreOffice, it is a free Office suite software that offers a ton load of awesome features for free and which I would highly recommend everyone to check out. Okay, now starting my contribution to LibreOffice's code-base was very intimidating at first even though I had a super helpful mentor guiding me throughout the process, as the code-base of LibreOffice is immensely huge and is composed of advanced C++ which I wasn't familiar with at that time(I still don't know most of it๐) but with some persistence and hard work and with the help of everyone's friendly neighbor "Google", I managed to make it through various bugs, learning a lot in the process.
Great! How did you apply to GSoC?
This year's GSoC program was announced somewhere between December to January and the list of selected organizations was released in February and the release of the list of projects to choose from and the beginning of the student application period took place during March. A student can choose any three projects(I'd recommend going with the only one you're very serious about) that interests them from their respective organizations to which they were contributing and start contacting the project's mentor as soon as possible to let them know that you're interested in this project, however, before contacting the mentor, do your research - be sure to know every ins and outs of you're selected project that you can find out and then reach to your mentor with the info that you gathered, trust me, it leads to a very good impression and increases your chances of selection. I did the same(my project was one of LibreOffice's proposed projects) - I did a lot of research about the project I was interested in and I contacted my mentor with the same info and which I think pleased him and we had a nice informative conversation about the project and after which I applied to LibreOffice for the same project with my proposal(proposal writing tips below) and waited 2 long months for the results...
Then came the judgment day for which I was waiting for a long time - GSoC's selected student's announcement. Before the results got out, I was anxiously checking my emails to see if it's out but when the time came and I checked the mail, I found this:
After which I went through this phase:
That was amazing! BTW, What's your GSoC experience so far?
The project on which I was granted participation was titled " Add tests for the VCL graphics backend " and here's some brief info about it:
This project mainly focuses on improving the diagnosing mechanism for efficiently diagnosing the quality of LibreOffice's Graphics Rendering by introducing some new test cases to the pre-existing testing module and also by introducing a new testing facility that would run the tests on the client's system along with a manual option for running the tests that would take place via a dialog box, enabling the user to easily provide the results if there's an anomaly with the rendering.
That was my project in a nutshell, you can check more about my project at the GSoC project page via the link I provided above with the title. Also, talking about GSoC, it has three phases namely:
Community Bonding period: Students are typically expected to learn more about their project during this phase, forming the master plan with which they would carry out their project, the whole summer. I did the same and kept on researching about the project more and more, asking doubts from my mentors whenever I encountered one.
Coding phase-1: During this phase, the students begin coding and working on their project. After the end of the 1st coding period - The first evaluation takes place where a student is asked about his/her mentor and about the program in general and the mentor is asked about the student's pass/fail status and some remarks and if the student is declared pass, he/she will receive his/her first stipend and if they fail, well they're disqualified from the program. Fortunately, for me, I passed the first evaluations.
Coding phase-2: During this phase, the student again begins the coding and is expected to complete the project successfully. After the end of the 2nd coding period - The second evaluations take place where a student must submit his/her work report which would consist of all the work done during this GSoC with the links of commits and also submit the usual info about mentors and the program in general. The results are yet to be announced, wish me luck!
All in all, It was an experience to be cherished forever, I got to learn a lot of things and a lot of practices which I don't think I would've learned otherwise, and most importantly, I made a difference by introducing some but minuscule improvements to LibreOffice's code-base which I'm hopeful that would come to a lot of handy to many using the software. It's an awesome feeling indeed to be a part of something bigger which I'm highly indebted to GSoC and LibreOffice for. It is really a proud thing for me to be a part of Google Summer Of Code.
Problems I faced as a beginner and how you can prevent them
It wasn't as easy as it first seemed to contribute to open-source and getting selected into GSoC and so let's discuss the problems I faced serial wise, Here we go:
To Contribute to any organization you first need to contact them and introduce yourself to them and mind you I'm a hardcore introvert who's always super shy to talk to anyone, let alone the open-source organization's huge community but thanks to me(๐), I did what I should've done - "Introduced myself to them" and guess what they were super nice and helpful and I got the lesson that one shouldn't hesitate to introduce oneself to these communities - again this point mightn't be a problem for some but for some like me, it is a real problem to be dealt with.
Most common question which a lot of people have and which even I had was when starting to contribute to open-source "What language or technology one should know to get started with open-source?" The Answer from my experience - It doesn't matter, you just have to be passionate about development that's all. It is okay if you don't know some language or you don't know some tech stack, you can always learn anything required for the job, for example:- If you know one programming language (knowing which, I must admit is a must) but your project requires some other, "Google" your desired language, pick a resource and start hustling. With hard work, you'll receive the results in no time after which you can start contributing. See, easy-peasy wasn't that? So don't stop with this excuse saying "I don't know that or this", instead learn it and get the job done.
It's okay to ask for help whenever you're stuck but it's not okay to ask for help for even the most basic stuff which you can find out easily on your own - remember that the people helping you are also volunteers and they too have a lot of work with them already and so always be sure not to be a baby demanding for spoon-feeding.
I remember that when I started I couldn't even solve easy bugs(good first ones) as solving even those requires some knowledge of the code-base(very little usually, it depends upon the bug) and for beginners, the code-base of a well established open-source software can spike nightmares as it is nearly thousands of lines of code along with many sub-modules. I faced the same problem but how I did learn to maneuver through the code-base is with this short trick that I'm going to tell you and here's it:
Break the code piece by piece. Suppose, you want to find out how some method works, break the code within the method line by line and search about it in the code-base and try to learn the meaning of every line if you can, this way you'll be sure to solve the bug easily. (Usually, the most common way to search through the code is through git-grep)
Conclusion
Although GSoC is highly competitive and is somewhat difficult to get into, you have to be persistent enough to stand out from the crowd as many students that I've encountered are those who introduce themselves to the community but do not proceed further than that - don't be that student and so be sure to be a persistence contributor as in my experience, persistence is the only thing that can guarantee you success in any field. Believe in yourself, and you will make it to wherever you wanna go - be it GSoC or any other endeavor you desire for. I wish you the very best of luck and also,
Bonus
Proposal tips
The proposal for GSoC plays an important role in one's selection in GSoC and so be sure to make a good one. A good proposal should consist of these three crucial things:
Your personal info.
Thoroughly researched information about the project you're sending your proposal for.
The timeline accordingly to which you'll work on your project.
Also, try to make it more interactive by adding some examples(some piece of code maybe) demonstrating the use-case of your project, and also, try adding some images, diagrams to make your proposal more appealing than the rest. This way you're all set for making an awesome proposal for your project.