Contributing to Open Source for Beginners
Contributing to open source can be an enjoyable and fulfilling way to spend your time. If you've not contributed before it can be daunting - in this article I am going to cover some things that did help (or would have helped) me get over that initial hurdle.
You probably already have an idea in mind about what project(s) you would like to contribute to. If not, think about what libraries, frameworks, applications, etc you use frequently and interest you.
One problem I had before I started contributing properly to open source was I was only really keeping an eye on the issues for huge projects I was interested in such as React.
Whilst it is possible to jump straight in on a large project I would not personally recommend it. At the time of writing, React has 654 open issues, 234 open pull requests and 1,341 contributors. Contributing to such a large project early doors could prove to be an overwhelming experience.
Instead, find a smaller scale project that you find interesting so you can get your feet off the ground.
For me, because I do a lot of work with React and have an interest in accessible technology, I decided to contribute to Reach UI. At the time of writing, Reach UI currently has 46 open issues and 11 open pull requests, so enough issues/pull requests to get involved, but not so many you feel overwhelmed by it.
Whatever project you choose, a great starting point is to check out whether they have any labels set up for people who are new to the project. Typically the label is called something along the lines of 'good first issue' or 'beginner friendly'.
Contributing is more than code
There are a whole host of ways you can contribute to projects.
For example, you can:
- Contribute code by fixing a bug or adding a requested feature.
- Improve documentation by fixing mistakes, increasing clarity and providing examples.
- Help by reporting issues you've experienced.
- Provide an additional set of eyes on pull requests by leaving a review.
- Increase the project's test coverage.
- Help maintain or provide TypeScript types.
As you can see from the above, there are a lot of ways to get involved in a project and every contribution you can make is valuable. Don't worry about opening up a small pull request with a few documentation adjustments for example, maintainers are usually very grateful and the readers of that documentation will be too!
Follow contribution guidelines
Most open source libraries contain a
CONTRIBUTING.md file in their repository. This file outlines how to go about contributing, things to take into consideration and, occasionally, rules to follow.
It is always worth your time to take a look through this documentation in advance and familiarising yourself with it.
Follow good contribution etiquette
Open source work is, by its nature, highly collaborative and, as such, it's important to follow good etiquette and be as helpful as possible.
A lot of projects include a
CODE_OF_CONDUCT.md file which is always a good place to start. Familiarise yourself with this before making any changes. If the project you want to contribute to doesn't have one then follow the age-old rule: treat others how you would want to be treated yourself.
As well as following any code of conduct you should also take the time required to fill in any issue or pull request templates set up by the maintainer(s) of the project. Your issue or pull request is likely to be addressed sooner if you provide all of the information requested.
Always be on the lookout
Since I enjoy contributing to open source, I am always on the lookout for things to fix or changes to make. For example, if you're looking at a new library and notice that the documentation is missing an important example or contains a spelling/grammar mistake - go in and fix it, the maintainer will appreciate it!
Similarly, as you continue to use various frameworks and libraries in your projects - if you spot any improvements that could be made or issues that arise then go and report/fix them.
Contributing to open source is a very rewarding experience once you get over that initial hurdle of not knowing where to get started. Hopefully this article has given you some thought points and actionable steps to take.