Choosing a project

Contributing to a Scientific Python project#

A common question from new contributors is: “how do I choose which project to contribute to”? Some people end up contributing to many different projects, while others tend to focus their effort on a single project. And while projects in the ecosystem have a lot in common, each has it’s own community—so there may be differences in culture, style, and decision-making processes. Ultimately, which projects you contribute to will depend a lot on your own personal interests and goals.

Understanding the project#

Some projects like NumPy are used by many projects in the ecosystem. Such projects are mature and relatively full-featured. Given their central role in the ecosystem, working on these projects can have a huge impact. However, making changes to these projects may be more challenging than in newer and less central projects. It’s not uncommon even for core developers to have their pull requests go through iterations for months before being merged.

For example, because NumPy affects pretty much the entire ecosystem, it is going to be very difficult to contribute larger features to and usually requires a NumPy Enhancement Proposal (NEP) to be approved before work is started on it. Enhancement Proposals are fairly common for core projects in the ecosystem and consist of a writeup of the planned changes, including a summary of the implementation, pros and cons of it, and sometimes a proof of concept coded up. It is then discussed and iterated on before a decision is made.

On the other hand, projects such as NetworkX may just require a review or two and basic tests before your changes are merged.

It’s worth remembering this distinction when deciding how much time you’d like to invest.

Contributing to the ecosystem#

The open source Scientific Python community functions differently from a normal work environment because it is largely comprised of people contributing in their free time, from different time zones. As such, contributors and maintainers may not always be able to get back to you immediately.

Since so many community members are volunteers, any and all contributions are highly valued. Maintainers always want to help, but they are often over-subscribed and may miss notifications or read something and forget to respond. If you haven’t heard back from them in a few days, it’s usually safe to give them a friendly ping to check.

Learn more about a project#

Getting to know the developer community is a great way to learn more about the projects and find a great fit. There are many ways to begin interacting with project communities:

  • Most projects have a developer mailing list or discussion forum.
  • Some projects also have real-time chat for developers and newcomers, such as Slack or Discord.
  • Projects often have weekly or monthly online community meetings.
  • You can also watch a project’s development activity on GitHub.
  • Finally, you can join the Scientific Python discussion forum, where we bring together users and developers from multiple projects across the ecosystem.
On this page