Software Versioning – Pre-Release Version Numbering for Major Releases

releaseversioning

If we have an app that is not finished already, but we release it, we use a version number like 0.x.x and when it is finished it will be published as 1.0.0.

Now the app's latest version is 1.2.6 and since then it wasn't updated for years, because we rewrite it from scratch and that will be the 2.0.0 release, but we would like to make a pre release like we did it with the first version. What should be the version number?

1.x.x would indicate that it is an update for the first major version, and 2.x.x would say it is a finished second major version. Both statements would be wrong. What to do?

Best Answer

There are pre-release phases for software products: alpha, beta, and release candidate. It depends on how mature your product is. An alpha release would tend to indicate that the application is still relatively unstable and perhaps buggy. This would be anything up to a feature-complete release. As you move toward feature-complete, you may want to consider your software a beta release. It may still be buggy at this point, but it should be stable enough for demonstrations and previews. A release candidate should be feature complete, but may still have some bugs.

You would apply these to your "2.0.0" version. So your "2.0.0 Alpha" is an alpha release of what will become 2.0.0 software. You can change Alpha to Beta and then Release Candidate (or RC) as your software becomes more stable. Sometimes, instead of spelling the words out, it is shortened to "2.0.0a", "2.0.0b", and "2.0.0rc" for the alpha, beta, and release candidate versions of 2.0.0. If you did multiple builds that could be considered a release, you could also append a number after the letters. For example, if you did three beta releases leading up to 2.0.0, they would be 2.0.0b, 2.0.0b1, and so on (you could index from 0 or even call your first beta b1, if you wanted).

Wikipedia also has a length discussion of software versioning. It discusses various versioning schemes used by different applications. It includes a brief discussion of pre-release versions as well. Considering that this is a rewrite of an application, you could throw away the old versioning scheme and choose a more appropriate one if you wanted to.

Related Topic