Although this has not been announced publicly yet, it is not a secret anymore because the version changes are visible. NetBSD has changed its versioning scheme to a less confusing one.

Up until now, major releases increased the number of the previous version by one; i.e., after 1.4 we had 1.5, and then 1.6... all of these being releases with lots of new features. There were minor releases too, used to provide enhancements to major releases (mostly bug fixes); their name was the same as the major version they enhanced, but with a third digit in them, like 1.5.3, 1.6.2, etc. All this looks reasonable, you may think.

But then we had the versioning scheme for the development versions (or current), which was confusing. They were named like the latest major release but with a letter prepended to them, increased with every kernel interface change. That is, we had 1.6A, 1.6B, 1.6C etc. which could eventually lead to 1.7 (next major release). Note that all of these were "greater" than 1.6 and 1.6.x.

I said 1.7 a while ago, but as you may already know, the next public major version will be 2.0. This number was chosen because this release has lots of new features in it (more specifically, multiple development branches were merged in). Well, we could still apply the previous scheme if we didn't touch anything else... but we did.

Further major versions will increase the major number... uhmm... that sounds reasonable, isn't it? Of course! ;-) And minor releases will increase the minor number, obviously. So, all next versions will be formed by two digits. After 2.0, there will be a 2.1; concurrently, we will be developing 3.0. Here is where problems come in. With the previous scheme, any development version would be treated as being "less" than a minor release; for example, 2.0H looks like an older release than 2.1. This is very confusing, and causes problems with some system macros used to check the actual version of the system (you couldn't compare __NetBSD_Version__ directly any more).

So we changed it: from now on, the current branch will have the same major number as the latest version published and a minor number of 99. That is, we are at 2.99.9 at the moment (9 comes from H's position in alphabet plus 1).

Humm... not clear yet? Let's summarize all this in a table:

Kind of releaseOld schemeNew scheme
Stable (Major)2.02.0
Stable (Minor)2.0.12.1
Stable (Major)2.13.0
Current2.0A2.99.1
Current2.0B2.99.2

The official announcement, due to this week (hopefully), will have more information than this, as well as the rationale behind all changes; I have ommited some details (like patch releases).

Edit (4th October): This has been officially announced.

Go to posts index

Comments from the original Blogger-hosted post: