From "Hello-World" to GSoC
Tags: opensource, java, github, beginners
Published: 2020-08-24 12:00:33

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

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t9jtkv61g8y9997uubwy.gif)
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](https://summerofcode.withgoogle.com/projects/#4770885191335936). 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](https://dev-to-uploads.s3.amazonaws.com/i/sb8854ot78tglnvmmsgi.png)
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](https://dev-to-uploads.s3.amazonaws.com/i/hmnwbrpy3ohccgkbr6f0.png)
[![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/42eghlum0zmq3fv8soa5.png)](https://www.youtube.com/watch?v=1h9_cB9mPT8)

##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](https://summerofcode.withgoogle.com/projects/#4770885191335936)
**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](https://dev-to-uploads.s3.amazonaws.com/i/kwhd4et494b5zq7wrytp.gif)
This brings us to the end of my first blog, and I will surely be writing a few more after this.
Thank you !