4

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?

7

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.

  • 1
    +1 It's really easy to explain to customers "this is the beta version of our 2.0 product" when you give them version 2.0.0b. – Eric King Mar 5 '15 at 15:03
1

You may follow the:

major.minor[.build[.revision]]

schema, which means that the version 2.0.0 will be the first build of the rewritten project. It doesn't matter if it is released in production, given to the testers or kept in secrecy.

Then, an actual pre-release may be, for instance, 2.0.19.527, and the actual public release may be 2.0.37.692. This will clearly indicate to your customers that this is a second version of your product, given that nobody will ask for 2.0.37.691 or 2.0.36.

This is also used in Windows: the actual release version is never n.0.0.0. For instance, from Wikipedia:

A post-RTM build of Windows 8, build 9364, leaked in March 2013.

or:

Build 9600 of Windows 8.1 was released to OEM hardware partners on August 27, 2013.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.