The beginner's guide to Open Source contribution
Tags: opensource, codenewbie
Published: 2021-03-14 09:10:28

While in college, I had heard about this amazing month long celebration for open-source called [hacktoberfest](https://hacktoberfest.digitalocean.com/) where if you make a certain number of contributions to any open-source repository(ies) and your changes are accepted (via pull-requests), you could get swags like T-shirts, stickers and other things. This was interesting for me as:
 - it gave a T-shirt, and I don't know about you but in college days, that was something I could flex in front of others.

Years later, being a developer by profession, I wanted to contribute to Open-source but didn't know how. This is a story of how I have started contributing to open-source projects.

If you, irrespective of being a student, a professional or just someone who wants to contribute to open-source, find it difficult and do not know where/how to start, continue reading.

---
## Background knowledge
I suppose you are familiar with some of the terms that are being used in this post, i.e.:
 - repository
 - open-source
 - issues
 - pull-request

and know how to use git and github.
If not, I have linked some resources at the end which may be helpful.

---

## How to contribute
If you are a new contributor, there are a few things you should look for:
 - Repository accepting contributions usually have `CONTRIBUTING.md` or something similar which provides the guide and template of how you can add your contributions
 - `Issues` which are comparatively easy have the label of `good first issue` on them
 - You can choose from the list of issues and if you have the solution for them, [make a pull request](https://makeapullrequest.com/) for one issue at a time


## The Barrier:
The problem generally faced when it comes to making a contribution are:
 - how to find a repository to contribute to
 - not feeling confident enough to contribute

People often can't find a repository which are accepting contributions or there are too many people wanting to contribute to a repository that they, as a beginner, feel lost and not confident enough to contribute. Popular libraries like [react](https://github.com/facebook/react), [material-ui](https://github.com/mui-org/material-ui) have a lot of contributors.

Another aspect is that many good open source repos are matured and their codebase is too big...that it is kind of overwhelming for beginners when they don't have a proper plan to navigate through the codebase and know what must exactly be done to accomplish the task they have in mind.

## The way:
I have been part of [Open Source Raid Guild](https://github.com/OpenSourceRaidGuild) and you can look at the [tutorial-quest](https://github.com/OpenSourceRaidGuild/tutorial-quest) to know what they do and how they do it, but here's the TL;DR:
 - OSRG is the effort to gamify the open-source world and help lower the barrier for the would-be contributors
 - You aren't alone: following the concept of `"raiding"`, a `guild` of people will always be with you

This solves the above two barriers. You don't have to personally look for a repository and you can always seek help from the `guild` whenever you get stuck.

## My experience:
Here's what I have gained while being a part of OSRG:
 - Code-reviews: You have a bunch of people from different time-zones with varying expertise available to review your code, which surely you can't find anywhere else.
Code-reviews help you grow along with the community.
 - Part of a community: Being a part of community provides you with a sense of belongingness
 - Exposure to tools: Working together in an open group exposes you to many tools that can be difficult to explore on your own or in a closed group

---

## Conclusion:
You will not be getting a T-shirt by contributing to open-source (at least if it's not October), but giving back to the community which we, as developers, regularly exploit **feels good**. Communities like `OSRG` help lower the entry barrier and can help in your personal/professional growth.

## Resources:
 - [intro to git and github](https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners)
 - [pull-request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)
 - [issues](https://guides.github.com/features/issues/)
 - [make-a-pull-request](http://makeapullrequest.com/)

## Disclaimer:
`OSRG` is a `JavaScript/TypeScript` focused community, but you can extend the idea that they represent and build your own.

## Credits:
Cover photo: Photo by <a href="https://unsplash.com/@yancymin?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Yancy Min</a> on <a href="/s/photos/github?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Proof reading and providing valuable suggestions: [@poi_sray](https://twitter.com/poi_sray)