For any developer early in their career, contributing to open-source software may seem quite daunting. Maybe you have never worked on a project with other developers, or maybe you don't think you have the skills to meaningfully contribute.
Last year was my first year contributing to open-source software, and I definitely felt both of these things before I began. Despite my apprehension, I managed to make contributions and wanted to let you know that you can do it too!
If you are interested in open-source and are experiencing similar apprehensions, read on for suggestions on how you can get started.
⌛ TL;DR
- Even as a beginner, you can make a meaningful contribution to open-source software!
- There are more ways to contribute than just code.
- Thoroughly documented projects with clearly labeled issues and a Code of Conduct are good signs of a project that is welcoming for beginners.
- When contributing, read documentation thoroughly to understand expectations for code contributions, PRs, etc.
- You are great simply by trying!
Assumptions about the reader:
This write-up assumes that you are familiar with a version control system like git and that you understand what open-source is. If you are not familiar with one or both of these things, here are some good resources to start with:
Remember that there are more ways to contribute than just code!
A common misconception about open-source software is that in order to contribute, you need to know how to write code. This is NOT true. Open-source projects involve a myriad of tasks, including (but not limited to) issue-tracking and labeling, UX design, and documentation- which often gets overlooked, according to this study.
If you don’t feel comfortable contributing by writing code, you can look into some of these other ways to help with the project instead!
It’s also worth noting that being new to a project can be an asset. As someone with fresh eyes, you can more easily identify bugs in the codebase or gaps in the documentation that someone more familiar with the project might not notice.
For example, you can try getting the project running locally with the current documentation to instruct you. If you find that you run into any problems that aren’t addressed in the documentation, you can make a pull request to update it for others who might encounter a similar issue.
Find a suitable project
Picking an open-source project suitable to you can depend on many things, and is ultimately a personal choice; but as a first-time contributor, here are some of the ways you can narrow down which projects might be best to start with.
Seek out projects with well-labeled issues and thorough documentation
As someone new to open-source, seeking out well-documented projects or projects that have active communication channels where new contributors are welcome to ask questions is definitely beneficial. Some green-flags you can look for include:
- Thorough README about the project and setup.
- Wiki pages or resources on expectations for contributions.
- A code of conduct.
- Well-labeled issues (especially ones labeled “beginner” or “beginner-friendly”).
- A Slack channel or equivalent communication forum where people are welcome to ask questions or seek guidance.
Decide based on language / tech-stack
If you have been working in a particular language or framework and would like to find projects utilizing those, you can use websites like CodeTriage to find projects filtered by your selection.
Choose projects based on your interests
Another consideration is picking a project that resonates with you based on your interests or values. Perhaps you enjoy games and want to contribute to an open-source game, or you found a library that was really useful to you and want to contribute as a token of your gratitude. Especially considering that your contributions will often be done in your own free time, picking a project that you really care about can be more motivating and a more fulfilling use of that time.
Resources to find an open-source project to work on
Here are a few websites that help beginners find good first-timer contribution projects:
- https://github.com/MunGell/awesome-for-beginners
- https://www.firsttimersonly.com/
- http://up-for-grabs.net/#/
- https://firstcontributions.github.io/
Make your first contribution
Once you’ve identified which project you want to work on, the next step is to determine how you want to contribute.
Identifying a Way to Contribute
As mentioned earlier, one way you can contribute is to update missing or improper documentation you come across while setting up the project.
Additionally, you can refer to the list of existing “issues” on the project and pick an open one. Keep in mind that just because an issue has already been claimed does not mean it’s unavailable to be worked on.
For example, you may come across an issue that has been claimed by an owner, but the owner has not worked on it for a long time. You can consider reaching out to them and asking if you could take over ownership of the issue.
In another scenario, you may come across an issue someone has already started solving, but you’re interested in it, too. Likewise, you can consider reaching out to them and seeing if you can work on it together!
Submitting a Pull Request
After picking your piece to work on and solving it- whether it’s code, documentation or something else- you’ll submit a pull request (PR) to have your changes reviewed.
Before submitting, however, there are a few things you should check:
- Ensure you are following the guidelines (if any) for submitting PRs.
- If contributing code, ensure your code doesn’t break any existing tests.
- If contributing code, ensure your code is tested (if necessary/applicable).
- Ensure your branch has no merge conflicts.
Moreover, it’s important to remember that you are not your contribution, and any suggestions on ways to improve it are not reflective of your worth or value as a human or contributor!
Celebrate!
Last but not least, regardless of whether or not your pull request gets approved and merged, you deserve to pat yourself on the back and feel proud of yourself for attempting to make your first open-source contribution! 🎉
A Word About the Cover Image
Did you know that beavers are communal creatures? They work together to build their dams and food caches! Since this article is about open-source, I thought an illustration of beavers was an appropriate to include in this text.
Thank you to Jennifer Tran (@botanical), for the artwork!
Top comments (20)
Great read! I would also add that working on lesser known projects is often a good way to get started.
For example: making meaningful code contributions for a well known project like Vue might be more difficult than making code contributions to a small/highly-specialized npm package that you rely on.
That's a really great point, thanks for bringing that up!
This is a very good little article. It's really interesting to me (open source contributor for >10 years) to see how much the game has changed -- in particular, most things in the list of "green flags" definitely didn't exist back when I got started! I mean, I know the game has changed, but seeing it written down is nice.
I also appreciated that you noted "that being new to a project can be an asset." This is important! The best people behind the best projects understand this point well.
Wow, that's amazing you've been contributing to OSS that long!
It's interesting to hear how those things didn't exist back then and makes me all the more grateful that they do now (at least for some projects!)
Another good way to contribute to open source is to create your own project!
Up here in Canada Beavers own the forests. You don't want to mess with them.
That made me LOL 😂
Duly noted. When I finally manage to visit Canada one day, I will definitely be avoiding these beaver-ridden forests!
Janessa, thank you so much for this valuable information! Starting out can be a bit intimidating for a beginner, just like me. Another concern of mine is that you might accidentally mess up if you contribute to a project. Through your article, the whole picture has become clearer. Many thanks!
Great read! Here is one great open-source you can start from quicksi-bot.now.sh/
It's a tool that help developers start new projects quickly and easily without having to worry about the setup.
This is great article!
Could I translate the article into Japanese and publish it on Japanese knowledge community Qiita?
qiita.com/
I will indicate the link to original, title, author name in the translated article.
And I will share the translated article.
Great article! I just started learning to code in February of this year and I've been looking for ways to start contributing to projects that aren't my own. I had considered open source and had been on the slack channels for a couple projects, but they seemed so cut and dry that it was a bit overwhelming. The instructions you provided here for finding a suitable project, as well as the resources for actually finding them are going to be a huge leg up for me. Thank you!
Also, great interview on Code Newbie!
Thank you, Jacob! I am glad you find this information useful! It definitely can seem overwhelming at first, but I also think there is definitely value to early career devs contributing and I'm really happy to hear you're looking into it! Good luck, you totally got this!!!
Nice one
Wonderfull article, thx for that Janessa ;)
Thank you for reading! :)