Getting started

Choosing a project to work on#

How do you choose which project to contribute to? There’s no single best way to choose a project, but here are some questions to think about when choosing:

  • Is there a project related to your background or your research? E.g., astronomers might prefer to contribute to astropy or sunpy.
  • Is there a package you’re already using? Even well-established general-purpose packages like numpy, scipy, or matplotlib are still growing and changing, and need contributors.
  • Is the project actively developed? Take a look at the project’s repository to see how recent the last update was, and how many people seem to be involved.
  • Is the community healthy? Project maintainers will be reviewing your work and mentoring you through the contribution process, so look to see if the interactions on the project’s pull request pages are polite and welcoming.

One last tip is to look at the project’s open issues to see if there are any tagged as “easy” or “good first issue”, and if any of those look appealing to you.

For a more detailed discussion, also take a look at our Choosing a project video, linked below.

Tools of the trade#

As with any trade, there are certain fundamental tools you should learn. Since the ecosystem is built in Python, you’ll need to know how to program in that language. Other tools we use daily include:

In this video series, the basics of using these tools are covered along the way. To learn more about them, take at the links below:

First contribution#

Now that you’ve chosen a project to contribute to, it’s time to get set up. Many projects have a file called CONTRIBUTING in the root of the repository that will tell you how to set up your development environment, propose changes, etc. Most projects also have a page on their website called “Developer documentation” or “Contributor guide” that will have similar information, and usually also explain testing and review procedures, and whatever else you need to know.

When first contributing to a project, it’s best to start with small, self-contained issues. Examples of a good first issue include fixing a small bug, adding tests, fixing documentation typos, or writing up simple documentation. If you haven’t already found an issue you want to work on, now is the time (remember to look for the “good first issue” label if the project has it).

It is not uncommon to get stuck while making your first contribution. Don’t panic! Try to find the real-time chat or discussion forum for the project, and ask for assistance there. The maintainers will be happy to help!

For more details, also check out our First contribution video.

What’s next#

Once you’re comfortable making small changes to the project, you can start taking on bigger contributions. There are many different ways to help: you may, e.g., implement new features, write documentation, refactor and clean up code, improve testing, work on build infrastructure, and so forth.

No matter what you contribute, or whether you contribution is big or small, it is much appreciated.

On this page