May the merge be with you - Hacktoberfest 🎃
Tags: beginners, programming, opensource, hacktoberfest
Published: 2022-10-20 23:53:19

Long have I worked and waited to see, that all my pull requests for Hacktoberfest get merged gradually.  

This was my first time breaking out of my comfort zone to participate in Hacktoberfest. I finally diverted from my usual routine of working with technologies and languages I am most comfortable. The path most comfortable is devoid of any risks, and that also prevents us from flourishing to our maximum potential. Until now I had only worked on school projects and personal projects, completely unaware of how truly large real-world projects are. This Hacktoberfest opened my eyes and inspired me to dig deep, leaving me with an unsatiated desire for continuous improvement and learning. 

During hacktoberfest, maintainers from all around the world mark some issues as "hacktoberfest-accepted" as it could help bring a lot of people to their project. These issues most likely are "newbie friendly", for the people who are not experienced to their codebase. Investigating, planning, and implementing these issues into real-world projects is a lot of work, but the work is rewarding (i.e. [digital badges](https://www.holopin.io/@batunpc), networking and learning new technologies).


## 1st PR-  tonybaloney/vscode-pets 🐶

A few days before Hacktoberfest, I stumbled across this vscode extension called vscode-pets. An update suddenly appeared for vscode pets. When I launched, updated, and clicked on the `changelog` to see what changed – it took me to GitHub where I found out that they were taking part in Hacktoberfest 2022. Since all the issues were so beginner-friendly it was a popular repo among first-time contributors. This was one of the quirky projects I encountered and contributed to. The issue was to add custom quotes to the pets, [issue #199](https://github.com/tonybaloney/vscode-pets/pull/199) and the quote I have added was for [Totoro](https://en.wikipedia.org/wiki/My_Neighbor_Totoro). It is an inspirational quote from the movie and I thought it would be a good addition to the extension. 

> Try Laughing. Then Whatever Scares You Will Go Away.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ux3i2hf1qcy8aalpy15.png)

This first PR was the simplest as I was just testing the water, trying to understand the process of contributing to real-world open-source projects. The maintainer was very responsive and merged my PR within a few hours. Even though the contribution was tiny, the magnitude of confidence it provided me was immense. 

## 2nd PR intel/cve-bin-tool 

Next, I wanted to contribute to a larger project and came across Intel's `cve-bin-tool` repository written in python. The [CVE Binary Tool](https://cve-bin-tool.readthedocs.io/en/latest/) helps you determine if your system includes known vulnerabilities. It is intended to be used as part of your continuous integration system to enable regular vulnerability scanning and give you early warning of known issues in your supply chain.

The issue was to fix [mypy](https://pypi.org/project/mypy/) type issues in `__init__.py`. I was able to fix the type issues and also added type annotations to the codebase. The project was well documented and I faced no issues running it. 
Big projects like [nodejs](https://github.com/nodejs/node), [vscode](https://github.com/microsoft/vscode) or this, [cve-bin-tool](https://github.com/intel/cve-bin-tool) all have strict guidelines for contributions. Even on the commit messages get checked when you raise a PR. [See](https://github.com/intel/cve-bin-tool/pull/2122#pullrequestreview-1139432365) one of the commit messages from [gitlint](https://jorisroovers.com/gitlint/) in their workflow.

## It's not about issues, it's about reading 

If you ever looked at the PRs that were merged (i.e. what files have changed) into large projects and their corresponding issues, you might have noticed that, even though the issues were seemingly tough, the PRs might have been very succinct. When you read an issue and understand nothing about it, you might think that the issue is too big for you to tackle. But when you investigate the PRs that were merged, you will see that the PRs are very simple. The PRs are simple because the maintainers have already done the hard work of understanding the codebase and for the contributors, this is where the real challenge begins. Reading their documentation, understanding the existing implementation, their coding style, and the project's architecture. All of this combined will help you understand the issue better and implement it.

## Reflection 

Over the last several days I was completely immersed in working on issues and making pull requests. I am glad I decided to plunge deep to discover the intricate world of open source. The best way to learn something is not just to learn the theory of it from a distance but to dive deep into it and experience it firsthand.
Remember what [Darth Maul](https://starwars.fandom.com/wiki/Darth_Maul/Legends) said: 

> "Doubt Will Only Lead To Failure."

To get good at anything we should be brave enough to try, fail and try again.