Make your first open-source contribution
Tags: opensource, github
Published: 2021-11-26 03:47:04

## How to make your first open-source contribution?

There are many ways you can contribute to open source and it doesn't have to be exclusive to code.

You can contribute by

1. Writing code
2. Reporting bugs
3. Reviewing pull requests
4. Helping triage an issue
5. Adding/Improving documentation

---


## Find a project to contribute to

If you are working on a project, check out the Github repositories of the libraries you are using. 

For example, if you are working on a frontend project, you can check out react-starter, Bootstrap, Tailwindcss projects.

This is a sample of dependencies from `package.json`. Most of these are open-source. 

![dependencies.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631264461525/yiiLt567x.png)

---

## Identifying the right thing to contribute to

Identify the type of contribution you want to make. The best place is, to look at the project's issue board. Most of the projects have labels for the issues. 

Look for these labels "good first issue", "beginner", "documentation"

| Label type | Example |
|------------|----------|
| `good first issue` |![Good first issue.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631264711835/V751aXfxS.png)|
| `beginner` | ![Beginner.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631265351452/mW0puHPld.png)|
| `documentation/doc` | ![Documentation.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631264989098/2sug36Ym9.png)|
---

## Writing code

You can either fix an issue or implement a new feature. Add a test case if possible and appropriate documentation depending on the project.

Here is a PR that I created https://github.com/visionmedia/node-progress/pull/128/files.

---

## Reporting a bug

If you have come across a bug in any of the libraries you are using, create a new issue. Provide details like steps to reproduce, version of the library you are using, browser version, OS, etc. 

If a project has an issue template, follow that.


![Issue template Helm.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631265439160/JUXaVJ5t1.png)

---

## Requesting a feature

You can request a feature in a library by opening an issue. 

Here is one such feature request that I had raised. 

![feature request.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631265771757/cZkDPmnVx.png)

---

## Reviewing pull requests

Don't rush into reviewing pull requests. Judge the tone of the project by reviewing past pull requests. 

Be humble with your feedback and don't assume authority unless you are a frequent contributor to the project.

---

## Triage an issue

Open source projects have a lot of issues and maintainers do not usually have time to check each one of them. It would be of great help if you can help them triage an open issue. 

---

## Adding/Improving documentation

Look for issues with the label "Documentation". You can improve existing documentation, either by updating the content or by adding more examples.

If you find a README that is unclear, create an issue and offer your help to improve it.

---

## Project templates & coding guidelines

When you are contributing to a project, follow the coding practices of that project. Maintainers will be very particular about this and your PR won't be accepted. 

If you are reporting a bug, make sure to follow the issue template.

For example, check out this contributing guide from the docker/compose project https://github.com/docker/compose/blob/master/CONTRIBUTING.md

---

## Patience

Remember, it is an open-source project. So don't expect your PR to be merged immediately. Wait for at least a week before you comment and ask for feedback.

---

## Communication

Once you have decided to address an issue, make sure to communicate by commenting on the issue that you want to work on it. This makes sure that no one else works on it and saves time for everyone.


![start work.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631266432080/CWLT7_BHk.png)

You can also create a work in progress PR and ask for feedback

---

## Sites to help you find beginner-friendly or easy issues
 
- https://github.com/topics/good-first-issue
- https://github.com/MunGell/awesome-for-beginners
- https://goodfirstissue.dev/
- https://up-for-grabs.net/
- https://firstcontributions.github.io/

---

## Dealing with feedback

You might not like some feedback, it's ok. It happens to all of us.  Don't take it personally. Be patient and understand that the maintainer might not be getting paid for their work.

---

## Imposter syndrome

Your first PR might be intimidating. Don't let that get in your way. Take this PR as an inspiration https://github.com/playframework/playframework/pull/616 

This was Kent C. Dodds's first contribution which fixes a typo. 


![Kent first contribution.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631264186145/638_82zHU.png)

Now he is a pro contributor and he has done numerous contributions.

![Kent 2021 contribution.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1631264198657/OpmJsOsUN.png)