Identify where you can help

Completed

In this unit, we'll discuss how you can get started with open-source contributions. We'll also use issues and tags to find tasks to contribute to.

Open-source software can be freely used, modified, and shared by anyone. Using open-source software, anyone can view, modify, and distribute a project for any purpose. The idea behind open-source software is that sharing code leads to better, more reliable software.

There are many ways to contribute to open-source projects. Making your first contribution can often be a scary experience, but it shouldn't be. Open source is a place for everyone, and contributions happen at all levels.

Find an open-source project that needs contributions

You can get started by thinking about the projects you already use, or want to use. Contributing is easier when you're familiar with the project and its community.

Perhaps while reading a project's README file, you find a broken link or some typos. Maybe you noticed something isn't working as expected, or the documentation is out of date. These are all great opportunities to help and contribute to the project.

Tip

One important tip: All kinds of contributions are valuable. Your level of experience or knowledge of the project doesn't matter here. We all have something we can contribute. Be confident in yourself. The most important thing here is the will to help.

You can also use GitHub search to explore topics and related projects. Head to GitHub search, and enter your topic word.

Let's say you're interested in machine learning.

Screenshot showing GitHub search topics.

You can then narrow your search by selecting Topics in the left sidebar.

Screenshot showing the results of a GitHub narrow search.

From there, you can find repositories relevant to your search keyword and repositories curated by community members.

Familiarize yourself with an open-source project

Something worth mentioning here is that every open-source community is different. After you've found a project, you'll need to familiarize yourself with the project and its participation guidelines.

Most projects will have these documents at the top level of the repository:

  • LICENSE: The project must contain an open-source license. If the project doesn't have a license, it's not open source.
  • README: The README file usually serves as the welcome page for the project. It generally provides information on how to get started using the project. It's also common for it to add information on how to engage with the community.
  • CONTRIBUTING: As its name suggests, this document provides guidance on how to contribute to the project. It usually describes how the contribution process works, and includes details on how to set up your development environment.
  • CODE_OF_CONDUCT: The code of conduct sets ground rules for community members. By doing so, it helps make the community a safe and welcoming environment for all.

Although not all projects have CONTRIBUTING or CODE_OF_CONDUCT documents, having these documents is a good indication of how friendly and welcoming a project is.

Open-source contributors and maintainers come from all over the world. Projects usually have multiple communication channels to organize discussions and ask for help. A good way to familiarize yourself with the community is by reading through some of these communication channels:

  • Issue tracker: Where folks discuss issues and tasks related to the project. To find the issues in GitHub, you can go to the main page of the repository on GitHub and add /issues to the end of the URL, for example: https://github.com/jupyter/notebook/issues.
  • Pull request: Where folks discuss and review changes to the project. You can find it in GitHub by adding pulls to the project's URL, for example, https://github.com/jupyter/notebook/pulls.
  • Chat channels and forums: Some projects use chat channels, such as Slack, Gitter, and IRC, or forums like Discourse for conversations and discussions.

Identify tasks to work on

You've found a project, you've read the contribution guidelines, and now you're ready to contribute.

Perhaps you've already identified something to work on, such as fixing broken links or updating the docs. A good way to find beginner-friendly issues to help with is by visiting the project's /contribute URL, for example: https://github.com/jupyter/notebook/contribute.

Screenshot showing the Contribute to a project section on GitHub.

You'll notice that most of the issues displayed in the contribute URL will have labels such as good-first-issue, help wanted, beginner-friendly, and so on. Labels are often used to provide top-level information of the issue and the type of help needed.

You can head to the labels page, for example: https://github.com/jupyter/notebook/labels. Then, select issues that have labels like help wanted, discussion, or other labels relevant to the type of contribution in which you're interested.

As you explore issues, you might also notice that some have other issues or pull requests linked.

Screenshot showing a pull request linked to an issue.

There are many ways to contribute to open source. You can financially support the folks who build and maintain the open-source ecosystem through code, leadership, mentorship, design, and beyond.

Open source heavily relies on volunteer work. GitHub Sponsors allow you to fund projects and individuals to help them keep doing their open-source work, while giving them the recognition they deserve.

If a project is eligible for sponsorship through GitHub Sponsors, you'll find a Sponsor button on the project's main page.

Screenshot showing the sponsoring box on a GitHub project page.

You can select the sponsorship tier and if you want your contribution to be public.

Screenshot showing sponsorship tiers.

Unit recap

In this unit, you learned how to get started with open-source contributions. You now know how to choose a project to work on and use GitHub issues and labels to identify tasks to work on.

Here's a handy checklist to use when you interact with a project for the first time:

  • Does it have a license?
  • Are issues and pull request discussions used actively by maintainers and contributors?
  • Does the project use labels like help wanted or good first issue for newcomers?
  • Does the project have a code of conduct?
  • Does the project have clear Contributing Guidelines?

Finally, remember that all contributions are welcome, and the open-source ecosystem greatly benefits from your ideas and participation. There are many ways to contribute to open source, from submitting code or engaging in project discussions to sponsoring projects through GitHub Sponsors.