Software versioning is supposed to be a logical system. Problem is, there's precious little logic left in how Microsoft, Apple, and other vendors number their software.

Burke Holland, Developer Advocate, Telerik

October 6, 2014

7 Min Read

Windows 10: 11 Big Changes

Windows 10: 11 Big Changes


Windows 10: 11 Big Changes (Click image for larger view and slideshow.)

When Oracle released the first iteration of its product in 1979, it slapped on the "Version 2" label. The rationale? Customers would not want to buy a product that was seen as immature. So how do you make a product mature? By incrementing the version number, of course.

The latest offender in Law and Order, SVU (Special Versions Unit), is Microsoft, which inexplicably (or not, as I'll discuss) went directly from Windows 8 to Windows 10, fulfilling a prophetic 2013 April Fool's joke. While Redmond has yet to offer a logical explanation of what happened to version 9, Microsoft is only the latest and most visible offender.

The crime wave is epidemic, to the point that versioning has been turned into branding and is therefore now largely arbitrary and meaningless.

Exhibit A: Each year Apple releases a major version of iOS but only a minor version of OS X. Why? Because iOS is young and needs to mature, but OS X is at Version 10 and needs to stop growing. Who wants to install OS XXXVIII? Moreover, Apple increments the major iOS version number even when there is little discernible change in the operating system. While the move from 6 to 7 was visually perceivable, going from 7 to 8 feels quite underwhelming.

Of course, versions aren't necessarily based on what the user can see. So what ARE they based on? Like most things, the answer is: "It depends."

For example, any idea what the current version of Photoshop is? You probably just know that it's part of Creative Cloud, or Photoshop CC. What version is it? Version 15, also known as "Single Malt Wiskey Cat." Adobe stopped referring to Photoshop by its version number after version 7.

Another interesting example is Microsoft Office. Office has stuck to the traditional "major version" scheme, with the current iteration sitting at 15. The branding is Office 2014. Interestingly enough, Microsoft has kept to this scheme very closely, except for 1992, when it decided to skip Version 2, and in 1995, when it skipped version 6. This was likely because Office is bundled as a suite of individually versioned products, some of which did have 2.0 and 6.0 versions. Got it?

We could go on and on, but the gist is: When do you as a vendor increment a new version number? Whenever you feel like it.

If this bothers you, there is a plan to fix the chaos. Enter Tom Preston-Werner and Semantic Versioning 2.0.0.

Semantic Versioning
The Semantic Versioning 2.0 Introduction (SemVer) very clearly states that the point of versioning is to help manage dependencies. It specifies that a product should be versioned as follows:

  • MAJOR version when you make incompatible API changes.

  • MINOR version when you add functionality in a backward-compatible manner.

  • PATCH version when you make backward-compatible bug fixes.

That seems pretty simple to me. As long as you have no incompatible API changes, your software only increases in minor versions or via patches. When you are talking about something simple like a JavaScript library, this is rather easy to adhere to.

Operating systems are an entirely different story.

Back to the Apple example. While we know Apple clearly doesn't do semantic versioning as prescribed by SemVer 2.0, let's see how it would play out if it did:

The latest release of OS X is version 10.10. That means that there should be no breaking API changes from version 10.9. Well, it turns out, we don't even need to go that far back. Version 10.9.5 includes a breaking API change from 10.9.4 when it comes to code signing. Apple warns "Beginning with OS X version 10.9.5, there will be changes in how OS X recognizes signed apps. Version 1 signatures created with OS X versions prior to Mavericks will no longer be recognized by Gatekeeper and are considered obsolete."

Can we call that an incompatible API change? I would say we definitely can since your signed apps are no longer going to be recognized as such. By semantic versioning standards, 10.9.5 should have been OS XI.

This is not news to IT. We don't really expect software to be semantically versioned, and there is a good reason Microsoft and Apple live up to that low expectation: As it turns out, semantic versioning is terrible for branding.

Versions as brands
Remember OS XXXVIII? We'd probably be waaayyy beyond that going by SemVer standards. Consider the mental stigma. Who wants to install version 37 of your software? That's some old code right there. Kill that sucker already and re-write it so it can stay shiny and new.

Software version numbers are like birthdays. When you're young, it's cool and exciting to get presents. When you're old, it's just annoying to be reminded.

Some companies have taken to just getting rid of version names in their software altogether. With Chrome, Google most famously did this by having a semantic version number that nobody even cares about because it's always updating. That's DevOps in action. The current version of Chrome? 37.0.2062.124. Semantic? I would say definitely. But nobody is going to go out and put that version number on a sticker and slap it on a new Chromebook.

OK, I promised a possible explanation of where Windows 9 went. And that brings us to one set of IT professionals who definitely care: developers.

While "versions as branding" seems harmless, it can have major consequences for the people writing the code. A user on Reddit who identifies as a Microsoft engineer reports that the whole reason Microsoft skipped version 9 is because developers were using code to determine Windows 95/98 versions and a Windows 9 version would get identified as such.

Microsoft dev here, the internal rumors are that early testing revealed just how many third-party products that had code of the form:

if(version.StartsWith("Windows 9"))

{ /* 95 and 98 */

} else {

(Image: Reddit -- New Windows Version Will Be Called Windows 10)

This is insanity. Nobody should ever have written code that checked for the brand name of a product to figure out which version it was. They should have instead checked for Windows version 4, since that's the actual number.

So when we say Windows 10, what we mean is: that's the name, not the version. We don't know for sure, but considering that Vista was 6.0, Windows 7 was 6.1, 8 was 6.2, and 8.1 was 6.3, it's safe to assume that Windows 10 will be version 6.4. But let's face it -- Windows 10 just sounds a whole lot cooler.

Does it matter to IT that Microsoft skipped 9 and went to 10? Not at all. Does it matter that Apple calls its current operating system OS X even though OS X has had at least 10 major releases in itself? Nope.

Versioning as a brand is arbitrary and meaningless and obviously nobody agrees on a standard.

So don't be surprised when we get to iOS X and then the major number stops changing. It's not about properly conveying which version it is, it's about selling more devices.

If the world wasn't changing, we might continue to view IT purely as a service organization, and ITSM might be the most important focus for IT leaders. But it's not, it isn't and it won't be -- at least not in its present form. Get the Research: Beyond IT Service Management report today. (Free registration required.)

About the Author(s)

Burke Holland

Developer Advocate, Telerik

Burke Holland is a web developer living in Nashville. He enjoys working with and meeting developers who are building mobile apps with jQuery / HTML5 and loves to hack on social APIs. Burke works for Telerik as a Developer Advocate focusing on Kendo UI. He is @burkeholland on Twitter.

Never Miss a Beat: Get a snapshot of the issues affecting the IT industry straight to your inbox.

You May Also Like


More Insights