Checkmatrix for 'eStep friendly' projects.

Printable check-list -- complete this checklist to ensure your project is eStep-ready. If you can tick all boxes on this form, your project should be included as an eStep Mature project.

Version Control

Item / Phase Done
use git as version control system (vcs)
use GitHub flow branching model (use feature branches and pull requests)
public vcs repository (github)
meaningful commit messages

Releases

Item / Phase Done
semantic versioning
tagged releases (github releases)
CHANGELOG.md (Keep a CHANGELOG)
one command install (pip, npm etc)
package in package manager (pypi, npm etc)
discuss release cycle with coordinator
release quick-scan by other engineer (is documentation understandable, can it be installed, etc)
notify Lode for dissemination (news item on site / annual report, etc)

Licensing

Item / Phase Done
Apache 2 license
compatible license of all libraries
NOTICE(.txt or .md) listing licenses, request citation of paper if applicable

Communication

Item / Phase Done
home page with all the necessary introduction information, links to documenation, source code (github) and latest release download (eg. github.io pages)
project discussion list (github issues, mailing list, not private email) for all project related discussions from the beginning of the project
for services: a demo docker image in dockerhub (with Dockerfile)
for websites: an online demo
Pitch presentation (1 to 3 slides)
Few sentences about the project for the technology pages on our website

Testing

Item / Phase Done
unit tests
build tests
continuous integration, public on Travis
continuous code coverage and code quality metrics public, minimum 70% coverage required
end2end test for (web) user interfaces
track dependencies (with David or other service depending on codebase language)

Documentation

Item / Phase Done
README.md - clear explanation of the goal of the project with pointers to other documentation resources. Use GitHub flavored markdown for, e.g., syntax highlighting.
well defined functionality
source code documentation
usage documentation
documented development setup (good example is Getting started with khmer development)
contribution guidelines egzample
code of conduct (contributor covenant)
documented code style
meaning of issue labels used
DOI or PID (making your code citable)

Development setup

Item / Phase Done
using the eScienc Center coding style is required
editorconfig
applied code style in automated way if possible (i.e using linters and code formaters)
dev environment docker images in Dockerhub (with Dockerfile)

Use standards

Item / Phase Done
exchange format (Unicode, W3C, OGN, NetCDF, etc)
protocols (HTTP, TCP, TLS, etc)