Software Management#

This guide asks a range of questions to consider when planning your software management. Each question has resources for more information.

Examples are not an exhaustive list of possible options and many are Python-specific.

Checklist

  • Use version control for all of your code (e.g., GitHub).

  • Create one environment for each project (e.g., conda).

  • Choose the most appropriate method for capturing your computational environment.

  • Capture your computational environment.

  • Share your captured computational environment (along with your results/analysis) with a citable DOI and license.

  • Ensure (at least) the key functionality is correct, by writing, and regularly running, tests.

  • Ensure (at least) the key functionality is documented.

Questions#

What is the software environment setup?#

Integrated Development Environment (IDE)#

Version control#

Reproducibility#

Package management#
Entire computational environment#
Workflow management#
Resources#

How will software correctness be verified?#

Testing#

Continuous integration (CI)#

Code quality#

Code review#

How to manage the software?#

Training#

Other general resources#

Examples#

  • SHAP (SHapley Additive exPlanations)

    • Version control with GitHub

    • Continuous integration with GitHub Actions, Travis CI

    • Capture and share project environment via conda or pip

    • MIT license

    • Documentation with examples

    • Tests with pytest

    • Reproducible via Binder

  • TPOT (Tree-based Pipeline Optimization Tool)

    • Version control with GitHub

    • Continuous integration with GitHub Actions, Travis CI, AppVeyor

    • Capture and share project environment via conda or pip

    • LGPL-3.0 license

    • Documentation with examples

    • Tests with pytest

    • Citable DOI through Zenodo

    • Code coverage with Coveralls

  • PyHealth (A Python Library for Health Predictive Models)

    • Version control with GitHub

    • Continuous integration with Circle CI, Travis CI, AppVeyor

    • Capture and share project environment via pip

    • BSD-2-Clause license

    • Documentation with examples

    • Tests with pytest

    • Reproducible via Binder

  • VEROS (versatile ocean simulator Python / JAX)

    • Version control with GitHub

    • Continuous integration with GitHub Actions

    • Capture and share project environment via conda or pip

    • MIT license

    • Documentation with examples

    • Tests with pytest

    • Code coverage with codecov