Make your first pull request to an open-source project 💪
Tags: opensource, codenewbie
Published: 2020-10-16 16:15:20

Does the world of open-source sound both mysterious and appealing to you? You're not alone! 
The best way to demystify it is to dare making your first pull request on a project!

You don't know where to start? No worries, this article should help you do so 😌.

---

## Find a project you want to contribute to 🎯 ##

Think about the tools that you enjoy using: whether it's a CSS or JavaScript library, a VSCode extension, a gem... 
Some of them could be open-source (it's the case for dev.to with [forem](https://github.com/forem/forem) ✨)

If you run out of ideas, you can get fresh ones by filtering by programming language for instance:
* [Github repo awesome-for-beginners](https://github.com/mungell/awesome-for-beginners)
* [up-for-grabs](https://up-for-grabs.net)
* [Github repo first-contributions](https://github.com/firstcontributions/first-contributions)

---

## Find an issue you want to solve 🔮 ##

Ok now let's say **you identified the project** you want to work on! Where do you start, right?

### 1 - 🔎 Find a good first issue ###

#### Filter issues ####

You can filter the issues by topic or level of difficulty. For a first PR, you can for instance look for the labels `easy` or `first issue`.

![Click issues and then labels on Github repo](https://dev-to-uploads.s3.amazonaws.com/i/z57m8lv62zymlxw9w6it.png)

![Filter by labels](https://dev-to-uploads.s3.amazonaws.com/i/3bowocsxme3g6w9sneuq.png)

#### Make sure no one is working on it ####

Click on the issue and go through the comments to make sure no one is working on it. If the last comment dates back from a few weeks, you can probably comment and ask to do it!

### 2 - 🙋 Identify yourself ###

Leave a comment to **ask if you can work on the issue**. It's best if you wait for an approval before starting, as it can be frustrating to spend time working on something for nothing!

This way you'll also notify others that you are working on this issue.

### 3 - ✅ Make sure you understand what's expected ###

Don't hesitate to ask questions in the comments to make sure you are crystal clear on the following before starting:
* what's the expected result
* how you can test it
* ...

---

## Start coding! 🔥 ##

### 1 - 📥 Fork the repo ###

![Fork Github repo](https://dev-to-uploads.s3.amazonaws.com/i/trnquym1bf4pr5f4joq4.png)

This will create a copy of the repository on your GitHub account.

You can then clone the forked repository on your machine and let the fun begin! ✨

### 2 - 📚 Take a look at the doc ###

Take a look at the README.md and the CONTRIBUTING.md if there is one. 

They should help you getting started and explain how to:
* **create and name your branch**: each project has its own conventions
* **start the server and set-up the dev environment**

### 3 - 💻  Code the feature, fix the issue,... ###

Now that you got your server running, your environment setup, and your branch created... you can start coding! 🔥

### 4 - ✅ Don't forget the tests! ###

Make sure you don't forget to test your feature or bugfix! 

Once again, take a look at the doc, it should explain how to add tests to the project.

---

## Make your pull request 🙏 ##

Once you're satisfied with your work, git push what you've done on the remote repository.

If you then go to the GitHub repo, it should now offer you to create a pull request!

![Create pull request github](https://dev-to-uploads.s3.amazonaws.com/i/zrndhqgq7vzo1xakhn3u.png)

Don't hesitate to **provide details** on what you've done, how you proceeded or why you chose this technical solution rather than another, in order to help the people who will review it and make sure your PR gets merged!

---

I hope you enjoyed this article and if it helps you take the plunge... I couldn't be happier! 🥳

If there are still bits that are not clear or you want to add anything, please don't hesitate to comment!