Getting Started in Open Source Software

Updated: May 26, 2020

Lessons learned from a first-time open source contributor

by Adam Lewis.

Being relatively new to the process of contributing to Open Source Software (OSS), I thought it would be helpful to others who are considering becoming contributors to share my experiences. This article will provide insight on why you might want to contribute, what you might expect the process to be like, and how you can make your first contribution.

Why Contribute?

Contributing to open source is rewarding in a variety of ways. For many people, there is a sense of satisfaction in creating something useful and sharing it with others. But there are less altruistic reasons to contribute to OSS as well, and the motivation doesn’t diminish the value of the contribution. Fixing a bug or adding a feature that would benefit a library you are currently using can be a way to add functionality that you need, while also providing value to the broader community. Additionally, contributing to OSS can signal your level of expertise with a library. With regular, significant contributions over time, you can establish yourself as an expert with a library, and perhaps become a part of the formal governance structure as a core developer, maintainer, etc. All or nearly all major companies rely on open source software, and many of them employ developers of open source projects they care about.

Determining Where and What to Contribute

For those seeking to contribute to open source for the first time, there are a few strategies which can help you get the most out of contributing. First, choose a well-established project that you already use. By choosing a package that you already use, you’ll jump start your ability to contribute. Learning a new code base is not trivial, and the insight from having used a library previously is valuable when jumping in for the first time. By choosing a library you’re familiar with, you’ll be able to contribute more effectively with less effort. You’ll also improve your mastery of a library that you already use.

Contributing to well established projects as a first-time contributor is useful as well-established projects tend to have better documentation on how and where to contribute. These documents make it easier for you to be effective. Search around for something along the lines of “Development Guidelines” within the project’s website and/or repository. This documentation will contain code style standards, channels of communication to communicate with the project’s other developers, best practices, etc. If you want your contribution to get accepted, you’ll need to follow these guidelines.

As far as determining what to contribute, if you have a feature you’d like to add or bug you’d like to fix, then open an issue, and get some feedback from the maintainers. For feature requests, other developers will help determine if the feature is within the scope of the project, and possibly give guidance on how it might be implemented. If you aren’t sure what you’d like to commit, check out the project’s issues. This is a list of fixes and enhancements that the community has identified. Many well-established projects have specific labels such as “good first issue” which have been identified by the core developers as an approachable issue to start with.

Making the Contribution

When you’ve found what you’d like to contribute, the next steps are to fork the repository, make your changes, and then submit a pull request. This article doesn’t cover the mechanics of those steps. If you haven’t done them before, then a quick Google or YouTube search will fill you in. There a few things to keep in mind as you make your contribution.