One of the top questions I get is “How do I find an open-source project to contribute to?” It’s a fair question because there’s a lot of encouragement to contribute, but not a clear path to find the right issue for you. The truth is that maybe you shouldn't be looking for a place to contribute at all. Maybe you need to understand what your real goals are and start by building something you need, understanding open source projects and communities, and approaching contributions with a goal to improve the project rather than improving your resume.
Start by Building Something You Need
When you build something for yourself, you develop a deeper understanding of your own goals, requirements for a project, and how to solve specific problems.
When you're building for yourself, you become more familiar with the complexity of coding, problem-solving, and project management.
Building your own project first also teaches valuable lessons in ownership and responsibility. You learn to see a project through from conception to implementation, and how to approach the challenges that come up along the way. What you learn from this experience will help you approach open source contributions with the right mindset and make informed and thoughtful contributions to projects that benefit their communities.
You'll learn more about how to align your efforts with the needs of the project and its users, which ultimately leads to a more rewarding and effective contribution experience.
Understand Your Skills and Interests
Working on your open projects can help you better understand your skill-level and what you have the ability to take on. It’s so important to understand, in fact, that I wrote a whole post on it: How to Assess Your Skill Level Before Contributing to Open Source.
Once you have a good understanding of your skill level, you can better assess your ability to make meaningful contributions. If you’re a beginner, don’t take on a complicated issue that requires more experience. Likewise, if you are an experienced programmer, don’t take an issue that’s meant for someone in their early career stages.
Use Open Source Software
Scouring the internet for a project to submit a one-off Pull Request (PR) to decreases your connection to the project and your desire to see it be successful. In a recent Open Source Friday Stream with @ladykerr and @bdougieyo, Jan Ainali pointed out that it's "much better [is] to contribute to something you use and where you would like to see an improvement."
When you are invested in a project, you’re more likely to navigate challenges, ask meaningful questions, and to grow and progress. The more you use a product, the better contributor you’ll be, because you have a depth of understanding that helps you identify what’s useful for a project and its community. Using open source software gives you access to opportunities to create bug reports or ask for new features because you understand the project and the user's expectations for the project. Giving feedback is a valuable contribution.
Find an Open Source Community
When you're part of a community, you get access to insider information about the project. Listening in those communities, allows you to engage with the creators of the open source project. This is your opportunity to learn, understand, and grow. You can hear Kelsey Hightower talk about community here. Being involved in the community also gives you the context you need to create meaningful contributions, decreases the barrier to entry, and allows you to understand the type of project and support that you’ll be offered if you contribute to their projects.
When you are involved in a community, you are more likely to be driven by a genuine need to improve the software, which leads to more useful contributions. This mindset shift from self-improvement to community improvement not only benefits the open source project but also helps to create a more collaborative and supportive open source community.
Talk to Other Open Source Contributors
Connecting with other contributors can be an important step in becoming an informed and effective community member. When you engage with them in their communities, follow them on social media, or interact with their content (reading and commenting on their blog posts, watching or commenting on their videos, listening to their podcasts, etc.), you can gain valuable insights into the open source ecosystem and the specific needs of the project. Understanding the pain points and how contributors discuss and address the issues helps you to avoid adding more work for the maintainers and instead becoming a positive force in the project.
Being well-informed about the community dynamics and project challenges means that your contributions are more likely to be meaningful and well-received. It also means you'll be better equipped to offer solutions that align with the project's goals and the community's expectations.
Additionally, tools like StarSearch can help you identify key contributors to projects you're interested in. By finding those with overlapping experience or expertise, you can connect with the right people and build meaningful relationships.
Look for Project Tags and Labels
Once you've created your own projects, used and learned about the project you're interested in contributing to, and joined and participated in the community, you can start looking at the issues to see if they're a good fit for your first contribution. Many open source projects use tags and labels like "good first issue" to indicate tasks that are suitable for beginners. These tags make it easier to find issues that match your skill level and provide a clear entry point for contributing.
Write Your Own Issue
Remember, good first issues don’t exist; the best issue for you is probably the one that you write yourself.
Takeaways
Contributing to open source shouldn't be about checking the box of things to do if you're an early career developer. It should be about making a meaningful contribution to a project that improves the project for all users. This will also go a long way towards making valuable and recognized contributions.