Level 3: Manage compatibility guarantees ======================================== At level 3, we use `semantic versioning `_ to provide guarantees about compatibility. I find `commitizen `_ invaluable to manage the change log, force me to write descriptive git commits, and bump version numbers. Other nice things are to run unit tests automatically on each commit using GitHub actions, survey code coverage, but most academic projects will not reach that stage.