Skip to main content

Menu

Sign In Register

Versioning and Development Phases

I'm using SemVer to version my applications. It is rather standard practice and just by looking at the version, you can understand the development phase or what type of change it includes without even reading the details.

The format is vX.Y.Z where each X / Y / Z means something. While you can learn more about it in SemVer, let me give you the gist of it.

Format vX.Y.Z Explained

X: Major version. Previous major versions are not expected to be compatible. Introduces major changes from its codebase, dependencies, functionalities as well as bug fixes are expected.

Y: Minor version. Introduces new features, expected to be backward compatible within its major version. They can include bug fixes as well.

Z: Patch version. Introduces bug fixes and expected to be backward compatible within its major version.

Development Phases

Outside of numbers like vX.Y.Z there is also additional words that might be suffixed to the version. Each word is aimed to tell you the current phase of the development.

You might see it like

  • vX.Y.Z-alpha / vX.Y.Z-beta / vX.Y.Z-rc
  • vX.Y.Z-alpha.N / vX.Y.Z-beta.N / vX.Y.Z-rc.N- where N can be any positive number that is greater than 0.

Let's dive into what alpha, beta, and rc means.

Alpha

This phase focuses on introducing new features. The aim is not to fix the bugs, the aim is to add new features. Bugs are expected during this phase. There might be bugs even breaks the functionality of the application and makes it unusable.

There might be some bug fixes during this phase but it is not to be expected.

This phase follows following versioning format; vX.Y.Z-alpha or vX.Y.Z-alpha.N

Beta

This phase focuses on bug fixes. The aim is to stabilize the added features. Each iteration is focused on reducing the bugs and making the application and its features more stable. Application breaking bugs should be expected to be fixed as priority.

There might be some necessary, must-have-but-forgotten-for-some-reason features added but that's not the focus of this phase and new features should not be expected.

This phase follows following versioning format; vX.Y.Z-beta or vX.Y.Z-beta.N

Release Candidate (RC)

This phase is the final test phase before making the official, stable release.

This phase follows following versioning format; vX.Y.Z-rc or vX.Y.Z-rc.N

Stable Release

This does not mean bug free. However, in this version most bugs should be ironed out, tested or at least not reported before the stable release.

This phase follows following versioning format; vX.Y.Z

Examples

This is the lifecycle of versions from actively working on adding each new feature to the making the official release of v1.0.0

Working on adding new features

v1.0.0-alpha / v1.0.0-alpha.1-> Adding a new feature, expected to be unstable.

v1.0.0-alpha.2 -> Another new feature added, expected to be unstable.


New features finished, now focusing on fixing bugs to prepare for official release.

v1.0.0-beta / v1.0.0-beta.1-> New features are complete, working on bug fixes, expected to be unstable but not as much as alpha versions.

v1.0.0-beta.2 -> Another bug fix added, still unstable.


App breaking bugs are fixed, there can be some minor bugs but application is getting ready to be release

v1.0.0-rc / v1.0.0-rc.1 -> Release candidate, final tests, expected to be stable.


Application version is officially released as stable

v1.0.0 -> Application is released, considered stable. Minor bugs is expected.