DEV Community

Garima Monga
Garima Monga

Posted on

From "Hello-World" to GSoC

Journey of an open-source newbie in Google Summer of Code

Alt Text
I am Garima Monga, a final year Electronics and Communications student at Thapar Institute of Engineering and Technology, Patiala. Entered this wonderful world of coding a year ago and haven't looked back since then. All the sleepless nights and exploration landed me in Google Summer of Code. So here I am, writing my first blog describing this journey from the viewpoint of a person totally new to open-source.

How I got to know about Google Summer of Code

It was the June of 2019, I had just learnt the basics of Java and I saw a post of one of my college seniors with this screenshot (this one is mine)
Alt Text
I didn't know what GSoC or open-source was back then, but it intrigued me, I started asking a lot of questions from my senior and realized- "Okay, this is really awesome", but I still didn't explore open-source as I didn't have a strong hold on any skill.
Throughout the rest of the year I worked on my coding skills and read a lot of blogs learning something new everyday.

College life and corona happened

My first step in this journey

It was somewhere between February 20,2020 - March 16,2020 (when the organizations and their projects are out), I had my mid-semester exams going on, I spared a few minutes everyday exploring the organizations which I had filtered based on Java (my strong point) and jotted down every project that fascinated me. Contacted my senior again to get more clarity on these projects which back then seemed like they were written in some foreign language.

Unfortunate but fortunate lockdown happened, I came back home on March 15, just one day before Student Application Period begins

Student Application Period Begins

I had narrowed down to 4-5 projects in different organizations by this time, being at home gave me the time to explore all of them more. During this time only, I sent my first mails to the potential mentors of these projects and understood what all I am required to get my hands on. After a few mails and a lot of brainstorming, I had narrowed down to two projects (because I realized the rest demanded a lot more knowledge base than I had , being a newbie, I am still learning something new with every step)
I talked a lot with my "to-be-mentors" and started working on the proposal, it took a lot of time and patience(of my mentors too) in getting the whole process right. Even though at first it seemed like making a proposal must be easy, but when I started working on it, I realized it needs a totally different thought process to make a timeline revolving around something you haven't started working on yet, because you can't really see how much you might mess up because you jumbled or just got the steps wrong (personal experience) but thanks to my mentors who didn't give up on me and corrected me at every step, I finally submitted two proposals out of which one got selected (obviously).

A month long wait for the result

During this time, I was mostly busy in catching up with the college academics and completing assignments but I made sure to stay in touch with my mentors and kept updating them about what all I am doing even if it was the smallest bit. Also learned what open source is all about and how github works
This particular playlist of 4 videos helped me get everything clear
Alt Text
Alt Text

The Big Day- Student Projects Announced

It was a whole new experience, I never waited for any results this bad, the emotions were overwhelming, exactly at 11:35 pm I read "GSoC 2020: Congratulations, your proposal with JBoss Community has been accepted!"
I couldn't be happier, it was/is my first real-world experience of working with some of the most talented and experienced people.

Community Bonding Period

I had already talked a lot with my mentors so this period didn't include any new introductions for me.
It included working on the prerequisites of the project so I spent time on understanding the existing codebase and got my hands on Gradle, Maven, JUnit and testing. I made sure I got the learning phase right even if it took more time than I expected initially, because you need to get your ABCDs right before building the sentences.
Also this period unconsciously set me up on a routine where I synced up with when my mentors were comfortable responding (I am super lucky to have mentors that respond at any time I had any questions even with different time zones)

Coding Period begins

Coming onto my project Quarkus: Improve Gradle Support
Quarkus is a Kubernetes Native Java framework, which was fully supported by Maven, a build automation tool. Gradle is another similar build automation system which had much lesser tests so it was in the preview mode for Quarkus, so I worked around creating tests for the same to increase its test coverage and functionalities.
While it was all a new thing for me and I can keep writing about each and every PR, I'll bind myself to talk about some of the major learnings and moments

  • Writing clean code with the self-descriptive names for the classes and variables is necessary
  • Minimize copying any functions or classes and always keep an eye on making improvements in the existing codebase if possible (even small optimizations help)
  • Be thorough with every line of a function used to have a better grip on the code
  • The first PR merging is a big moment (worth celebrating definitely)
  • Thoroughly examining the changes made in the file system due to test helps a lot in the long run

Except these, completely specific to my project I worked around

  • Implementing fast-jars and uber-jars for Gradle
  • Enabling dev-mode (enables hot deployment with background compilation) for jandex plugin- this involved using concepts of CDI and handling the core code base of Quarkus
  • Fixing version range that gets selected by default when you make a new project to support backwards compatibility

I am in the third or final phase of this journey i.e. I have successfully passed two evaluations and am working my way to the final one, working around some more tests related to extensions.
The GSoC timeline would be ending ina few days but my contributions won't, I'll keep contributing and putting out some good code for everyone to use!

Alt Text
This brings us to the end of my first blog, and I will surely be writing a few more after this.
Thank you !

Top comments (1)

Collapse
 
iiishan profile image
Ishan Rana

hey it was very insightful but I had one question like how knowledge base one should have before applying for GSOC , like how much on should know before applying for the project.