Healthy communities are built when everyone’s voice is heard, when their perspective is valued, and when their work is recognized. Better technical and social solutions can be found through wide participation. We are therefore dedicated to expanding our community in a welcoming and inclusive way, with particular focus on increased participation by people who identify with groups that are underrepresented in STEM and the open source scientific Python community.

Community members must adhere to our code of conduct.

Diversity, Equity, and Inclusion

How to contribute

The scientific Python ecosystem welcomes your expertise and enthusiasm!

Why contribute

[DRAFT] This video has not been recorded yet.

Grow as a developer

In the open source community, you have the opportunity to work with some of the best programmers in the world. Get valuable feedback and improve as a developer through peer review. Learn best practices and work with an international team spanning many backgrounds & disciplines.

Make an impact

Open source work is readily available to everyone and popular packages are used by thousands if not millions of people. Break barriers and make accessible tools that were traditionally locked behind pay walls. Advance science by building better tools for more accurate, transparent results and improved reproducibility.

Build tools by the community, for the community

Give back to your community and discover the agency you have in shaping the tools you need, use, and own. Participate in an ethical, user-oriented project that’s owned and operated by the community.

Ways to contribute

[DRAFT] This video has not been recorded yet.

5 ways to contribute to open source without coding

Open source software is code designed in a way that it is accessible to the public, everyone can view, modify, and distribute it easily, according to the terms of permissive software licenses. It relies on peer review and community production. This is why you can engage in the open source community easily and contribute in any way that you feel comfortable.

Issue testing and triaging

Every Open Source project has its own issue tracker where users post bugs, ux improvements or any other issues they are having. This allows support and improvement of projects. One way in which you can contribute is by testing and triaging these issues by doing the following:

  1. Check if older bugs are still present and comment on older issues to say they were solved and in which version of the software.
  2. Find duplicate issues and link related ones since usually the same issues are opened several times by many users.
  3. Add good self-contained reproducers to issues helping developers to find a reliable way to test them.
  4. Label issues correctly by adding tags to them. This usually requires triage rights but you can just ask for them!
Reviewing PRs

Pull requests are the way in which OS projects add new code to their codebase. You can help even if you’re not familiar with it by:

  1. Summarizing discussions in PR’s so that new contributors can be aware of the main points without reading the whole thread.
  2. Test proposed changes in PR’s to make sure they don’t break any other functionality.
Improving documentation

Documentation is crucial to every open source project since it is the way in which users can learn everything about it. One way to contribute to a project is by improving it’s documentation. This doesn’t mean you need to write new documentation (which you can by following the docs contributing guide), but there are other ways you can help.

  1. Many projects have tutorials which you can review and report confusing or missing parts.
  2. Find typos and minor errors in docs and report them in the docs repository issue tracker.
  3. If you feel like creating your own content, you can write your own guides and tutorials. There are several materials you can produce: how-to’s, deep-dive explanations, examples, notebooks, videos, etc…
  4. Improving docstrings within the code, and improving documentation style and design is also helpful.

Most Open source projects are developed in English, but many use platforms to translate their interface, webpage, or documentation. If you speak another language and feel comfortable translating, this is a way you can help. Projects use platforms as Transifex, weblate or crowdin where you can join as a volunteer contributor.

Participating in the community

Every open source project has its own community which you can be part of. You can get involved in online conversations and discussions about the projects, offer help to others, come to community meetings, or teach others about the project. You can even help with community outreach by sharing content on Twitter, organizing code sprints, participating in the newsletter or writing blogs.

There are many ways to contribute to open source projects so if you can think of another one, feel free to reach out to maintainers and I’m sure they will be happy to receive all the help they can get.

Getting started

[DRAFT] This video has not been recorded yet.

Choosing a project to work on

Choosing a project to contribute to can be daunting. There are many projects in the ecosystem to choose from so it’s important to find one related to something you’re interested in or is a project you already use. For example, if you’re interested in Computer Vision, it might be worth looking into implementing algorithms in scikit-image.

It’s typically easier to contribute to smaller projects but you also want to choose a project that’s big and active enough so that you have mentorship opportunities and room to grow. It’s also a good idea to take a look at open issues and pull requests, see how maintainers interact with the community, and assess if it would be good for you.

Tools you should learn

  • Github
  • Git
  • Terminal
  • Anaconda or miniconda
  • Editor or IDE

You can find help to learn these tools in the links below the video:

Getting your foot in the door

So now that you’ve chosen which project to contribute to, it’s time to get set up. Most projects have a file called CONTRIBUTING in the root of the repository that will tell you how to set up your development environment, submit pull requests, etc. Other developer documentation will also explain the testing process and other breakdowns of the project.

When first contributing to a project, it’s best to start with small, self-contained issues. Oftentimes, maintainers will label issues as a “good first issue,” so you should take a look at those first. Some examples of a good first issue include fixing a small bug, adding tests, fixing documentation typos, or writing up simple documentation.

Taking on bigger features

Once you’re more comfortable contributing to the project, you can start taking on bigger features. You can browse the open issue list for ideas such as small feature requests, writing documentation regarding how a system works, and minor refactoring like factoring out common code, deprecating old functionality, and renaming & reorganization.

First contribution

[DRAFT] This video has not been recorded yet.

How to make your first contribution to open source?

Before you start, make sure you have the following:

  • A GitHub account
  • A terminal or command line
  • An editor or IDE
  • Git installed in your computer
  • Conda installed in your computer

There are some links below the video to help you get these elements ready in case you are missing some. (We could also make short How-to videos to show people how to set up these things)

Now, we can get started.

Step 1: Fork the projects repo

Go to the project’s repository and click the “Fork” button at the top left of the page. This will create a copy of the repository in your own account.

Step 2: Clone your fork

On your new fork, click the green “Code” button and copy the link that appears there to get the URL for cloning it.

Now, open your terminal (or Git Bash, if you’ve installed Git for Windows) and type the command ‘git clone’ followed by pasting the URL you just copied. With this, you now have a local copy of your fork.

Finally, change to the directory of the repo you just cloned and add the the project’s repo as the “upstream” remote repository by typing the following:

git remote add upstream
Step 3: Set up your development environment

Most open source projects have their own contributing guide, which explains the steps needed for setting up your development environment. You’ll usually find them in the root directory of the repo. We recommend that you create a new environment for this.

To create and activate a new Conda environment, type the following commands in your terminal (or Anaconda Prompt on Windows):

conda create -n [NAME] python=3
conda activate  [NAME]

After you have created your new Conda environment, you need to install the project’s necessary dependencies (This depends on which project we will be using for this video):

conda install …
Step 4: Pick an issue

Now we need to select the issue we want to fix on the issues tab (Add link of Project’s issue tracker to display in video here) issue tracker of the repository and reproduce it in the development version of our project. (Not sure this applies, again it depends on the project).

Step 5: Create a new branch for your changes

First create a branch for your work. Run the following command in your command line:

git checkout -b [BRANCH NAME]
Step 6: Find the file and make the changes

Open your editor or IDE in the file that you need to solve the issue and save your changes.

Step 7: Confirm/test that the issue is solved in dev mode

(Not sure this applies)

Step 8: Commit your changes

Now, you are ready to add and commit your changes with a descriptive message. Type the following command in your terminal:

git commit -a -m “descriptive message”

Finally, push your new branch with your changes to your fork on GitHub:

git push -u origin [BRANCH NAME]

Enter your GitHub username and password if requested.

Step 9: Open PR

Now, you can submit your changes to the project’s repo.

Go to the project’s repository on Github, and you will see the option to open a Pull Request. You also have to make sure that you select the correct branch to merge your changes.

You have now made your first contribution to open source!

Choosing a project

[DRAFT] This video has not been recorded yet.

Contributing to Open Source: Know your community

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, whereas others tend to focus their effort on a single project. Ultimately, the most important factors in this decision are your own personal goals and interests! The projects in the ecosystem have a lot in common; however, it is important to recognize the each project has it’s own community, so there may be differences in the overall goals and decision-making processes for each project.

Understanding the project

Depending on the amount of dependents of a project, it can be more difficult to contribute to as there is a more vigorous review process since your contributions will affect a large amount of people. It’s not uncommon for even core developers to have pull requests going through iterations for years before being merged.

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, small projects such as (insert something here) may just require a review or two and basic tests before your changes are merged. This is important to keep in mind when picking out a project to work on.

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 from different timezones in their free time. As such, it’s important to recognize that contributors and maintainers may not always be consistent when they’re able to work or get back to you.

Since so many members are volunteers, any and all contributions are highly valued. Sometimes people may miss out on notifications or read something and forget to respond, so if you haven’t heard back from them in a few days, it’s usually safe to ping them to check that they didn’t miss anything.

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.
  • Many projects also have other communication channels for developers and newcomers, such as slack and discord.
  • Projects often have community meetings for developers or newcomers.
  • Consider watching a project on GitHub.