Checkmatrix for ‘eStep friendly’ projects.

    • Prototype phase. The first step in most software development is trying out different things with no intention in keeping the intermediate results. Signs you could be in this phase:
      • You switch programming languages.
      • You throw away all of your code once in a while
      • You work on the code by yourself
      • You are waiting with showing other people your code until you “clean it up a bit first”.
    • . Eventually you get software you intend to keep. Signs you could be in this phase:
      • You have external contributors.
      • You are working up to a release.
      • Users ask you if the software is done yet.
    • Maturity phase: Software that has reached maturity, has a clear function and scope, and is used. Signs you could be in this phase:
      • The software has a release.
      • The software has users: people actually using your software/code
      • You have external contributor

    Version Control

    Releases

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

    Communication

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

    Testing

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

    Development setup

    Use standards

    Item / Phase Prototype Pre-release Mature
    exchange format (Unicode, W3C, OGN, NetCDF, etc) X
    protocols (HTTP, TCP, TLS, etc) X