If you’ve been following the ConsenSys Quorum and Hyperledger Github repositories, you may have noticed large version bumps across ConsenSys Quorum projects recently. Hyperledger Besu, GoQuorum, EthSigner, Tessera and Orion have all gone from single-digit version numbers to 20.10.0 Rest assured, you haven’t missed over a dozen versions! We’ve simply moved our versioning scheme to follow calendar versioning, a.k.a. CalVer. CalVer aims to simplify versioning by using dates to differentiate versions rather than arbitrary numbers. In short, this means our project versions will now start with the year and month (YY.M) of the last major release candidate, followed by a patch number for incremental releases, which gives us YY.M.patch, or 20.10.0 for our next release.
|YY||Year when the release candidate (not the actual release) is cut. (20, 21, 22, etc.)|
|M||Month when the release candidate (not the actual release) is cut (1, 2, 3, … 11, 12)|
|patch||Patch release since the last quarterly release. Starts at “0” for the quarterly release candidate and increments upon each release, up to the next release candidate, where it resets to 0.|
CalVer makes it easy to see what the latest major release is, and what versions of Quorum bundle components have been tested extensively with each other. Everything ending with “0” is a major release, and projects with the same year and month in their release number are part of the same tested bundle. This scheme is inspired by projects such as Ubuntu, Slack and Cockroach Labs. To make it a bit more concrete, let’s look at what this means for the next release cycle. We’ll use Hyperledger Besu as an example, but the process is the same for all ConsenSys Quorum projects.
On October 8th, we released the first release candidate for Besu’s next quarterly release. Therefore, we used the “20.10” date and used “0-RC1” for the patch number, giving us 20.10.0-RC1 (instead of the “1.6.0-RC1” version our previous scheme would have used). Then, two weeks later, on October 21st, we released the second release candidate under version 20.10.0-RC2. Next week, the production release will go live under 20.10.0, even though it will be November by then.
For the next few months, as we keep releasing Besu, we’ll only be incrementing the patch number. This means that throughout November, December, and even January 2021, we’ll be releasing versions 20.10.1, 20.10.2, 20.10.3, and so on. When we cut a new release candidate, sometime in Q1 2021, we’ll update the YY.M value of the release number again for that release. The table below illustrates what both versioning schemes would have resulted in for the following quarter.
Hyperledger Besu Release Versioning
As part of our quarterly release process, we’ll always re-release every product in the ConsenSys Quorum suite to make it easy for users to update to a version they know has undergone extensive testing. If the only update to a specific project is the version number, we’ll make that clear in the release notes.
And that’s CalVer! We hope this scheme will make it easier for our users to keep track of the latest versions of our products. If you have any questions or concerns, we invite you to raise them in the Hyperledger Besu or GoQuorum Discord rooms.