Switch Trilinos to the semantic versioning standard?
Created by: bartlettroscoe
@trilinos/framework
Description
The Semantic Versioning Standard (https://semver.org) is a better and more standard way to name releases and versions leading up to a release. Instead of the current even/odd minor version numbering that is currently used by Trilinos, on could consider switching to:
- Current release:
trilinos-X.Y.Z
- Next major release version:
trilinos-(X+1).Y.0
- Next minor release version:
trilinos-X.(Y+1).0
- Next patch release version:
trilinos-X.Y.(Z+1)
- Development version leading up to next minor release
trilinos-X.(Y+1).0-dev.Q
The development version tag trilinos-X.(Y+1).0-dev.Q
can be generated using git --describe --match="trilinos-X.(Y+1)*"
(more details later in this Issue).
This is consistent with First, two SemVer items https://semver.org/#spec-item-9:
A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes. Pre-release versions have a lower precedence than the associated normal version. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.
and https://semver.org/#spec-item-11:
Precedence refers to how versions are compared to each other when ordered. Precedence MUST be calculated by separating the version into major, minor, patch and pre-release identifiers in that order (Build metadata does not figure into precedence). Precedence is determined by the first difference when comparing each of these identifiers from left to right as follows: Major, minor, and patch versions are always compared numerically. Example: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1. When major, minor, and patch are equal, a pre-release version has lower precedence than a normal version. Example: 1.0.0-alpha < 1.0.0. Precedence for two pre-release versions with the same major, minor, and patch version MUST be determined by comparing each dot separated identifier from left to right until a difference is found as follows: identifiers consisting of only digits are compared numerically and identifiers with letters or hyphens are compared lexically in ASCII sort order. Numeric identifiers always have lower precedence than non-numeric identifiers. A larger set of pre-release fields has a higher precedence than a smaller set, if all of the preceding identifiers are equal. Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.
The SemVer standard says that trilinos-X.Y.0-dev.Q
is before the release trilinos-X.Y.0
. Therefore, trilinos-X.Y.0-dev.Q
is the Qth development version leading up to trilinos-X.Y.0
.
Therefore, we have the ordering:
-
trilinos-X.Y.0-dev.Q
<trilinos-X.Y.0
<trilinos-X.Y.Z
(forZ
>0
)
This outlined in more detail in Addition of release branches.