Hibernate has CR postfix in their releases for the 4.0 version of hibernate, for example 4.0.0.CR7. What does the CR part mean? When would I use this kind of release numbering?
Versioning – What Does CR Mean in Version Numbers?
versioning
Related Solutions
IMHO version numbers are like product names; important in that they're visible but unimportant in that they're decoration rather than content.
Still the version number, like a product name, carries meaning. And the most important thing you can do is avoid confusion. So here are some common expectations with respect to version numbers. To the extent that these exceptions are not met, the user will probably be confused:
Version numbers are monotonically increasing
This is probably the most obvious expectation, and at the same time the least likely to actually be true. At-a-glance, the user expects that version 2.3.5 comes after version 2.2.17, and has the same or better technology. But of course 2.3.x is a development branch, and 2.2.x is stable, and 2.3.5 actually was release back in 2004 and the 2.2 branch is still actively being worked on and 2.2.17 was released just last April and contains... well, you get the idea. You might as well just call version 2.2 "Potato" for all the meaning that the number carries. Welcome to version "Potato-17"!!
Similar Versions are Upgradeable/Compatible
If I have version 3.7 on my computer, and 3.8 comes out with all new shiny frozbots, I expect that with some upgrade or patch or whatever, my 3.7 can become 3.8 with no interruption. But if I'm on 3.7 and you release 5.2, I'm not so optimistic. Of course, I'd rather be pleasantly surprised rather than disappointed.
The first digit is significant
I wouldn't even bother to mention this if Java wasn't so prominently confusing on the matter. Unless someone told you, you would not expect that "Java 7" was actually version 1.7. And the first time you heard this, you response was almost certainly: "What? .. Why?"
Clearly the purist will say that the major version number will only change if the platform change is not backwards-compatible. But do you actually intend to drop backwards compatibility ever? Often major version revs are a marketing decision not a technical one; the Java absurdity comes from both camps having it their way at the same time, to almost comical effect.
Finally
As I just mentioned, version numbers are often as much about marketing as they are about technology. And that's OK, since that's kind of what version numbers are for: the inform you at a glance as to what's new about the software. Big number change means big functionality change. Small number change means almost no functionality change. That's what people expect. Whether it's true or not determines whether or not your version numbers carry the same meaning that your users think they do.
-- EDIT --
I forgot to mention this, but Caleb pointed it out nicely: Don't use version numbers to indicate anything important (e.g. stable/unstable) without making it otherwise explicit elsewhere. Yes, you know that the odd minor version number indicates development, but that makes one of us. Debian's "unstable" release moniker is a good example; or you could also use a totally separate product name; "Frozbot 1.2" for your product name, and "Devbot 1.3" for your development version.
There's really only one rule with version numbers - consistency.
While it would be "nice" to have the first official version of your product as 1.0 (which is why beta versions are often labeled "0.something") there's no hard and fast rule that says they have to be.
If you've already called your beta version 1.0 then just start incrementing from there using your "1.0.1" scheme so that the first version uploaded to the App Store is at least 1.0.something.
Years ago a product I was working on was labeled "4.0" for it's first release - to make the product seem "more mature" to potential customers. You probably couldn't get away with that these days, but it didn't raise any questions we couldn't answer.
Related Topic
- Building software with version numbers
- Versioning – Should All Component Version Numbers Always Be the Same?
- Are version numbers needed
- TestFlight Version Numbers – Understanding and Management
- What version numbers should I assign to builds on different branches as part of continuous integration for NET Core-based projects
Best Answer
CR=candidate for release
The use of the CR (Candidate Release) qualifier is for releases that we anticipate can be the GA release, but we need the community to help validate the release. Again, there is an optional numeric qualifier that can be added if there is a need for multiple CR releases. Finally, the use of the Final qualifier is for completed releases for the community.
Check the following links for more information and confirmation:
https://forum.hibernate.org/viewtopic.php?p=2449518
http://community.jboss.org/wiki/JBossProjectVersioning
http://antwerkz.com/javabot/javabot/home/3/%23hibernate/2/29/1/11/0/2011/