A Beginner’s Guide to Contributing to Open Source

Tags: opensource, beginners
Published: 2020-02-28 01:00:48

For any developer early in their career, contributing to open-source software may seem quite daunting. Maybe you have never worked on a project with other developers, or maybe you don't think you have the skills to meaningfully contribute.  

Last year was my first year contributing to open-source software, and I definitely felt both of these things before I began. Despite my apprehension, I managed to make contributions and wanted to let you know that **you** can do it too!

If you are interested in open-source and are experiencing similar apprehensions, read on for suggestions on how you can get started. 

<hr>

### ⌛ TL;DR
- Even as a beginner, you can make a meaningful contribution to open-source software! 
- There are more ways to contribute than just code.
- Thoroughly documented projects with clearly labeled issues and a Code of Conduct are good signs of a project that is welcoming for beginners.
- When contributing, read documentation thoroughly to understand expectations for code contributions, PRs, etc.
- You are great simply by trying!

<hr>

**Assumptions about the reader**:
This write-up assumes that you are familiar with a version control system like git and that you understand what open-source is. If you are not familiar with one or both of these things, here are some good resources to start with:
- [Getting Started with Github](https://help.github.com/en/github/getting-started-with-github/git-and-github-learning-resources)
- [What is Open Source?](https://opensource.dev/)

<hr>


## Remember that there are more ways to contribute than just code! 
A common misconception about open-source software is that in order to contribute, you need to know how to write code. This is NOT true. Open-source projects involve a myriad of tasks, including (but not limited to) issue-tracking and labeling, UX design, and documentation- which often gets overlooked, according to [this  study](https://github.blog/2016-06-23-the-shape-of-open-source/).  

If you don’t feel comfortable contributing by writing code, you can look into some of these other ways to help with the project instead! 

It’s also worth noting that being new to a project can be an asset. As someone with fresh eyes, you can more easily identify bugs in the codebase or gaps in the documentation that someone more familiar with the project might not notice.

For example, you can try getting the project running locally with the current documentation to instruct you. If you find that you run into any problems that aren’t addressed in the documentation, you can make a pull request to update it for others who might encounter a similar issue.

## Find a suitable project
Picking an open-source project suitable to you can depend on many things, and is ultimately a personal choice; but as a first-time contributor, here are some of the ways you can narrow down which projects might be best to start with. 

### Seek out projects with well-labeled issues and thorough documentation
As someone new to open-source, seeking out well-documented projects or projects that have active communication channels where new contributors are welcome to ask questions is definitely beneficial. Some green-flags you can look for include:
- Thorough README about the project and setup.
- Wiki pages or resources on expectations for contributions.
- A code of conduct.
- Well-labeled issues (especially ones labeled “beginner” or “beginner-friendly”).
- A Slack channel or equivalent communication forum where people are welcome to ask questions or seek guidance. 

### Decide based on language / tech-stack
If you have been working in a particular language or framework and would like to find projects utilizing those, you can use websites like [CodeTriage](https://www.codetriage.com/) to find projects filtered by your selection. 

### Choose projects based on your interests
Another consideration is picking a project that resonates with you based on your interests or values. Perhaps you enjoy games and want to contribute to an open-source game, or you found a library that was really useful to you and want to contribute as a token of your gratitude. Especially considering that your contributions will often be done in your own free time, picking a project that you really care about can be more motivating and a more fulfilling use of that time.

#### Resources to find an open-source project to work on
Here are a few websites that help beginners find good first-timer contribution projects:
- https://github.com/MunGell/awesome-for-beginners
- https://www.firsttimersonly.com/
- http://up-for-grabs.net/#/
- https://firstcontributions.github.io/ 

## Make your first contribution
Once you’ve identified which project you want to work on, the next step is to determine how you want to contribute.

### Identifying a Way to Contribute
As mentioned earlier, one way you can contribute is to update missing or improper documentation you come across while setting up the project. 

Additionally, you can refer to the list of existing “issues” on the project and pick an open one. Keep in mind that just because an issue has already been claimed does not mean it’s unavailable to be worked on. 

For example, you may come across an issue that has been claimed by an owner, but the owner has not worked on it for a long time. You can consider reaching out to them and asking if you could take over ownership of the issue. 

In another scenario, you may come across an issue someone has already started solving, but you’re interested in it, too. Likewise, you can consider reaching out to them and seeing if you can work on it together! 

## Submitting a Pull Request
After picking your piece to work on and solving it- whether it’s code, documentation or something else- you’ll submit a pull request (PR) to have your changes reviewed. 
Before submitting, however, there are a few things you should check:
- Ensure you are following the guidelines (if any) for submitting PRs.
- If contributing code, ensure your code doesn’t break any existing tests.
- If contributing code, ensure your code is tested (if necessary/applicable).
- Ensure your branch has no merge conflicts.

Moreover, it’s important to remember that you are not your contribution, and any suggestions on ways to improve it are not reflective of your worth or value as a human or contributor! 

## Celebrate! 
Last but not least, regardless of whether or not your pull request gets approved and merged, you deserve to pat yourself on the back and feel proud of yourself for attempting to make your first open-source contribution! 🎉

<hr>

**A Word About the Cover Image**
Did you know that beavers are communal creatures? They work together to build their dams and food caches! Since this article is about open-source, I thought an illustration of beavers was an appropriate to include in this text. 
Thank you to Jennifer Tran [(@botanical)](https://dev.to/botanical), for the artwork!