Project Graduation Checklist
NOTE: please edit this in edit mode 'reStructuredText'. This will make things easy to port to the codebase (sphinx) docs in git
Last updated: 2015-02-16
The project has demonstrated that it has an open, active and healthy user and developer community:
- Open: projects are expected to function in an open and public manner and include:
- [x] Open source license(s),
- Yes, MIT (https://github.com/geopython/pycsw/blob/master/LICENSE.txt) for code, Attribution 4.0 International (CC BY 4.0) (https://github.com/geopython/pycsw/blob/master/docs/license.rst) for docs
- [x]Open communication channels,
- Mailing list http://lists.osgeo.org/mailman/listinfo/pycsw-devel
- IRC #pycsw (on freenode.net)
- Google+ Community (https://plus.google.com/communities/104084873011085696113)
- [x] Open decision making process.
- Active and healthy community:
[x] The project should have a community of developers and users who actively collaborate and support each other in a healthy way. Eg. collaboration on project activities such as testing, release and feature development.
- Release processes are open and documented at https://github.com/geopython/pycsw/wiki/Release-Plans
- Guidelines for creating a release are documented at https://github.com/geopython/pycsw/wiki/Release-Packaging/
- Bugs and features on GitHub at https://github.com/geopython/pycsw/issues
- Discussion in mailing lists both upstream and downstream of pycsw as well as across GitHub https://github.com/search?q=pycsw&type=Issues&utf8=%E2%9C%93
- http://pycsw.org/community provides an avenue for community evolution as well a live deployments map / gallery
[x] Long term viability of the project is demonstrated by showing participation and direction from multiple developers, who come from multiple organizations. Eg. The project is resilient enough to sustain loss of a developer or supporting organization, often referred to as having a high bus factor. Decisions are made openly instead of behind closed doors, which empowers all developers to take ownership of the project and facilitates spreading of knowledge between current and future team members.
The project has 5 core developers from 4 organizations (Meteorological Service of Canada, National Technical University of Athens, Azavea and OKFN) and 15 contributors from downstream projects/organizations (OKFN, JRC, GSA, Boundless, USGS, World Bank etc).
Some statistics (including number of contributors) for the project can be found at https://www.openhub.net/p/pycsw
Professional Service Providers are already available http://www.osgeo.org/search_profile?SET=1&MUL_TECH%5B%5D=00107
Decisions are made openly via mailing lists/IRC
The project powers CSW implementation of numerous high profile activities:
- http://data.gov and http://geoplatform.gov
- numerous deployments in support of US IOOS (http://ioos.noaa.gov)
- USGS (Coastal Hazards: http://cida.usgs.gov/coastalchangehazardsportal, Coastal and Marine Geology: TBD)
- US National Geothermal Data System (http://geothermaldata.org/)
- WMO World Ozone and Ultraviolet Radiation Data Centre (http://woudc.org)
and receives many contributions/fixes through GitHub.
Copyright and License
We need to ensure that the project owns or otherwise has obtained the ability to release the project code by completing the following steps:
- [x] All project source code is available under an Open Source license.
- [x] Project documentation is available under an open license. Eg. Creative Commons
- Yes, "The documentation is released under the Creative Commons Attribution 4.0 International (CC BY 4.0) license." (https://github.com/geopython/pycsw/blob/master/docs/license.rst)
- [x] The project code, documentation and data has been adequately vetted to assure it is all properly licensed, and a copyright notice included. As per a Provenance Review
- Done. See https://github.com/geopython/pycsw/wiki/pycsw-Provenance-Review. Issues documented at https://github.com/geopython/pycsw/issues?q=label%3Aosgeo-incubation+
- One outstanding issue with OGC schemas: The OGC schemas are included in pycsw to validate incoming XML requests. The OGC schemas are licensed under the terms of the OGC Document Notice or under the terms of OGC Software Notice according to the legalfaq (http://www.opengeospatial.org/ogc/legalfaq#DTD): "Schemas (and DTDs) are frequently part of our specifications and seemingly fall under the document copyright terms. However, as long as you do not use the same formal namespace or public identifier to identify that modified OGC schema/DTD (which might confuse applications), you may treat the schema/DTD under the software terms. This means that you are permitted to make a derivative or modified OGC schema/DTD, but even under the software terms you are obligated to include/retain the OGC copyright notice. We further appreciate a couple sentences regarding who made the modifications, when, and what changes were made in the original DTD -- a common software documentation practice." This was found incompatible with the Debian Free Software Guidelines (DFSG), which strictly considers schemas to fall under the document copyright terms (not free to modify), thus pycsw package was rejected from Debian. On the other hand, since pycsw only uses the schemas for validation and does not publish them online, we use the second clause of the OGC legalfaq and we consider schemas to fall under the software copyright terms (modifications are allowed). We have included the OGC copyright notice (https://github.com/geopython/pycsw/blob/master/pycsw/schemas/ogc/OGC-SOFTWARE-NOTICE.txt) and a note of how we use the OGC schemas (https://github.com/geopython/pycsw/blob/master/pycsw/schemas/ogc/README.txt). Furthermore, pycsw has been accepted in openSUSE, Fedora, Ubuntu and OSGeoLive without any legal objections. For more information see:
- [x] The project maintains a list of all copyright holders identified in the Provenance Review Document.
- [x] All code contributors have agreed to abide by the project's license policy, and this agreement has been documented and archived.
- Included as part of contribution agreement and tracked under an open ticket on GitHub: https://github.com/geopython/pycsw/issues/312
- [x] The project has code under configuration management. Eg, subversion, git.
- Yes, git (https://github.com/geopython/pycsw.git)
- [x] The project uses an issue tracker and keeps the status of the issue tracker up to date.
- Yes, GitHub (https://github.com/geopython/pycsw/issues)
- [x] The project has documented its management processes. This is typically done within a Developers Guide or Project Management Plan.
- Yes, http://docs.pycsw.org/en/latest/contributing.html, release planning https://github.com/geopython/pycsw/wiki/Release-Plans, release packaging management https://github.com/geopython/pycsw/wiki/Release-Packaging
- The project has a suitable open governance policy ensuring decisions are made, documented and adhered to in a public manner. This typically means a Project Management Committee has been established with a process for adding new members. A robust Project Management Committee will typically draw upon developers, users and key stakeholders from multiple organisations as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.
- Yes, PSC (http://pycsw.org/community/psc.html) and RFC (http://pycsw.org/development/rfc/) mechanisms exist
- The project uses public communication channels for decision making to maintain transparency. E.g. archived email list(s), archived IRC channel(s), public issue tracker.
- Yes, IRC, mailing list, GitHub issues. See http://pycsw.org/community/
- The project has user documentation:
- [x] Including sufficient detail to guide a new user through performing the core functionality provided by the application.
- Yes, substantial user documentation, distributed through GitHub (https://github.com/geopython/pycsw/tree/master/docs) and currently hosted through 'Read the Docs' (http://docs.pycsw.org/en/1.10.1/)
- A wiki also exists (https://github.com/geopython/pycsw/wiki)
- The project has developer documentation:
- [x] Including checkout and build instructions.
- Yes, checkout and build instructions are outlined with examples: http://docs.pycsw.org/en/1.10.1/installation.html#installing-from-source
- [x] Including commented code, ideally published for developer use. Examples: javadocs for Java applications, or Sphinx documentation for Python applications.
- Yes, code examples are published through the Sphinx documentation framework, allowing visually pleasing code examples (https://github.com/geopython/pycsw/blob/master/docs/profiles.rst)
- [x] Providing sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions.
- Yes, including Coding Guidelines, as well as GitHub Commit Guidelines (http://docs.pycsw.org/en/1.10.1/contributing.html)
In order to maintain a consistent level of quality, the project should follow defined release and testing processes.
- The project follows a defined release process:
- [x] Which includes execution of the testing process before releasing a stable release.
- Yes, the full release process is documented step-by-step (https://github.com/geopython/pycsw/wiki/Release-Packaging)
- The second step of the release process is to make sure the source passes all OGC CITE tests (steps to run own tests at https://github.com/geopython/pycsw/wiki/OGC-CITE-Compliance)
- Release plans are documented (https://github.com/geopython/pycsw/wiki/Release-Plans)
- The project follows a documented testing process.
- [x] Ideally, this includes both automated and manual testing
- Yes, automated testing through travis-ci (http://travis-ci.org/#!/geopython/pycsw) occurs, so that every commit to master must pass
- Manual testing occurs through the OGC-CITE (http://cite.opengeospatial.org) tests
- Integration tests also occur as part of downstream tools like CKAN and GeoNode (https://github.com/GeoNode/geonode/blob/master/geonode/tests/csw.py)
- Unit tests exist at https://github.com/geopython/pycsw/tree/master/tester
- [x] Ideally this includes documented conformance to set quality goals, such as reporting Percentage Code Coverage of Unit Tests.
- Yes, as pycsw is the OGC CSW reference implementation (http://www.opengeospatial.org/resource/products/details/?pid=1104) , therefore the goal is always 100% OGC compliance.
- [x] Release and testing processes provide sufficient detail for an experienced programmer to follow.
- Yes, as noted above
OSGeo Committees and Community
The OSGeo Foundation is made up of a number of committees, projects and local chapters. This section gathers up information these groups have requested from OSGeo projects. These expectations are not mandatory requirements before graduation, but a project should be prepared to address them in order to be considered a good OSGeo citizen.
The OSGeo Board holds ultimate responsibility for all OSGeo activities. The Board requests:
- [x] A project provide a Project Officer as a contact point:
- The project officer is Angelos Tzotsos
- The Project Officer should be listed at Officers and Board of Directors and Contacts
- This person is established when the incubation committee recommends the project for graduation
- Your community can change the project officer as needed. Add an agenda item to the next board meeting so they can recognise the change of officer.
- [x] Marketing artefacts have been created about the project in line with the incubation criteria listed in the OSGeo Marketing Committee's Marketing Artefacts. This lists the documentation requirements for OSGeo-Live. Marketing Artefacts include:
- Application Overview
- Application Quick Start
- Graphical Image
- [x] Ideally, stable version(s) of executable applications are bundled with appropriate distributions. In most cases, this will at least include OSGeo-Live, but may also include DebianGIS, UbuntuGIS, and/or osgeo4w, ms4w, etc.)
- pycsw is part of OSGeo-Live, UbuntuGIS, openSUSE Application:Geo, PyPI. See http://pycsw.org/download/
[x] Projects do not exist in isolation; and are expected to communicate and collaborate on key issues.
As an example the PostGIS release procedure asks that the release be checked with MapServer, GeoServer and others.
- pycsw works with projects such (upstream: Shapely, OWSLib, pyproj; downstream: CKAN, GeoNode, Open Data Catalog)
- [ ] The following should be set up:
- A http://pycsw.osgeo.org domain name
- Not requested: the osgeo.org website should link to pycsw.org
- [x] A project may optionally request SAC help to make use of:
- OSGeo issue tracker
- OSGeo mailing list
- OSGeo svn
- Done. pycsw uses http://download.osgeo.org/pycsw for downloads, http://lists.osgeo.org/pipermail/pycsw-devel for mailing list, and the Projects VM for http://demo.pycsw.org. SCM and issue tracker and wiki via GitHub. Full details are at https://github.com/geopython/pycsw/wiki/Technical-Infrastructure .