|
| 1 | +# README File Guidelines and Resources |
| 2 | + |
| 3 | +The **README.md** file is often the first thing that someone sees before they |
| 4 | +instal your package. |
| 5 | + |
| 6 | +This file is the landing page of: |
| 7 | + |
| 8 | +* Your file on package manager landing pages like PyPI and Anaconda |
| 9 | +* Your package's GitHub repository |
| 10 | + |
| 11 | +It is also used to measure: |
| 12 | +* community health by github |
| 13 | +* and included in package health landing pages such as snyk |
| 14 | + |
| 15 | +Thus, it is important that you spend some time up front creating a high quality |
| 16 | +**README.md** file for your Python package. |
| 17 | + |
| 18 | +## TODO ADD screenshots of landing pages in github and pypi |
| 19 | + |
| 20 | +Your README.md file should be located in the root of your GitHub repository. |
| 21 | + |
| 22 | +## TODO provide some screenshots of our repo with a readme file |
| 23 | + |
| 24 | +## What your README.md file should contain |
| 25 | + |
| 26 | +Your **README.md** file should contain the following things (listed from top to bottom): |
| 27 | + |
| 28 | +### ✅ Your package's name |
| 29 | +Ideally your GitHub repository's name is also the name of your package. The more |
| 30 | +self explanatory that name is, the better. |
| 31 | + |
| 32 | +### ✅ Badges for current package version, continuous integration and test coverage |
| 33 | + |
| 34 | +Badges are a useful way to draw attention to the quality of your project. Badges |
| 35 | +assure users that your package is well-designed, tested, and maintained. They |
| 36 | +are also a useful maintenance tool to evaluate if things are building properly. |
| 37 | +A great example of this is adding a readthedocs bade to your readme to quickly |
| 38 | +see when the build on that site fails. |
| 39 | + |
| 40 | +It is common to provide a collection of badges towards the top of your |
| 41 | +README file for others to quickly browse. |
| 42 | + |
| 43 | +Some badges that you might consider adding to your README file include: |
| 44 | + |
| 45 | +* Current version of the package on pypi / conda |
| 46 | + |
| 47 | +Example: [](https://pypi.org/project/pandera/) |
| 48 | + |
| 49 | +* Status of tests (pass or fail) - Example: [](https://github.com/pandera-dev/pandera/actions?query=workflow%3A%22CI+Tests%22+branch%3Amain) |
| 50 | + |
| 51 | +* Documentation build - Example:  |
| 52 | + |
| 53 | +* DOI (for citation) Example: [](https://zenodo.org/badge/latestdoi/556814582) |
| 54 | + |
| 55 | +```{tip} |
| 56 | +Once you package is accepted to pyOpenSci, we will provide you with |
| 57 | +a badge to add to your repository that shows that it has been reviewed. |
| 58 | +[](https://github.com/pyOpenSci/software-review/issues/12) |
| 59 | +
|
| 60 | +``` |
| 61 | + |
| 62 | + |
| 63 | +```{caution} |
| 64 | +Beware of the overuse of badges! There is such a thing as too much of a good thing (which can overload a potential user!). |
| 65 | +``` |
| 66 | + |
| 67 | +### ✔️ A short, easy-to-understand description of what your package does |
| 68 | + |
| 69 | +At the top of your README file you should have a short, easy-to-understand, 1-3 |
| 70 | +sentence description of what your package does. This section should clearly |
| 71 | +state your goals for the package. The language in this description should use |
| 72 | +less technical terms so that a variety of users with varying scientific (and |
| 73 | +development) backgrounds can understand it. |
| 74 | + |
| 75 | +In this description, it's useful to let users know how your package fits within |
| 76 | +the broader scientific Python package ecosystem. If there are other similar packages |
| 77 | +or complementary package mentions them here in 1-2 sentences. |
| 78 | + |
| 79 | +```{tip} |
| 80 | +Consider writing for a 12th grade reading level which is an ideal level for more scientific content that serves a broad user base. The goal of this description to maximize accessibility of your **README** file. |
| 81 | +``` |
| 82 | + |
| 83 | +### ✔️ Installation instructions |
| 84 | + |
| 85 | +Include instructions for installing your package. If you have published |
| 86 | +the package on both PyPI and Conda be sure to include instructions for both. |
| 87 | + |
| 88 | +### ✔️ Document any addition setup required |
| 89 | + |
| 90 | +Add any additional setup required such as authentication tokens, to |
| 91 | +get started using your package. If setup is complex, consider linking to a |
| 92 | +installation page in your online documentation here rather than over complicating |
| 93 | +your README file. |
| 94 | + |
| 95 | +### ✔️ Brief demonstration of how to use the package |
| 96 | + |
| 97 | +This description ideally includes a quick start vignette that provides a code sample demonstrating use of our package. |
| 98 | + |
| 99 | +### ✔️ Descriptive links to package documentation, tutorials or vignettes. |
| 100 | + |
| 101 | +Include descriptive links to to: |
| 102 | + |
| 103 | +* The package's documentation page. |
| 104 | +* Tutorials or vignettes that demonstrate application of your package. |
| 105 | + |
| 106 | +```{tip} |
| 107 | +### TOO MUCH OF A GOOD thing |
| 108 | +
|
| 109 | +Try to avoid including several tutorials in the readme file itself. This too will overwhelm the user with information. |
| 110 | +
|
| 111 | +A short quick-start vignette that shows a user how to use your package is plenty for the README file. All other tutorials and documentation should be presented as descriptive links. |
| 112 | +``` |
| 113 | + |
| 114 | +### ✔️ Community links Links to Contributing Guide, Code of Conduct |
| 115 | +In your readme file direct users to more information on: |
| 116 | +* contributing to your package |
| 117 | +* development setup for more advanced technical contributors |
| 118 | +* your code of conduct. |
| 119 | + |
| 120 | +All of the above files are important for building community around your project. |
| 121 | + |
| 122 | +### ✔️ Citation information |
| 123 | + |
| 124 | +Finally be sure to include instructions on how to cite your package. |
| 125 | + |
| 126 | + |
| 127 | +```{tip} |
| 128 | +### README Resources |
| 129 | +
|
| 130 | +Below are some resources on creating great README.md files that you |
| 131 | +might find helpful. |
| 132 | +
|
| 133 | +* [Write a great readme - Bane Sullivan](https://github.com/banesullivan/README) |
| 134 | +* [The art of the README GitHub Repo](https://github.com/hackergrrl/art-of-readme) |
| 135 | +
|
| 136 | +``` |
0 commit comments