I often get asked about how to find Open Source projects to contribute to. In this post, I’ll show you where you can find these projects. You can use these tips and adjust your search depending on what you are looking for in terms of the type of project you want to contribute to, the skills you want to practice, or the cause you want to support.
If you’re a developer, most likely you have encountered libraries, frameworks, or programming languages that are open source. In case you use packages from NPM in your projects, you can find on the package page the link to the project's source code. Take the example of the react-kawai package which points to the miukimiu/react-kawaii GitHub repository. Same works for Python packages from PyPI. Take as an example fastapi package that points to tiangolo/fastapi GitHub repository.
Some programming languages are developed in the open source community, where you can look up the source code, pull requests, and discussions around it. An example of this is Python language where you can see pull requests being merged into the source code.
Here are a few random projects I’ve used before which are open source:
- fastapi, a web framework for building APIs with Python;
- python, the programming language;
- scala-exercises, website to learn how to code in Scala;
- flask-jwt-extended, Flask extension that provides JSON Web Tokens (JWT) support;
- forem, software for building communities which powers dev.to;
- jogo-das-profissoes, a Portuguese web-based memory game for children to learn about different professions;
- Zulip, a team collaboration tool that can be used for open source discussion forums.
You can look at the issue tracker of the projects’ source repositories and see if there are any issues you can work on.
Interacting with a project as an end-user gives you a great perspective to detect bugs or desirable features that other users of the project appreciate. So you can even open an issue to report a bug or suggest a change to the project, which if validated you can potentially be the one solving it. Keep in mind that reporting useful issues is already an open source contribution.
Now, I want to highlight that you may use a project in another role other than as a developer. For example, if you are using an end-user application (using a real-time chat app, like Zulip, to communicate with other people). You can still find the project source code repository, and contribute in many ways.
The way I got started with open source was via an initiative to incentivize people to contribute during December, 24 Pull Requests. I decided to make a first small contribution using Markdown, which you can check out at FrancesCoronel/hire-me/pull/9 on GitHub.
Later, I participated in another program called Google Summer of Code (GSoC), which helped me learn a lot about contributing to open source. Participating in these programs, was the way I got involved with open source.
For Hacktoberfest, you can find these projects mostly during October. Projects and issues participating will have the “Hacktoberfest” label. For 24 Pull Requests, you can find projects listed on the page while the program is active in December.
What I usually suggest with regards to finding open source projects, is to look into organizations that have been participating in Google Summer of Code and Outreachy. Projects and organizations that participate in these programs tend to have a structure and clear guidelines on what work is available to be done so that the organization is prepared to receive participants and mentors during the program.
On the GSoC website, you can find recognizable names in the open source world, but also other organizations which were still eligible to participate. You can find organizations with very different types of projects, for example, projects related to hardware, applications for supporting social causes, developer tooling, security, etc… To get an idea, take a look at past accepted organizations that participated in GSoC this year or in 2021, 2020, 2019, 2018, and so on.
Sometimes you might also find repositories that contain only informational content, and some, in particular, will have a compilation of projects. For projects in the Portuguese community, there’s a nice collection of Portuguese open source projects at the OldMetalmind/PortugueseOpenSourceProjects GitHub repository.
Additionally, you can find sometimes posts on the dev.to community where maintainers may be promoting their open source projects and specifically asking for contributors.
Another tool that can be useful to know, is the GitHub Explore feature that can highlight projects that can suit your skills. You can find projects grouped in collections or topics, or that are trending.
Topics are like tags, which can be useful to find projects related to a specific tool, programming language, or type of project. Topics are usually explicitly set on a repository by the maintainer. During Hacktoberfest maintainers will add the Hacktoberfest topic to their projects to indicate they’re participating in the event. As an example, to find repositories with the Python topic you can go to github.com/topics/python.
Be aware that once you find a project you’d like to contribute to, it’s possible the project is no longer being actively maintained. So even if you wish to contribute directly to it, there may be no maintainers to accept your contribution.
To understand if a project is active, check if there are recent conversations in issues and pull requests or commits to the main default branch. You can also look for any notice of the project no longer being maintained. Maintainers tend to leave a statement in the README or an issue, or even archive the repository if they are no longer maintaining the project.
When you decide which project to contribute to, make sure to read the Contribution Guidelines and Code of Conduct to interact with the project, the maintainer, and the project’s community in the way that is expected. This will make both your life as a contributor and the maintainer’s life easier. Also look for beginner-friendly labels, such as, “Good First Issue” or “First Timers Only” that are meant to help people find the first issues to contribute.
Another piece of advice I have is, that if you are just starting to contribute to open source, it can be easier to contribute to less popular projects, that may have less noise around issues and pull requests and the maintainer may be able to give you more attention. In any case, you can still look at popular projects that could have issues with the beginner-friendly labels I mentioned above. Although because of its popularity, it can be hard to contribute.
Know that you can find an open source in a lot of places such as GitHub, and GitLab, however for certain projects, the organizations that maintain it keep the source code hosted using their infrastructure. An example of this is the Android open source project which you can find here.
I hope this helped give you an idea of how to find open source projects! Often when I contribute to projects that I’m not the maintainer of, it’s because I stumbled on a problem in a project, that I knew how to solve and noticed no one had reported yet.