Skip to content

Versioning

Sim edited this page May 1, 2023 · 9 revisions

This project uses a custom versioning scheme to differentiate between stable releases and pre-releases (alpha versions). The versioning follows the pattern:

major.minor.patch-release_type.counter

  • major, minor, and patch follow the Semantic Versioning guidelines.
  • release_type is either prod for stable releases or alpha for pre-release versions.
  • counter is a unique, incrementing number for each release within the same version and release type, primarily used to facilitate "silent updates" without triggering user update notifications (for the user to update they would need to re-download from https://beta.freeso.org or the Releases page)

For example:

  • 1.8.14-prod.3 represents the third stable release of version 1.8.14.
  • 1.8.14-alpha.5 represents the fifth alpha (pre-release) of version 1.8.14.

Using this versioning scheme helps to clearly distinguish between stable releases meant for production use and pre-releases meant for development and testing. It also ensures that each release within the same version and release type has a unique identifier.

Why use a counter?

The counter in this custom versioning scheme plays an essential role in managing "silent updates." These updates are crucial for delivering minimal impact updates, enabling incremental deployment, and reducing update fatigue among users.

Although users would still need to re-download the software to get the updates, the counter helps developers release these updates without explicitly prompting users. This ensures that new users and users who are aware of the updates can benefit from the enhancements without disruption, while not overwhelming others with frequent update notifications.

As users need to re-download the updated version manually, they still maintain control over when and how they update their software. Changelogs are always posted to the Releases page.

The small changes included in these silent updates would eventually, of course, be available in the next user-prompted version (a version in which x.y.z is incremented).