My journey through GSSoC’20 Extended!
Back in July 2020, when I was leafing through my LinkedIn feed, I came across several certificates posted by my connections on LinkedIn regarding their achievements of GSSoC 2020. Not knowing what it was, I started asking people on LinkedIn about this program. And many of my connections were friendly enough to tell me everything about this program and their personal experiences. It was through them, that I got to know, what GSSoC is and how it is helping many newbies to kick start their journey in open source!
GirlScript Summer of Code is a 3 month long Open Source program during summers conducted by GirlScript Foundation, started in 2018, with an aim to help beginners get started with Open Source Development while encouraging diversity. Throughout the program, participants contribute to different projects based on varied tech stacks under the guidance of experienced mentors. Top participants get exciting goodies and opportunities.
I was totally amazed by knowing this and was eagerly waiting for participating in it next year! But soon luckily, GirlScript Foundation announced that they are extending this program due to Covid. And soon the registration forms were floated! Without having a second thought, I registered for this extended version of the program. After a few days, I received their selection mail.
In September, I was added to their slack channel. This was the community bonding period! There I was introduced to other participants and the project mentors. We were given a brief idea about this program and were introduced to different projects undertaken by GSSOC’20 Extended. Moreover, we were asked to select a project to contribute, based on our tech stack and area of interest. I was lucky enough to have most of the projects based on the tech stack that I had been learning for the past few months! And as it is rightly said more the options, the more are the chances of getting confused! And so did happen with me! I was totally confused about which project to get started with! However, I decided to go with the project Dhenu-Seva which was a MERN Stack application for cattle’s health.
Soon after a few days, the contribution phase started! And here’s where all the hustle began! I started working on the registration part of the project using React and soon made a PR for it! And boom! with my first PR itself, I committed so many mistakes! Since this was my first open-source contribution program, I didn’t knew anything about the protocols to be followed while making a PR. Also, I had followed a few bad coding practices. Well, all these things were gradually rectified by me when I got my PR reviewed by my mentor. After this, I got my first PR merged! And I still remember the day, when I got my first PR merged! I was on cloud nine back then!
Subsequently, I started working on some more issues related to the frontend using React and Redux. Also, I took some issues to work on in the backend as well, by connecting the frontend and backend parts. Along the way, many of my PR’s were rejected, many were corrected a lot, and then merged! However, with every PR many concepts became more clear and clear. This process of making mistakes and learning from every rejected PR continued all along the way for 3 months.
Although I had a basic understanding of Github before, like how to create a PR and all, I still faced a lot of difficulties while dealing with Git and Github. I was finding things like resolving merge conflicts, keeping the master branch of local repo in sync with upstream, and all, quite a lot intimidating!
However, because of this, I ended up reading several blogs, watching YouTube videos, and even reading the Official docs! Along the way, I realized how important it is to have good documentation for the project as well. Hence I started getting familiar with markdown language and tried creating a good readme file for our project itself! Playing with markdowns was one of the most interesting things, that I discovered in this program. And also I worked to improve my own Github account as well by adding documentation to all my repositories! And this was so much fun indeed!
My Few key learnings w.r.t to Git and Github
I understood,
- How to create a proper Pull Request.
- How to set an upstream for the local forked repository.
- How to keep the master branch of local repo in sync with the upstream.
- Most importantly how to write interactive commits using some standard keywords like feat, fix, chore, test, refactor, etc…
- How to raise an issue
- How to deal with branches and what is rebasing and merging.
- How and when to use git commands like git stash, squash, and all.
- Be sure to have an updated repository before submitting any push request. Otherwise, it may lead to merge conflicts!
- How to delete a branch and also how to undo the changes committed to the master branch by mistake!
- How to create some really awesome readme files and how to maintain the overall documentation of any project.
Well, the list can go endless! But these are some of my very important learnings related to Git and Github.
Now coming to the React, Redux, and overall MERN Stack part in general. Working on this project not helped me to foster my skills in react and redux but also made me face several new issues which I had never ever experienced before!
Few key learnings w.r.t React, Redux, and MERN stack!
- Making use of maximum reusable components wherever possible.
- Maintaining a good folder structure by keeping all the images in the public folder, all the utility functions separately in the utils file, and making separate folders for pages and components.
- Making use of state management library like Redux to manage the overall (or rather the main )state of the application, which makes state management extremely feasible. Redux was something that I had always found a bit intimidating. But due to this project, many of my Redux concepts became clear!
- I learned how to connect the front-end with the backend and how to deal with the CORS issue and various ways to overcome CORs. I literally dived deep into understanding CORS, why it happens, what mechanism it follows, what are preflight/option calls, what are response headers etc…
- Also, I started using developer tools a lot for having a good understanding of state flow and change. Especially, the Redux Developer Tools, which have really proved useful for presenting a clear picture of what is happening with the application state all along with the flow.
Well in this case also my list is going to be endless 😆! However, these were some of my very important learnings!
Throughout this journey, I came closer and closer to JavaScript which happens to be my favorite language 😃!
I kept on discovering weird parts of JavaScript all along the way! Wrote some blogs on the same as well.
Apart from Git, React and Node I also learned,
- Never be hesitant to ask your doubts to the mentor. But make sure you have done a sufficient amount of legwork before.
- Learn to have some patience and to be consistent however worse the situation might be!
- Viewing the PRs of your fellow contributors is extremely helpful as it might help you to understand some tips and tricks or code optimization techniques that you might include in your next PR/project.
- Things might seem difficult at the start especially if you are a beginner. But things start taking shape automatically as you keep on contributing! And lastly, those things seem like a breeze.
There’s a different kind of excitement and adrenal rush in seeing those mails in your inbox regarding Github! Like, so and so ‘has approved your PullRequest’, so and so PR ‘Merged into Master’, ‘ #issue closed’! I know these are extremely small things! But such small things and happiness matter a lot if you are a beginner! And such small things motivate you to keep on moving ahead!
Every rejected PR has been a learning experience for me. The hustle for solving an error, finding out different solutions to solve a particular problem, leafing through several blogs, and watching YouTube videos were some of the most wonderful experiences for me!
To put it in a nutshell, this journey has been a blend of, wondering why my code isn’t working, getting frustrated by seeing those never-ending errors, excitement after seeing your PRs getting merged, and most importantly life long learning and takeaways!
Somewhere, it all started from being a complete novice and now ended being a top performer amongst several participants from all over India!
I’m extremely grateful to GSSoC’20 Extended for giving me a taste of this open-source world! Certainly, it has helped me to put my step forward in open source and explore more about it!
That’s it for this blog!
Thanks for reading it till the end!
Feel free to connect with me on LinkedIn and Github.
Happy learning!
Keep Contributing!