Introducing CalVer and SemVer

Published:

For providing better long-term support and communication, OpenSwoole Group has investigated the two most common versioning schemes—SemVer (semantic versioning) and CalVer (calendar versioning). OpenSwoole will use a kind of CalVer and respect SemVer.

Introducing Calver and SemverIntroducing Calver and Semver

What is SemVer?

The rules of strict SemVer:

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

SemVer is the most widely-used versioning scheme, so developers know they can upgrade minor versions without breaking anything. There are incompatible API changes when upgrading the MAJOR version.

What is Calver (Calendar Versioning)

Calendar Versioning gained more and more adoption during the past few years.

"CalVer is a versioning convention based on your project's release calendar, instead of arbitrary numbers." - Calver.org

You can quickly spot if the library or software is outdated and how old the software version is from the version number. You can also see the release time of future versions.

Which software is using the Calendar Versioning system?

"C language" uses Calendar Versioning such as C89, C99, C11. The well knows "Microsoft Windows" also uses Calendar Versioning systems, such as 95, 98, 2000. The other software using Calendar Versioning:

  • Ubuntu

Ubuntu is one of the most popular Linux OS, and uses a three-segment CalVer scheme, with a short year and zero-padded month. It has done so from the very start, in October 2004, making 4.10 the first general release of Ubuntu.

  • Unity

Unity is one of the most popular cross-platform game engines and uses CalVer with the format YYYY.MINOR.MICRO.

  • PyCharm

PyCharm is a commercial Python IDE which is created by software company JetBrains and uses CalVer. The version looks like Version: 2022.2.2.

And many more.

OpenSwoole will use CalVer and respect SemVer

After consulting from OpenSwoole community at the Slack channel and Discord channel, we have decided to move to a versioning system mixed with Calendar Versioning and SemVer:

  • The MAJOR version is the release year and the major version may include incompatible API changes. Most likely released along with PHP new versions and support new PHP versions at the end of each year.
  • The MINOR version is adding new functionalities in a backwards-compatible manner.
  • The PATCH version is about backwards-compatible bug fixes.

The next major release version will be 22.0.0. We will post a series of articles introducing new features, changes and use cases of OpenSwoole v22 during the next month. Stay tuned.

References