My #hacktoberfest2021 honest review
Tags: hacktoberfest, opensource, github, showdev
Published: 2021-11-03 08:10:54

I always love open-source projects for their quality and the amazing community who build it through their contributions. Whenever I'm in need of any professional software for day-to-day productivity or hobby projects for personal use, I always search in google along with "open-source" keyword. I found so many such open-source projects which I end up using very frequently. [apps.diagrams.net (formerly draw.io)](https://github.com/jgraph/drawio), [Greenshot](https://github.com/greenshot/greenshot), [Mayan EDMS](https://gitlab.com/mayan-edms/mayan-edms), [WinMerge](https://github.com/WinMerge/winmerge), Notepad++, Visual Studio Code are to name a few.

## Early contributions

Even though I use open-source projects, I rarely contribute to them. I often create issues whenever I found problems, but I never go deep into the source-code that I go and solve the issue I just found. But whenever I feel like something can be improved/added without disturbing the existing features, I often tend to work on it.

This is how I made my first contribution in early 2017 in this project [jsgif](https://github.com/antimatter15/jsgif). (The project is not maintained now and my PR is the last commit in the repo). Similarly, I made three more contributions in other projects. However, my biggest contribution was to the project [hackingtool](https://github.com/Z4nzu/hackingtool) [#79](https://github.com/Z4nzu/hackingtool/pull/79) where I rewrote the entire project to be more maintainable, uniform and easier to contribute to.

## Hacktoberfest 2021
This year, some how I motivated myself to participate in Hacktoberfest 2021 (but 20 days late to the party). It felt difficult to make 4 PRs in 10 days. At the same time, I took it as a challenge.

### Finding projects
As I mentioned earlier, I feel comfortable to add something to the project without disturbing the existing code. So, I immediately started searching for projects which are kind of collection of scripts. After going through many projects, I found 4 projects and made some small PRs. As all the projects I contributed to are already popular, there are 100's of pending PRs waiting to be merged.

### Waiting...
Being a little impatient, waiting for the PRs to get accepted seems like more challenging than to create the PRs. Some projects have contributing guidelines, and many projects have their own coding preferences, workflows, review/approve users. Some of the things I noticed that are barriers for first-time contributors are

* Workflows - for some workflows to run for first-time contributors, maintainers must initiate the workflow. Till then, you won't know if your PR follows the guidelines or if your PR will raise conflicts. Being first time contribution to a project, there are high chances of non-compliance to the guidelines.
* Changes and review process - If maintainers propose changes, you've to go through the "Change"->"Push"->"Request for Review"->"Wait" cycle. If the maintainers who were asked for review are not active while no other maintainers looks at your PR as they're not assigned, the delay in merging the PR will be more.

### Small projects to the rescue
While popular projects with so many maintainers, workflows and guidelines attracts you to contribute, the real satisfactory contributions will always belong to small unpopular projects. As I was waiting for my 4 PRs while they're in the "reviewing/neglected" state, I found this project [react-tailwind-portfolio](https://github.com/BraydenTW/react-tailwind-portfolio) which I contributed to and got my first ever "hacktoberfest-accepted" label within 24Hrs of finding the project.

### Finally done with 4 PRs
After my first PR, 3 out of the earlier 4 PRs are merged and I finished my #hacktoberfest challenge. As I was writing this post, one of my PR is still waiting to be merged :(.

### Takeaways and suggestion to my future self
* Always try to contribute to small projects
* Create issue first and work on the PR
* Try to solve the existing issues by diving into the code
* Create a project which others wants to contribute to :)

Thanks for reading.

Naveen Namani