Skip to content
GitHub Copilot is now available for free. Learn more

Make your first open source contribution in four easy steps

A beginner's guide to making an impact with open source contributions.

Artwork: Susan Haejin Lee

Photo of Ruth Ikegah
 logo

Ruth Ikegah // Open Source Program Manager,

The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.

Because of my role as an open source program manager and community lead, people often ask me what open source is and how they can make their first contribution. While open source is extremely commonplace—according to GitHub's 2022 Octoverse report, 90% of companies use open source—confusion about what it means and how to get involved is just as common. So let’s answer the question that brought you here: How do you fit in all this?


In this guide, you will learn: 

  1. What is open source software?

  2. The benefits of contributing to open source.

  3. How to make your first open source contribution.

  4. How to balance quality vs. quantity.


What is open source software?

To qualify as open source, a software's source code must not only be made available to users, but licensed in a way that permits anyone to modify and redistribute it.

To make this definition more understandable, let’s look to operating systems as an example. If you own a computer, you might have used either Linux or Microsoft Windows. Linux is open source software, while Microsoft Windows is proprietary software. Unless you work on the Windows team at Microsoft, you can’t view or contribute to its codebase. On the other hand, the Linux kernel codebase is publicly accessible, and you can contribute and even redistribute it. That's why numerous Linux distributions thrive: each leverages the kernel and the broader ecosystem to create a distinct iteration of open source operating systems.

The benefits of contributing to open source

Improve your skill set (technical and non-technical) 

Fueled by collaboration, an open source community includes people at different levels in their careers: beginner, intermediate, and advanced. There are opportunities for everyone to contribute, no matter where you are in your journey, so don’t let your “lack” of skills or experience hold you back. Contributing to open source is an amazing opportunity to learn about new tools, technologies, and software best practices, whether you’re fixing bugs, writing tests, or expanding a project’s documentation. 

When it comes to making mistakes, there’s nothing to worry about there, either. Open source has a built-in feedback loop: Every time you submit a pull request or contribute to a project, it goes through a review system that allows you to get feedback from the maintainers and improve your work. 

Expand and grow your network

Networking is a valuable asset for career progression, and contributing to open source connects you with people and organizations from across the globe. Working alongside the caliber of people involved in these communities brings opportunities your way, from simple recommendations to new job opportunities. 

Build a public portfolio

Many organizations rely on open source, which means you’re part of something big when you contribute. Every contribution helps you gain real-life experience and demonstrate your skills publicly, which is essential early on in your career. Your contributions, including feature enhancements and product modifications, serve as valuable evidence of your skills and expertise, bolstering your resume.

Direct compensation

While contributing your resources to open source is fantastic, you can also get paid to contribute through internships like the GitHub octernship, and receive compensation for your work via GitHub Sponsors. Did I mention the swag? From branded t-shirts and hoodies to stickers for your gear, the perks can be really fun. 

How to make your first open source contribution

So, what sorts of contributions can you make? A common misconception about open source is that it’s all about code contributions, but non-code contributions are just as important. These include graphic design, project/program management, testing, bug reports, release management, documentation, marketing, community management, public relations, and outreach. 

And I can’t stress this enough: You can start regardless of your current skill level. There are plenty of opportunities for beginners.

Getting started

Note that we will be using GitHub for this guide; you can quickly create an account if you don't already have one.

Step 1: Analyze what you have to offer and decide how you want to contribute. When I started contributing to open source, I focused on code contributions and documentation improvements. It's perfectly okay for your contributions to take different shapes over time, but consistency is key. Showing up day after day for a community is a great way to separate yourself from the all too common drive-thru contributors.

Step 2: Look for projects. It can be less intimidating to start with a project that you already use, or are otherwise familiar with, because you understand the project’s scope and priorities. But you can also search for projects related to your skillset using the explore and topics pages on GitHub.

Arrow pointing to the explore tab as a logged in user on github.com. Arrow pointing to the topics tab as a logged in user on github.com.

Step 3: Get acquainted with the project’s standards and files. Some important files to read before you make your first contribution include:

  • README.md: The README file should be your first stop, and serves as a project’s landing page. It will contain information regarding project goals, why it exists, how to get started, and links to additional information.

  • contributing.md file: This contains information about what contributions the project’s maintainers are looking for and the process for submitting changes or getting involved. 

  • Code of Conduct file (CoC): The CoC contains guidelines for how you should interact in the community. It lists unacceptable behaviors and how you can report them, and often the sorts of positive behaviors the maintainers encourage. I love when projects include a CoC: It signals to me that the maintainers welcome diverse perspectives and proactively encourage engagement.

  • license.txt: This file will indicate which open source license a project follows, and usually contains the full text of the license, which outlines how people can use, modify, and enhance the software. If a project lacks a license, it isn’t technically open source. Perhaps your first contribution could be suggesting a license!

Step 4: After doing your research and understanding the project, start contributing. A good place to start is a project’s Issues tab. As you scan through the open issues, keep an eye out for ones tagged “good first issue” or “help wanted.” 

Pick one you want to help with and then indicate your interest by responding to the issue, participating in the project’s chat, or however the maintainers indicate they prefer to communicate. 

Bug reports are another valuable form of contribution. Instead of looking for existing issues to resolve, you can explore a project and its documentation and report any problems you find. This is a contribution in and of itself. Even if you plan to fix the problems you found yourself, many projects prefer that you file an issue first.

Sometimes, you might not find issues that fit your skillset, and that’s fine. You can join the project's community, such as a chat room or forum, and ask questions about how you can contribute. Open source folks are generally very nice people; you will get the help you need. If you happen upon an unwelcoming community, move on. You’ll find another one that will appreciate your talents. You can also keep an eye out for questions from other people. Answering questions and providing support within a community is one of the most valuable ways to contribute to open source and a good way to get involved.

With these four steps, you are ready to be an open source contributor! It's important to keep in mind that contributing to open source requires intentionality and patience. Due to time zone differences, there can be a delay in responses, but you shouldn't let that stop you from contributing. I advise many beginners to take part in synchronous meetings if they get the chance, as they are a great opportunity to connect with the project's community.

Quality over quantity: Striking a balance

Open source contributions can be incredibly engaging—to the point where it becomes easy to develop an interest in frivolous pursuits or vanity metrics that don’t contribute any real value. When you first start contributing, always focus on making minor changes. After you get your feet under you, keep an eye out for low-lift issues you can fix and continue to learn more about the project as you move up the ladder.

Now that you know what it means to contribute to open source, I have a task for you: Make a contribution to the First Contributions repository on GitHub. This popular repository helps beginners make their first contribution, and all you have to do is add your name. Remember to follow the instructions on the README file. 

Feel free to tweet me @ikegahruth on Twitter when you complete this exercise; I will be excited to congratulate you on your first contribution to open source! 

I’ll leave you with a few awesome resources to learn more:

Ruth Ikegah is an open source program manager, technical writer, GitHub Star, and public speaker. Currently, she’s working as an open source consultant at Bitgeria, and serves as the Community Lead for CHAOSS Africa. Ruth is passionate about encouraging people to embrace open source and contribute their skills to the ever-evolving landscape of technology. She’s an avid reader, an enthusiastic traveler, and a lover of all things art and culture. 

About The
ReadME Project

Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.

The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.

Follow us:

Nominate a developer

Nominate inspiring developers and projects you think we should feature in The ReadME Project.

Support the community

Recognize developers working behind the scenes and help open source projects get the resources they need.

Thank you! for subscribing