Skip to content

Versioning

Gillian Petro edited this page May 9, 2024 · 5 revisions

The goals of the versioning system are that it is:

  • Simple to implement and understand
  • Well-documented
  • Consistently applied

The proposed UFS versioning system is: vXX.YY.ZZ

XX -- Major release

  • Involves the addition of significant new capabilities, possibly in addition to more minor updates and bug fixes.
  • Requires extensive benchmark testing that documents the skill of the application
  • Following the GitFlow approach, a release candidate branch should be created from the develop branch where the application is extensively tested before moving to the master branch with the release tag.
  • Application releases should ensure, as much as possible, that they are connected to component releases.
  • Application releases should ensure that complete documentation is provided.

YY -- Minor release

  • Includes updates and/or incremental improvements to existing capabilities. May also include bug fixes.
  • The full testing suite needs to be completed before incrementing versions.

ZZ -- Bug-fix release

  • These are incremented when a bug fix needs to be applied to a previous release.
  • Since feature upgrades are periods of rapid development where multiple bugs are expected to be found, it is not necessary to increment this during the feature development phase (in between releases).
  • All bug fixes that are applied to the master branch should be applied to the develop branch if they have not yet been incorporated into the application. However, not all bug fixes that are applied to the develop branch need be applied to the master or release branches.
  • All version changes should be documented in the the GitHub repository with a release tag and accompanying description.
  • All releases should be associated with version tags.