Contributing to Open Source: A Guide on Where and How to Get Started
Today, open source software is everywhere – from Linux-based servers, to Android smartphones, to the Firefox Web browser, to name just a handful of open source platforms in widespread use today.
But the open source code that makes the world spin doesn't write itself. It's developed by open source contributors – including, potentially, you. If you're passionate about helping to grow an open source tool or application, or you want to gain some valuable coding experience that you can show off to prospective employers, helping to develop open source may be an obvious thing to do.
What's less obvious if you're new to the world of open source, however, is where to start when contributing to an open source project. That's what we explain in this article, which draws on our extensive experience engaging with a dynamic community of awesome open source coders who write the software that helps power BindPlane.
Understanding open source projects
Let's start with the basics by explaining what, exactly, open source means and what a typical open source project entails.
Open source is software whose source code is publicly available.
When software is open source, anyone can download, inspect and, in most cases, modify its code. This makes it different from closed source or proprietary software, which is usually released in the form of binaries – meaning source code is not publicly available.
Importantly, open source software isn't necessarily free of cost. It often is, but most open source licenses don't prohibit projects from charging fees to download or use their code. They just require the source code to be available to the public.
To make their code available, most open source projects today host it on a platform like GitHub or GitLab, where anyone can view it. In addition to storing a project's source code, these platforms also typically host a few other core resources, including:
- A README file, which describes how to compile and install the software.
- A CONTRIBUTING.md file, which includes guidelines on how to become a contributor to the project.
- A Code of Conduct statement, which establishes ethical guidelines for contributors to follow.
Some projects include other resources, too, such as documentation about how to use software.
Why contribute to open source?
There are two basic reasons to contribute to open source.
The first involves a selfless impulse to give back by helping to develop software that you yourself use and love. If you've benefited from code written and freely shared by others, you might opt to pay it forward by sharing contributions of your own.
The second reason to contribute – which is not necessarily selfish, but is perhaps a bit more self-centered – is to advance your career. If you're new to coding, contributing to open source is a great way to gain real-world experience that you can show off when applying to jobs. In addition, being an open source contributor may help you network by getting to know other programmers, which could also open career opportunities.
Whatever your motivation, most open source projects will be happy to have you as a contributor as long as you follow their guidelines and write valuable code.
Prerequisites for contributing
To write valuable code, of course, you need at least basic programming skills. This doesn't mean you need to be a 1337 hacker (that's leetspeak for "great programmer," in case it's not clear), but it does mean you should have some coding experience. If you're totally new to programming, it's advisable to develop an app or two of your own before writing code that you hope an open source project will accept.
You'll also need familiarity with the tools that open source projects use to manage code. Most projects today use Git. Git helps multiple developers work on the same codebase simultaneously by automatically helping to keep code in sync and avoid conflicts. It also provides version control features, which make it possible to track how code changes over time and revert to an earlier version if desired. Git can even be used to automate workflows using a technique called GitOps, but that's a topic for another day.
A point of clarification: Don't confuse Git with GitHub or GitLab. The latter are platforms that combine Git with other tooling to enable convenient management of software projects through a Web interface. Git itself is a command-line tool that can be used separately from GitHub or GitLab.
Finding the right open source project
Once you've confirmed that you have the prerequisite skills to contribute to open source, you'll want to find a project to contribute to.
If there's a project you're passionate about because you use its software or believe in its mission, it's an obvious good candidate to consider. If not, you can browse projects on GitHub or GitLab. Sites like goodfirstissue.dev, which offers a curated list of open source projects, may also lead you to a project that fits well with your skills and goals.
As you assess projects, think not just about what the project does, but also which technologies it uses. For instance, do you know the programming language or languages it uses? If the application it develops uses a microservices architecture, are you familiar with that approach to application design?
Check as well how active the project is. If a project hasn't seen any new code contributions in months or years, it's likely that its developers have abandoned it, and that any contributions you attempt to make will never be reviewed. In that case, you could fork the project to revive it, but taking over someone else's project can be a tough task; you probably shouldn't do it until you've gained some experience working within open source communities.
Getting ready to contribute
Once you've found a project, read its contribution guidelines, if they exist, to learn how the developers expect you to contribute code. The guidelines might explain how to set up a development environment on your computer that is compatible with the project's tools, for example.
Smaller projects may not have contribution guidelines, in which case looking at past contributions (which you can typically track through Git) is your best bet for getting a sense of how programmers contribute to the project. The project may also have a mailing list where you can ask about contributing – but be sure you've read through the project's resources first so you don't ask questions answered elsewhere.
Making your first contribution
When you're finally ready to make your first contribution, start by deciding what, exactly, to contribute. In most cases, it's wise to look for a request from the project, rather than developing an unsolicited feature or enhancement. Many projects describe goals using tools like GitHub Issues, so check there to see if there are specific requests you can work on.
After writing the code to implement the contribution, submit a pull request. This is a formal notification to the project that you'd like it to integrate your code. As a best practice, include notes with your pull request explaining what the change does.
What happens after your first contribution
Open source projects have varying processes for reviewing pull requests, and some approach them in a more systematic or standardized way than others. In general, however, expect that existing contributors to the project will review your pull request, a process that could take anywhere from mere hours to weeks, depending on how time the developers have to devote to the project and how complex your code is.
The project may accept the contribution outright. If not, the developers will ideally provide feedback and identify changes they'd like you to make to improve your code. If not, though, don't take it personally or as a sign that the project doesn't want you to contribute. Most open source projects are volunteer-run and code reviewers don't always have time to offer feedback. If your pull request was rejected without comment, consider assessing your code yourself to determine why it might not have made
When your code is accepted – which we hope it will be – the project's developers will merge it into their codebase. This means your code has become an integral part of the open source application or platform – and that you should celebrate your success in making your first successful open source contribution!
Continuing contributions and staying involved
Making a first contribution to open source is great. What's even better is continuing to make contributions over time. The lifeblood of most projects is contributors who stick around for years and get to know the technology and culture in depth.
Staying involved with a project can be as simple as continuing to make pull requests. But if you want to level up your engagement, consider applying for a leadership role, such as one where you help review code from others or plan the project's future direction. The process for becoming a leader varies because projects have different governance structures, but in many cases, you'll qualify once you have made a certain number of successful pull requests.
Get started with open source!
To the uninitiated, becoming an open source contributor can feel daunting. But once you familiarize yourself with some basic concepts and practices, it's really not all that hard.
We would know. At ObservIQ, open source is at the core of our approach to observability, which is why we maintain dozens of GitHub repositories where anyone can contribute to the code behind our monitoring and observability tools. It's also why our platform is powered by OpenTelemetry, the open source, community-developed standard for collecting telemetry data.
If you're as passionate about open source as we are – and/or if you want some hands-on experience building software that plays a critical role in helping businesses around the world manage software performance – we'd love to work with you as an open source contributor. To find out whether one of our projects could be a fit, learn what our solution, BindPlane, is all about. Questions? Join our Slack community and chat with one of our developers.