SEP-0004 - Packages Affiliated with the SunPy Project
|title||Packages Affiliated with the SunPy Project|
|author(s)||Stuart Mumford, Steven Christe|
This SEP describes and formalizes the relationship between the SunPy project and software packages affiliated with the SunPy project. Referred to as sunpy-affiliated packages or affiliated packages for short, these packages provide functionality that is considered outside the scope of the core library but builds upon it. They are reviewed by and registered to the SunPy Project. Together with the core library they form the SunPy software ecosystem.
In order to support and encourage the development of software by members of the community the SunPy project developed the concept of the affiliated package. Not all software falls within the scope of the core SunPy library but it is in the best interest of the general community to have access to a healthy, diverse, and compatible software ecosystem. The primary purpose of the affiliated package system is to support software developers that provide additional tools and functionality that extends and builds upon the core library. There are two types of affiliated packages, sponsored and non-sponsored. Unlike code submitted to the core library which falls under the responsibility of the SunPy Project to maintain, non-sponsored affiliated packages remain under the control of the original developers. Sponsored affiliated packages are the responsibility of the SunPy Project though their development can be led by the original developers. A review process ensures that affiliated packages provide useful functionality to the community at a standard of quality similar to the core SunPy package. This process also ensures that cross-compatibility is maintained throughout the SunPy ecosystem. The SunPy project will ensure that affiliated packages are maintained and publicized in order to encourage community development.
Requirements for Affiliated Packages
The SunPy project will maintain a list of "Affiliated Packages", which is a software package that has been reviewed and accepted as an affiliated package. To qualify to become an affiliated package the following requirements must be met.
- The package shall provide functionality that is relevant and useful to the community and must be relatively mature.
- The package must make use of all appropriate features in the core library, to reduce code duplication and complexity.
- The package should strive to not duplicate any functionality in either the core library or any other affiliated package.
- The package must provide documentation that is of comparable quality to the core library.
- The package must provide a test suite that can be used to verify its functionality.
- The developers of the package should engage with the SunPy community to encourage knowledge and code sharing.
Acceptance Process for Affiliated Packages
The SunPy lead developer must develop and maintain a submission and review process for proposed affiliated packages which must be included in the core library documentation. This process should be clear, fair and well-documented and must include criteria based on the requirements provided in this SEP.
The result of this review process is a report along with a recommendation to accept or reject the package as an affiliated package to be submitted to the SunPy board. To formally accept an affiliated package requires board concurrence which will be defined by the board and does not require an official board vote. The board shall respond to the recommendation within 1 month of submission and the report along with the board response shall be provided to the proposers. The board reserves the right to overturn a recommendation by the lead developer though this shall require an official board vote. It is expected that all affiliated packages shall be re-reviewed at a regular (annual) cadence in order to make sure that affiliated packages maintain compliance.
SunPy Sponsored Affiliated Packages
An affiliated package will be deemed "sponsored" if its development is overseen by the SunPy Project. This oversight would normally take the form of the package being managed by the SunPy lead developer with help from the original package developer/maintainer (if available) and the package shall be included in the main SunPy GitHub organization. It is expected that sponsored affiliated packages would closely follow the development model of the core package, while this is not required for non-sponsored packages.
Acceptance of a sponsored affiliated package will follow the same procedure as other affiliated packages with the decision between sponsored or not sponsored being taken by the board in collaboration with the lead developer and the maintainer(s) of the package.
List of Affiliated Packages
A list of all affiliated packages must be maintained and made publicly available on the primary SunPy website. This list shall provide a short description, links to the source code, documentation, and any website associated with the package as well as contact information for the package's lead developer.
Packaging Affiliated Packages
To make it easier for affiliated package developers, the SunPy Project must develop and maintain a publicly available package template. This template must maintain the standards of the core library and provide the infrastructure for Python packaging as well as documentation and testing infrastructure.
Accepted at the board meeting on 2014-10-17 by a vote of 8-0. Updates accepted by the board on ???.