Skip to content

Our Use of Semantic Versioning

Sara McCutcheon edited this page Mar 9, 2017 · 1 revision

Generally

The format of a version is x.y.z. All variables are assumed to be any nonnegative integer unless otherwise constrained.

  • Any x.y.a, where a > z, is a later version of x.y.z with bug fixes. This is a patch release.
  • Any x.b.z, where b > y, is a later version of x.y.z with new features. This is a minor release.
  • Any c.y.z, where c > x, is not (guaranteed to be) compatible with any x.y.z. This is a major release.
  • When x, y, or z are incremented, the digits to its right must be set to zero.

Types

  • Our latest release: Content for this release is contained in the master branch on Github. A release cut is a snapshot of the state of master at the minor in time that the release is made unless updating a previous major release. Any kind of change can be added to the latest release.
  • A change to a previous major version: The a.x (where x is the character 'x') branch must be branched and the new fix applied. Only fixes can be made to a previous major version.

Method

  • A new patch release can be made without ado. When there are fixes in master which it behooves us to distribute, a patch release can be made. This patch release is expected to not contain any new features or changes incompatible with the previous release. It is not necessary to update the docs team for this kind of release.
  • A new minor release is often a cause for a marketing email but not necessarily. When there are new features in master which we wish to release or there are new features and fixes we want to distribute, a minor release can be made. The minor release is not expected to contain changes incompatible with the previous release, but may contain both fixes and new features. Making such a release requires notifying the docs team to update the Terminus manual.
  • A new major release cannot be made without approval by Product. Before the backward-incompatible change is merged, a new branch must be created on Github of the current master branch, named a.x, where x is the character 'x', and that branch must be given a protected status (so that it may not be deleted by mistake). The major release is expected to contain changes incompatible with the previous release, and may contain fixes and new features. Making such a release requires notifying the docs team to update the Terminus manual.

Specifically

For consistency, we will start at Terminus 1.0.0.

Clone this wiki locally