I’m on a sort of “mission” to become an open source contributor. For years, I have told myself that I would start writing open source code, but I’ve never actually helped out with an established piece of software.
A couple of weeks ago, I flipped a switch in my brain and decided to commit to getting to work. Here’s how I chose what to do first.
Find Some Potential Projects
I already talked about some top open source projects that I am interested in, but now we’ll get into how I picked the right one for me.
When choosing what you want to work on, figure out a few things that you’re looking for before you start trolling GitHub. Maybe even make a short list of what you need out of a project in order to commit to learning their ecosystem and writing code for them (potentially for decades to come).
Here’s my list:
- Most importantly, learn something
- The values of the project must match my values
- Software that I will use for many years
Find the Docs on How To Contribute
Whenever I started diving into a project page, I would go straight to their guide on contributing. Any good project will have a Markdown file or wiki page on GitHub explaining how you can get involved.
When you’re first starting out (that’s exactly the boat I’m in right now), I think it’s best to find the quickest route to getting some code into the source. You gotta stay motivated to learning and working. Getting some recognition will help with that.
For Rust, here is how the process went for me:
Rust has a big link that goes straight to their “Contribute” page
After reading the quick overview, I found the CONTRIBUTING.md link which took me to their GitHub.
Since I started learning Rust recently, I wanted to work on some very easy issues that don’t require a lot of knowledge about the language, but will ease me into how the project is structured and allow me to snoop around the source to become more comfortable reading the code.
Now we’re talking. That E-easy tag sounds perfect for me. Time to dig a bit deeper and find an actual issue that will suit my needs. Even though I’m not ready to contribute, this will give me an example of what my first step will be if I choose Rust as my first target.
That first issue in the screenshot is the one. It’s tagged with E-easy and it has 61 comments, which means it’s probably important and has a lot of eyes on it. This is good to make sure I’m doing work that matters (again, for the motivation).
Let’s go deeper and find out what exactly needs done.
This is a metabug for
rustc --explain error descriptions.
All the errors in need of descriptions are listed in this spreadsheet. If you’d like to help out, comment with the bunch of errors you’d like to tackle, and list yourself as assigned on the spreadsheet!
Alright, that sounds easy enough. After a bit of digging, I found out that this is something I can handle, it gets me reading through source to find out where these errors are, and it forces me to learn more about the language and the project.
In fact, I had to do a bit of digging just to find out if it was something I could tackle.
I even took the liberty of recommending some changes to the issue itself in order to make it easier for newcomers to help out. Since I had to spend time figuring this out, that means everyone in my situation has to do the same, just to decide to help with this issue.
The above process is pretty specific to my needs, but hopefully you can get the generic bits from it and replicate this for finding your own project. I did pretty much the same thing for each of the open source projects that I was considering and it helped me narrow down my choice to Rust.
I now have target software that I want to help with, an understanding of how the Rust team wants me to approach contributions, and an easy issue to start with.
The goal is to learn as much as I can about Rust while paying it forward to future users by improving the language. It’ll take a long time to make a big difference, but it’s all about Patience and Work.