How to Make your First Open Source Contribution
Tags: opensource, beginners, career
Published: 2019-04-08 19:37:59

---
title: How to Make your First Open Source Contribution
published: true
description: Contributing to an open source project is essential for any developer. Here's how to.
tags: opensource, beginners, career
canonical_url: https://isscroberto.com/2018/12/12/how-to-make-your-first-open-source-contribution/
cover_image: https://isscroberto.files.wordpress.com/2018/12/fist-bump.png
---

I believe that contributing to an open source project is essential for any developer, contributing is very rewarding and it brings many benefits for you as a developer.
<ul>
	<li>Improve your skills</li>
	<li>Find mentors and teach others</li>
	<li>Grow your career</li>
	<li>Learn</li>
	<li>Impact</li>
</ul>
These are just a few of the perks and I'll not go deeper into the benefits of contributing to open source projects, I assume that anyone who's reading this article is aware of them and is trying to make a contribution.

The truth is that it took me a long time to make my first contribution, far more I'd have liked to, I've been aware of Open Source for a long time and been wanting to contribute for almost a year. I know, contributing to open source can be intimidating and daunting so I'd like to share my experience and this little guide so many developers take the step earlier, overcome this fears and get started in the amazing world of Open Source.

<img class=" aligncenter" src="https://media2.giphy.com/media/3o7abrH8o4HMgEAV9e/giphy.gif?cid=3640f6095c06d2d8324c383749abb922" alt="afraid the phantom menace GIF by Star Wars" />

<em>This guide is intended for developers looking to contribute code but remember that code is just one of many ways you can contribute to open source projects.</em>
<h2>The Basics</h2>
Before anything I recommend to cover a few basic concepts you'll need to make your first contribution, I'm talking about the basic steps to make a contribution.
<ul>
	<li>Fork the repository, clone it and set up your environment.</li>
	<li>Create a branch for your edits.</li>
	<li>Code and test.</li>
	<li>Provide documentation of your contribution.</li>
	<li>Submit a Pull Request</li>
</ul>
I understand this process can be overwhelming, especially if you haven't done it before but there are plenty of tutorials and guides about this online.

Here's a great GitHub repository, <a href="https://github.com/firstcontributions/first-contributions" target="_blank" rel="noopener">First Contributions</a>, which guides you through the full process, and gives you the opportunity to apply it in a practice environment. It is very well documented and very easy to follow, it will help you gain the confidence you'll need for the real deal.
<h2>Pick a Project</h2>
Ok, now you need to find a project you'd like to contribute to, I believe it's important to select a project you genuinely are interested in, it's a huge satisfaction to be able to contribute to a mission you believe in.

There are plenty of Open Source projects of many kinds so take your time and start looking, I'm pretty sure you are already using an open source project in your daily life and I think this is one of the best options since you'll surely already know the project and are familiar with the mission of it.

Here are a few resources where you can explore open source projects.
<ul>
	<li><a href="https://github.com/explore/" target="_blank" rel="noopener">GitHub Explore</a></li>
	<li><a href="https://opensourcefriday.com/" target="_blank" rel="noopener">Open Source Friday</a></li>
	<li><a href="https://www.firsttimersonly.com/" target="_blank" rel="noopener">First Timers Only</a></li>
	<li><a href="https://www.codetriage.com/" target="_blank" rel="noopener">CodeTriage</a></li>
	<li><a href="https://24pullrequests.com/" target="_blank" rel="noopener">24 Pull Requests</a></li>
	<li><a href="https://up-for-grabs.net/" target="_blank" rel="noopener">Up For Grabs</a></li>
	<li><a href="https://contributor.ninja/" target="_blank" rel="noopener">Contributor-ninja</a></li>
	<li><a href="https://firstcontributions.github.io/" target="_blank" rel="noopener">First Contributions</a></li>
</ul>
In my personal experience I choose <a href="https://simplenote.com/" target="_blank" rel="noopener">Simplenote</a> for Android, Simplenote is the simplest way to take notes, a light, clean and free available for iOS, Android, Mac, Windows, Linux and the web supported by <a href="https://automattic.com" target="_blank" rel="noopener">Automattic</a>.
<h2>Pick One Issue</h2>
Now you need to find a bug/feature where you can help and you'll need patience for this, most probably you'll not find the perfect easy but meaningful bug/feature waiting for you, be prepared to spend some time reading through the bugs/features available, getting to know the problems and making sure you'll be able to help.

<img class=" aligncenter" style="max-width: 100%;" src="https://media.giphy.com/media/tvGOBZKNEX0ac/giphy-downsized-large.gif" />

Some repos make this task easier by using some tags for you to identify which issues could be a good fit like <strong>help wanted</strong> and <strong>good first issue</strong>.
<h2>Get the Context</h2>
Based on my experience you may be in need of additional information in order to be able to fix the issue you selected. Don't be afraid to ask but be patient, many projects have official communication channels so be sure to search for this in the repository docs. I'm pretty sure current contributors will be happy to help you.
<h2>Contribute</h2>
Now, you're all set to hack the project and contribute, once you've finished you'll need to open your Pull Request and follow it closely until it is merged and closed.

Most probably you'll receive comments and requests, don't feel bad about them, that's the magic of open source, you'll learn and discuss the best way to do things and hopefully after a little back and forth your code will be merged and shipped into the next release.

<img class=" aligncenter" style="max-width: 100%;" src="https://media.giphy.com/media/NEvPzZ8bd1V4Y/giphy.gif" width="300" height="313" />