Review CTA release versioning
Current stategy
We currently follow this version convention for our releases:
<xrootd>.<major>.<minor>-<package>
.
Where
-
<xrootd>
:- XrootD version, currently
4
or5
.
- XrootD version, currently
-
<major>
:- Major CTA release, bumped up every time a new catalogue is released.
- Every release with a certain
<major>
value depends on the same CTA catalogue schema version.
-
<minor>
:- Bumped up for every release that does not require a new catalogue version.
- Backward compatible, regarding catalogue schema.
- Does not guarantee to be backward compatible with other systems (i.e. EOS). Dependencies versions, including EOS, should be the ones in
versionlock.list
.
-
<package>
:- For any changes in packaging/built that do not require the code logic to be modified.
Public releases
Within this convention, any version can be made into a public release. We decided to make public only the releases that have been stable long enough at CERN.
Problem
This versioning convention does not allow us to apply patches to old versions. At CERN this is not a problem because we can always release a new minor version. However, for external sites that deploy the public release, it's currently not possible to release a patch without including all the new features.
Proposed solution
- Add a new patch version number:
<xrootd>.<major>.<minor>.<patch>-<package>
.
Where <patch>
:
- Used to apply fixes to old versions (including public releases).
- Should not include new features, only fixes.
- Should we also use it for internal hotfixes?
This new versioning convention should be compatible with the previous one:
$ rpmdev-vercmp 4.10.0-0 4.10.0.0-0
4.10.0-0 < 4.10.0.0-0
However, it may require some changes in our CI and/or code in order to work without issues.
Future plans
Once/If the cta-frontend stops depending on XRootD (by using gRPC to communicate with EOS), we will no longer need the <xrootd>
number.
At this point it will make sense to drop that field and move the CTA versioning to the format <major>.<minor>.<patch>-<package>
.