This document outlines the criteria upon which projects are reviewed for submission to the PyHC Project list (i.e., submission to the PyHC Project page). Its intended audience is the project owner, or the main project developer who is submitting a project review/adding a project to the PyHC Project list. For now, PyHC intends to stick with this "self review" process. In the future, a PyHC developer may also review a project if needed.
The reviewer's job is to give a grade of "Requires improvement" (red), "Partially met" (yellow), or "Good" (green) with respect to how well their project stacks up to each of the review standards listed in the table below. If a project's grade for a standard falls below the "Good" classification, the reviewer should provide some remarks about why that is, and what the project's plan is for improvement.
At present, no projects will be rejected from the PyHC Project list. However, at the PyHC Spring 2020 meeting we will set a date by which projects will be kicked off if they have any "Requires improvement" grades. We will also set up a timeline for which projects are 1) informed they are in danger of being kicked off and 2) given time to fix the problematic categories.
A more detailed description of a review's grading colors is shown below.
The six standards against which we assess a project are the following:
- Community
- Documentation
- Testing
- Software Maturity
- PHEP 3 (Python & Upstream Package Support)
- License
An explanation of each standard (and sub-standards therein) are defined in the PyHC Community Standards
In order to conform to the PyHC Community standard, packages need to successfully meet these sub-standards:
- Open Development
- Duplication
- Collaboration
- Code of Conduct
See the PyHC Community Standards, points 2, 12, 13, and 15
| Project doesn't employ any of the Community sub-standards. | |
| Project partially meets the Community sub-standards. | |
| Every sub-standard mentioned above is implemented, without any major weaknesses. |
Basically, make sure that the project has documentation, and if so, take note of the state of said documentation. See the PyHC Standards, point 8 for the specifics on what should be included in documentation.
Code must have unit tests to ensure its functionality. Unit tests should cover all individual components of code, as well as interaction between different components in the code. Automated testing, and system and acceptance testing is encouraged. See PyHC Standards, point 9 for more specifics on testing expectations.
The Software Maturity standard contains seven sub-standards:
- Packaging (e.g. pip, conda)
- Releases
- OS Support
- Version Control
- Coding Style
- Dependencies
- Binaries
See the PyHC Community Standards, points 1, 3, 4, 6, 7, 10, and 14
This deals with a project's support for Python versions and upstream Scientific Python packages per PHEP 3. See the PyHC Community Standards, point 11.
Projects need to have permissive licenses for open source scientific software (see specific recommendations in the PyHC standards, point 5.
| Project does not have a license. | |
| Project has a license, but it does not conform with open source scientific software. | |
| Project has a permissive license for open source scientific software. |