Software practices

Core principles

All of the teams in Scientific Computing adhere to a set of core principles about our software.

Code Review

At least one other software developer needs to approve a pull request in order for it to be merged. Please be courteous when providing feedback. The team lead can resolve any conflicts.

Style

We use black, flake8, and interrogate to enforce PEP 8 standards with docstrings in NUMPY format.

Versioning

We use semver major.minor.patch versions, these are automatically incremented when you use the aind-library-template. Note that for major versions you need to put the exact string “BREAKING CHANGE” in the commit comment (not the title).

You should set patch version floor >=1.0.0 and major version ceiling <2 for each internal dependency that you use. This is good practice for all dependencies.

Team descriptions live in AIND scientific computing teams.

Resources for SWEs

For research software engineers, Good Research Code is a good primer.

Data structure fundamentals