# Contributing to numpy/numpy 101
### Helpful resources*
- [Contributing to NumPy](https://numpy.org/devdocs/dev/index.html)
- [Building from source](https://numpy.org/devdocs/building/index.html#building-from-source)
- [Building the documentation](https://numpy.org/devdocs/dev/howto_build_docs.html)
- How to start from sratch, step-by-step, on an Ubuntu system:
https://hackmd.io/g5gtLntUQx-Lanhi55SdJQ
**Help us improve these resources by submitting your suggestions in an issue or pull request.*
### Choosing an issue
* Comment on the issue that you are working on to avoid multiple people taking on the same issue. Feel free to work in groups on the same issue.
* There are *a lot of* issues!:sweat: The selection labelled `sprintable` or `sprintable - C` is focused on beginner-to-intermediate-friendly issues that are actionable and should be doable today. They are a good starting point for learning your way through NumPy building and bug fixing. Please note, many of the `sprintable` issues are in fact "tracking" issues, that e.g. aims to track an issue that affects multiple functions.
[Click here to see the list of all the `sprintable` issues.](https://github.com/numpy/numpy/labels/sprintable)
[Click here to see the list of all the `sprintable - C` issues.](https://github.com/numpy/numpy/labels/sprintable%20-%20C)
* If you would like to take on something a little more challenging, there are a lot of issues in the [main NumPy repository](https://github.com/numpy/numpy) to choose from. We recommend choosing issues that (from the title or labels) seem to be bugs, don't have more than 5 comments, and are no more than 6 months old - those are most likely to be actionable.
### Contributing to the NumPy documentation
- [How to contribute to the NumPy documentation](https://numpy.org/devdocs/dev/howto-docs.html)
- [Building the documentation](https://numpy.org/devdocs/dev/howto_build_docs.html)
*Important:* If you are working on the NumPy documentation, remember to check against https://numpy.org/devdocs/index.html. This is the version of the documentation corresponding to the latest development version (aka what is merged on the main branch on GitHub).
### Writing a commit message
Commit messages should follow a few basic rules that are outlined in the NumPy documentation [here](https://numpy.org/doc/stable/dev/development_workflow.html#writing-the-commit-message).
### How to co-author commits
If you worked in a pair/group or picked up an inactive PR, it's a good idea to acknowledge everyone's contribution in a commit message. Refer to the [GitHub documentation on how to do it](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors).
________
### Recommended resources about contributing to open source
- [Talk *Sphinx for Python documentation*](https://youtu.be/tXWscUSYdBs) by Melissa Mendonça
- [Guide to making open source contributions, for first-timers and veterans](https://opensource.guide/how-to-contribute/)
- [Guide to pair programming](https://medium.com/@weblab_tech/pair-programming-guide-a76ca43ff389)