Release Philosophy

This section discusses topics related to Tardigrade-examples releases and version numbering.

Version Numbers

The Tardigrade-examples project follows the PEP-440 standard for version numbering. The production release version number uses the three component (“major.minor.micro”) scheme. The developer (a.k.a. dev) version number follows the production release number with an appended “.dev” local version number. The version numbers correspond to git tags in the upstream repository which point to a static release of the Tardigrade-examples project.

Because the deployed release of the developer version is constantly updated against development work, the version number found in the developer version contains additional information. During deployment, the developer version number is appended with the git information from the most recent build. This information contains the most recent git tag (“major.minor.micro+dev”) followed by the number of commits since the last production release and a short hash.

Major Number

The major number is expected to increment infrequently. After the first major release, it is recommended that the major version number only increments for major breaking changes.

Minor Number

The minor number is updated for the following reasons:

  • New features

  • Major internal implementation changes

  • Non-breaking interface updates

Incrementing the minor version requires a manual update to the release number found in the Git tags on a dedicated release commit. Until the first major release, minor version changes may also contain breaking changes. It is recommended that all minor version changes are announced to the user community prior to release.

Micro Number

The micro number is automatically incremented after any merge from the development (dev) branch into the production (main) branch. The micro version number indicates the following changes:

  • Bug fixes

  • Minor internal implementation changes

Until the first major release, micro version number releases may be made without announcement at the discretion of the lead developer. It is recommended that the developer community periodically discuss priorities for minor version release with the user community.

Release Branch Requirements

All production releases require a release branch. Releases correspond to a variety of bug fixes and features that characterize the release, as documented in Changelog.

The following steps will trigger a micro bump. Major and minor version bumps require a manual Git tag update for the otherwise automated setuptools_scm SCM version.

Steps needed for a release include:

  1. Create a release branch.

  2. Modify docs/changelog.rst to move version number for release MR commit, add a description as relevant, and update any missing entries in the changelog.

  3. Commit changes and submit a merge request to the dev branch at the upstream repository.

  4. Major and Minor bumps ONLY: Create a new developer version tag, e.g. ?.?.0+dev, on the new commit. Reset all numbers to the right of the bump to 0, e.g. 1.2.3 becomes 2.0.0+dev for a Major version bump or 1.3.0+dev for a Minor version bump.

    $ git tag 1.7.0+dev
    
  5. Push release branch with the new tag

    $ git push origin <release branch name>
    $ git push --tags
    
  6. Submit a merge request to the dev branch of the upstream repository.

  7. Immediately submit a dev->main MR after merging the release branch to dev.

  8. Review tests and notes, receive approval, and merge to main.