|
| 1 | +# Contributing, License and Code of Conduct Files in your Python Open Source Package |
| 2 | + |
| 3 | +A healthy Python package repository (or any open source software repository) should also have a: |
| 4 | + |
| 5 | +* Contributing.md file |
| 6 | +* A development guide (if possible) |
| 7 | +* A License file and |
| 8 | +* A code of conduct file |
| 9 | + |
| 10 | +## What a CONTRIBUTING.md file should contain |
| 11 | + |
| 12 | +Your Python open source package should include a file called **CONTRIBUTING.md** located in the |
| 13 | +root of your repository (with your **README.md** file). |
| 14 | + |
| 15 | +The contributing file should include information about the types |
| 16 | +of contributions that you welcome, and how you'd like to see |
| 17 | +contributions happen. |
| 18 | + |
| 19 | +This guide should also include information for someone interested in asking questions, |
| 20 | +submitting issues or pull requests: |
| 21 | + |
| 22 | +* Any guidelines that you have in place for users submitting issues, pull requests or asking questions. |
| 23 | +* A link to your code of conduct |
| 24 | +* A link to a development guide if you have one |
| 25 | + |
| 26 | +## What the development guide for your Python package should contain |
| 27 | + |
| 28 | +Ideally, your package should also have a development guide. This file may live in your package documentation and should be linked to from your CONTRIBUTING.md file (discussed above). |
| 29 | +A development guide should clearly show |
| 30 | +technically proficient users how to: |
| 31 | + |
| 32 | +* Set up a development environment locally to work on your package |
| 33 | +* Run the test suite |
| 34 | +* Build documentation locally |
| 35 | + |
| 36 | +It's also helpful to specify the types of tests your request if a contributor submits a new feature or a change to an existing feature that will not be covered by your existing test suite. |
| 37 | + |
| 38 | +If you have time to document it, it's also helpful to document your maintainer workflow and release processes. |
| 39 | + |
| 40 | +### Why a development guide is important |
| 41 | + |
| 42 | +It's valuable to have a development guide, in the |
| 43 | +case that you wish to: |
| 44 | + |
| 45 | +* onboard new maintainers |
| 46 | +* allow technically inclined contributors to make thoughtful and useful code based pull requests to your repository |
| 47 | + |
| 48 | +It also is important to pyOpenSci that the maintenance workflow is |
| 49 | +documented in the case that we need to help you onboard new |
| 50 | +maintainers in the future. |
| 51 | + |
| 52 | +```{note} |
| 53 | +A well thought-out continuous integration setup in your repository |
| 54 | +can allow users to skip building the package locally (especially if they are just updating text). |
| 55 | +``` |
| 56 | + |
| 57 | +```{tip} |
| 58 | +A development guide, while strongly recommended, is not a file that |
| 59 | +pyOpenSci requires a package to have in order to be eligible for |
| 60 | +review. Some maintainers may also opt to include the development information in their contributing guide. |
| 61 | +``` |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | + |
| 66 | +```{tip} |
| 67 | +[The mozilla open workshop has a nice outline of things to consider when |
| 68 | +creating a contributing guide](https://mozillascience.github.io/working-open-workshop/contributing/) |
| 69 | +``` |
| 70 | + |
| 71 | +## Your repository should have a license file |
| 72 | + |
| 73 | +The root of your GitHub repository sshould also have a License.txt file. |
| 74 | + |
| 75 | +To be reviewed by pyOpenSci your project should use an open source software license that is approved |
| 76 | +by the Open Software Initiative (OSI). OSI's website has a |
| 77 | +[list of popular licenses](https://opensource.org/licenses). GitHub also has a |
| 78 | +[handy tool](https://choosealicense.com/) for choosing a license. |
| 79 | + |
| 80 | +If you chose your license through GitHub, you can also automatically get a copy of the license file to add to your repository. |
| 81 | + |
| 82 | +<!-- |
| 83 | +pyOpenSci packages must: |
| 84 | +
|
| 85 | +- Contain full documentation for any user-facing functions. |
| 86 | +- Have a test suite that covers the major functionality of the package. |
| 87 | +- Use continuous integration. |
| 88 | +- Use an OSI approved software license. |
| 89 | +
|
| 90 | +**Good/Better/Best:** |
| 91 | +- **Good:** Include a open source software license with your package. |
| 92 | +- **Better/Best:** Choose a license based on your needs and future use of package, plus explain your choice in your submission for review. --> |
0 commit comments