How to work on Open Source projects as a beginner

May 13, 2020
Where to find projects and what to look for when getting started with Open Source as a beginner.
The world of Open Source is undeniably a big and scary one.
For those on the outside looking in it can certainly be a hard landscape to navigate, and this puts people off from the get go.
However, it is (in my own incredibly humble opinion) the most underused method of creating a list of projects to show off when you are a junior developer looking to get a foot in the door of the industry.
Because it showcases, more so than working on a personal project, that you can work on a real life codebase, using some of the fundamental workflows of Git that you are going to be using in the world of work anyways.
You can demonstrate you understand Pull Requests, Merges, Issues, Commits and all the other delightful things that come with it, and this is a real edge in a competitive job market. These are things that you are going to have to learn on the job anyways, so gaining experience before you apply is highly encouraged.
Imagine how fucking cool it would be, if you had actually helped out on an Open Source tool that the company you were applying for used. It’s doable!
Ok, awesome - so how do I get started? Where do I find projects to work on.
Good question, and one I get asked… a lot.
So here it is - live and in the flesh. My guide on how to get started with Open Source and find suitable projects as a beginner. If you want to find more info on what Open Source is before moving on with this guide, I recommend you check out —> What is Open Source?
Cool - let’s get started!
In this article I am going to be using Gatsby purely as an indication of what a great project for beginners looks like. They do a lot of things right!

Finding a Project for Beginners

Open Source projects can be found on numerous Git repository hosting sites. The most well used is GitHub and this is where I suggest you look.
As a first-time contributor, it can be complex to get going, and certainly intimidating. Here are some of the ways you can narrow down which projects might be best to start with:

Find projects that use your tech stack

Firstly, it makes lots of sense to be working with projects that use similar technical stacks to what you use yourself. If you code in Javascript, it makes sense to look for Javascript projects.Under GitHubs “explore” tab, you can find out the repositories that are trending on the platform. This is an incredibly handy feature, as it allows you to search for a specific language. This essentially triages projects that are 1) Active and 2) Using primarily the same programming language you use.
notion image
At this point, you can star projects so you will be able to find them easily again. I keep a well pruned list of projects that I have a genuine interest in, and I can check back on them over time without having to remember what they were called.

Find projects with well-labeled issues and great documentation.

The best projects to work on are the ones that have taken some time to write great documentation, and keep a well maintained “issues” list. Clear expectations of exactly what the project is and what it is trying to achieve, how to contribute and potentially what to contribute are super important.
Below are some examples of exactly what to look for:
Well-written README about the project and setup.
Documentation makes any contributors life much easier. We can see below that Gatsby’s readme is clear and concise. Someone visiting looking at getting involved with Open Source can understand what the project does, what problem they are trying to solve and all of the necessary information is displayed at first glance.We can see in the “Whats in this document” section in the example below which links to parts of the document for easy access, there is a “How to Contribute” link to help people get started.
notion image
Guides and expectations for contributions.
One of the most intimidating parts of contributing to Open Source is the worry of doing something wrong. Guides and expectations on how to contribute to a certain project help to eliminate some of this worry and the contributor will be provided with a clearer understanding of exactly how to help and what they can do to help. If you are a beginner, I would strongly recommend finding projects that have good guidelines like this.
We can see from our Gatsby example, clicking on “How to Contribute” takes you to part of the projects website that has extensive documentation detailing all of the necessary information to get going.
notion image
Well-labeled issues (“good first issue”).
All GitHub projects will have what are called “issues” and these can be submitted by project maintainers to give details on a new feature or raising a new bug as well as users of the project that have run into a problem during use that they want to flag. These are a good way to get started on projects, because they are presenting you with a very specific problem in which you can investigate and fix rather than creating new features from scratch.
GitHub has a label called “good first issue” which are given to issues that are friendly for beginners to a project. Shown below:
notion image
Again, GitHub makes it possible to filter all the issues in a project to display a specific label. I have filtered the issues in Gatsby that have the good first issue label. As you can see above, there are documentation issues here as well as some code related fixes and these are all open for me to contribute to and get involved with the project.
It makes your life easier, as a contributor, to work with a project that keeps these issues updated as at a glance you can see which issues are good to get started on. Other labels worth looking out for are “effort: low”, “beginners” and “beginner friendly”.

Find a project that has an active community.

Many projects will have a Slack/Discord/Spectrum channel where people are welcome to ask questions or seek guidance. These are a great way of getting closer to the community behind the project as well as building your professional network.
Often in these communities there are discussions of new features that you can be part of and get involved with from an early stage.

Other useful resources

As well as manually looking over GitHub for projects, here are a few websites that help beginners find good first-timer contribution projects:

© James Bedford 2021