Google announced the list of accepted projects for the 2020 edition of Google Summer of Codes (aka GSoC) on 4th May at 23:30 IST. It was this very day that I received an email stating I’d been accepted into the GSoC’20 program as a student developer under Wikimedia Foundation. Jubilant celebrations followed 🎉 which is to say I fell on the floor and screamed like a little girl. After sinking in the delight of seeing my name appear among the the chosen 1,199 projects, it is now my duty to document my journey, of how I cracked GSoC.
Simply put, Google Summer of Code is a global program that is focused on bringing more student developers into open source software development.
Now this doesn’t sound interesting and motivating, does it? Let me brighten up this whole GSoC thing a bit for you:
Google Summer of Code is the utopia where long-standing summer dreams of learning, contributing and becoming part of an Open Source Community is turned into reality.
Now that we know what our destination is, let us get into unfolding the journey that leads to it.
Yep, that’s what I would call my journey from 2019-2020. The year began with me battling against serious signs of imposter syndrome but I’ll cover more about that in a future post. For now, let’s just say the year did not have a pretty start for me. How did I tackle it? Well…by working insane hard to the point it impacted my overall health and well-being. However this struggle was not in vain as by the end of the 2019, I had:
- armed myself with experiences in a tonne of technologies 💪🏻.
- a brief stint with Cloud Native Computing Foundation (CNCF) working on their CI/CD bot .
- launched Hydrabot 🤖, an open sourced CI/CD bot for Github.
- founded Devstation 🚀, a platform for connecting open source developers with organizations and startups willing to adopt open source tech.
Google announced the list of organizations on February 20, 2020 and immediately, my hunt for projects began 🕵🏻♂️. I am a bit picky when it comes to my interests in developing software and so I looked for some particular projects which included tags like
machine learning and
tensorflow since these were some keywords that I was tremendously interested in. Despite there being a whole bunch of organizations that had projects matching these tags, two organizations in particular immediately caught my eye: Boost C++(General robust, adaptive geometric predicates) and Wikimedia Foundation(Evaluating replacements for our browser automation framework).
After an entire week of brainstorming, I decided to go with Wikimedia Foundation since their project’s interests were somewhat interwoven with those of one of my own open source projects. I immediately joined their Zulip and IRC channels and subscribed to their mailing lists.
Initially, I could not understand a thing about the context of the messages and what people were talking about on Zulip! Getting into an open source community can appear daunting at first and it’s quite normal to develop a fear of missing out. But at the end of the day you must remember what you’re there for - to gather experience and exposure. I mustered up my courage and without giving it any second thought, sent private messages to my mentor, Zeljko Filipin, describing:
- My basic introduction including my name, branch, college, and country.
- The project that I was interested in and why?
- Mentioned my work and achievements (whatsoever) till now and asked for an opportunity to discuss more upon the project.
Let me tell you a secret 🤫. Before messaging my mentor, I did a whole bunch of research on who he was and what he did and this is what my early impression of him was:
Damn this dude's big shot! I better be thorough with the stuff I know or I don't stand a chance 😅!.
This would later turn out to be largely false since he is the most knowledgable yet humble guy I have ever met!
I also introduced myself in the general chat channel hoping that someone would direct me to the right starting point and my fellow
Wikimedians, Pavithra Eswaramoorthy and Srishti Sethi were quick to respond and immediately helped me out.
Željko soon responded to my message and that too in the warmest and most welcoming way possible. He also invited me to complete a set of tasks for assessments.
I immediately started working on the assessment tasks, creating patches and reaching out to the mentors whenever I found myself stuck and stayed committed to them.
The application period has lead me into personally believing that:
Getting into programs like GSoC does not have a logically defined approach. I would consider it more as a milestone in the journey to become a better software developer. There is nothing like an "official" or an "unofficial" contribution in the open source world. All that matters is your commitment, the feeling of giving back to the community and your involvement in the community.
Since my project involved evaluating on replacements for the current browser automation framework, I started searching the web in an attempt to short-list potential alternatives and tried setting them up locally and running a few high level tests with Wikimedia’s core repository. All along the way, I would have long discussions with my mentors who helped me with a lot of technical details regarding their existing software. After a lot of research to find what’s best suited for our use case and eliminating the options, we finally settled on three potential alternatives: Cypress.io, Puppeteer and Microsoft Playwright.
With only a few weeks left before the application deadline, I started to draft out the proposal for a project titled: Evaluating replacements for our browser automation framework. I also tried to get more involved in the community, helping out Outreachy and other GSoC applicants with their project research and going through Scrum of the scrums and Wikimedia tech-talks (even if I did not know squat about the technologies being discussed) in an attempt to squeeze out any relevant information I could get hold of.
Keep in mind the following while drafting your proposal:
- Add some pseudo-code for any algorithm you wish to implement.
- If your project involves creating an entire software from scratch, try to give a touch of professionalism to your project by:
- including useful infographics to keep the proposal interesting. Remember “a picture is worth a thousand words !”.
- discussing alternative solutions.
- describing why yours is the best.
- including UML diagrams.
- explaining the system design.
- Don’t be afraid to throw in some example code from their code base which you wish to change.
- Try to include useful statistics and overall impact that your project aims to bring.
Google allows you to draft proposals for up to three projects that you wish to work for. However I was extremely passionate about this project and by the time I submitted my proposal on 31st March, 2020, I was pretty hooked on it and it ended up being the only proposal I made.
When you want something, all the universe conspires in helping you to achieve it. Each thing has to transform itself into something better, and to acquire a new Personal Legend, until, someday, the Soul of the World becomes one thing only.— The Alchemist
Google Summer of Code is different from a mainstream internship in that it does not have a preparation strategy or technical eligibility requirements and should not be looked at as a way to earn money. It is definitely not something you should pursue half-heartedly or just for the sake of it, because the world depends on open-source software more than one might think!
Huge open source organizations like Wikimedia Foundation manage the collaboration of hundreds of people who don't know one another and have spent no time hanging around the water cooler.
Thank you! for sticking with me on this journey till the end. I wish this blog post justifies your time, and my journey and experience helps you any way possible! Feel free to hit me up if you wish to know about what GSoC is, what it offers, etc.