How to choose (and contribute to) your first open source project
Your first contribution can be daunting. It’s a lot like walking into a room full of strangers, most of whom seem to know each other. You don’t know the inside jokes—or the outside ones, for that matter. They refer to pop culture that you’ve never heard of. You don’t know, walking up to a huddle of humans, if someone is going to step slightly to the side to let you into their conversation. Maybe they’ll give you a dirty look. They’ll tell you that you’re wearing the wrong jeans. Your eyes are the wrong color. You pronounce gif wrong.
And it’s not just making your first pull request. Even opening an issue can be intimidating. Is the thing you ran into a real problem? Maybe they’ll tell you you’re stupid because—duh—you should have frobbed the whatsit.
As the maintainer of Exercism, I’ve seen thousands of people get started in new programming languages, give and receive feedback about code, and start contributing to open source projects. Your first contribution can be scary, but with the right guidance, I’m confident you’ll love being a part of the open source community as much as I do.
Here are some resources I’ve picked out to help you choose the right first project and make impactful contributions as you grow your skills.
Start with a project you use
The best way to begin contributing is to start with open source projects you already use.
There are a few benefits to starting with a project you depend on:
- You’re more familiar with what the project does and how it works
- You’re more invested in the project’s improvements and outcomes
- You have an ongoing relationship with the project, so you’re more likely to keep coming back
Think about your favorite library, module, plugin, or tool. Look through the list of dependencies for your work projects or side projects. Find the repository and browse through the code, the documentation, and the open issues to get a feel for what that project is like.
You don’t have to go for the biggest, most impressive open source project you can think of. A smaller project can sometimes be easier to wrap your head around, and the maintainers might appreciate your contribution even more since they get fewer contributions overall.
There’s no way of knowing up front whether a project is going to accept your contribution, but there are two things you can do to increase your chances of having a good first experience.
The first is to look for signs that the project welcomes contributions, and the second is to figure out what they look for in a contribution.
Evaluate the project
You can get a pretty good gut feeling about whether or not you want to get involved by looking at two things: activity and communication style.
Take a look at the list of commits. Are there recent commits? How frequent are they? Are the commits mostly from one person or are there several people involved?
Now look through some issues. Start with the open ones. How many are there? Are there any new ones? Are there very old ones? Do they have responses from maintainers? Are there any lively discussions? Click through to the closed issues. Did they close anything recently?
Then do the same for pull requests.
This is not an exact science, and you’re not looking for any specific numbers. If there’s not a lot of activity, it might still be a great project to contribute to. It might just be a mature, stable project that doesn’t change a lot. But if there are a lot of issues and pull requests that have been open for a long time without a response from maintainers, that can be a red flag.
Next, look at the conversations in both open and closed issues and pull requests. Sort by “most commented”. Get a feel for how people communicate. Are the conversations friendly? Do they handle disagreements respectfully? Do the maintainers show appreciation for contributions?
Some maintainers make sure new contributors feel welcome and appreciated with friendly messages or emojis.
Take time to read through old issues or mailing list archives, lurk on their Slack or IRC channel if they have one, and gather information about how the project works. Get a good feel for the project’s community and whether you’ll enjoy spending time with the people involved.
When I first heard about Babel, I got really excited about the ways it could improve the development experience. I followed Dan Abramov's advice: "watching" (really lurking on!) the GitHub repo to try to get more context into the project and its issues. I made my first Babel pull request on March 2, 2015.
Dip your toes in
Once you’ve found a project you want to contribute to, look through the README. The README may point to the project’s contributing guide—often named CONTRIBUTING.md. If there’s no link to it from the README, you can look for the file directly.
There’s no standard for what people put in these files; however there’s a good chance that they’ll say something about what types of contributions the project is looking for.
Another place to look for areas that the project wants help with is to click on the “Issues” tab and look for issues labeled “help wanted” or “good first issue”.
Don’t feel rushed to open an issue or pull request.
When you feel ready to make a contribution, it’s best to start small. Smaller contributions help the project’s maintainers get to know you better, and they’re more likely to be accepted over a major feature change or development.
One of the most appreciated ways to start contributing is to help triage issues. When new bug reports come in, see if you can reproduce the behavior and then comment with your findings.
If you’ve been lurking, you’ll start noticing duplicate issues, and issues that got fixed but never got closed. People will ask questions that you know the answer to. You can point them to the documentation. Or if it’s undocumented, you can submit a suggested fix to the documentation.
I decided to start curating email digests for the group. They gave me a great excuse to ask for clarifications about a topic, but more critically I was able to notice when someone pointed out something that needed fixing.
Documentation can be some of the easiest—and some of the hardest—contributions to make. There’s low-hanging fruit in the form of typos or grammatical errors. Another documentation change that is often within reach is reworking a section to improve the clarity and flow, or updating documentation to add a corner case you’ve run into. More challenging documentation fixes often involve restructuring things or writing guides from the ground up.
The best part about starting with triage and documentation is that you’ll start seeing small changes that you can contribute.
Learn how others did it
If you’ve always wanted to make your first contribution but are feeling nervous, you're not alone. Even professional software developers can find open source intimidating because it involves collaboration with people you’ve never met.
Read about others’ experiences to reduce the intimidation factor. From professional software developers to those just getting started, everybody has a story about their first contribution:
- A Beginner’s Very Bumpy Journey Through The World of Open Source
- Lessons from my First Open Source Contribution
- Open Source: 9 steps to my first feature contribution in Babel
- Figuring out how to contribute to open source
Find an unfamiliar, welcoming project
While it’s easiest to start with a project you already use—if you're looking for projects or ideas for contributing that you may not have thought of, these resources can help you with discovery:
- Your First PR
- Up for Grabs: Projects which have curated tasks specifically for new contributors
- CodeTriage: Help out your favorite open source projects and become a better developer while doing it.
If you’re looking for examples of projects that are particularly friendly to new contributors, check out these communities. They have great documentation and a welcoming atmosphere:
Get comfortable with the mechanics
You may feel more confident contributing to open source when you don’t feel intimidated by the process. Here are a few resources to help you get started:
- How to Contribute to Open Source
- Make a Pull Request
- Patchwork: Casual, mentored workshops for beginners to Git and GitHub.
There are also a number of organizations to help you with the fundamentals of Git, GitHub, and contributing to open source.
Make it a habit
Everyone was new once. Your first open source contribution might take some time to figure out, but it doesn't have to end there. Contributing regularly can be a great investment in yourself and your community. These programs can help you stay motivated and make open source into a habit: