Windows versions

Posted on Updated on

As you all know, many versions and editions of Windows were developed and released over time. After a while it could be useful to have a list by hand that can give you a quick overview of those versions and editions. Below you find a table that lists every main Windows version. With “main” I don’t mean the most important versions; what I do mean, is I only list the distinct versions at “the highest versioning level”, but no sub-versions (versions that fall under the main version). For example, Windows 7 is listed, but I won’t talk about Windows 7 SP1 or some small update for Windows 7. Later on though I’ll mention one “smaller” update anyway, because it’s quite special, in the sense that it’s almost considered to be a main version, although officially it isn’t. Note I’m only dealing with “normal/classic” client and server flavors here, so I’m not talking about Windows Mobile, Windows Phone, Windows Embedded, etc.

Name Technical version RTM date GA date
Windows 1.0 1.01 November 20, 1985
Windows 2.0 2.03 November 1987? December 9, 1987
Windows 2.1 2.10 May 27, 1988
Windows 3.0 3.0 May 22, 1990
Windows 3.1 3.1 March 1, 1992 (April 6, 1992?)
Windows 95 4.0.950 August 24, 1995
Windows 98 4.10.1998 May 15, 1998 June 25, 1998
Windows Me 4.90.3000 September 14, 2000
Windows NT 3.1 3.1 July 27, 1993
Windows NT 3.5 3.5 September 21, 1994
Windows NT 3.51 3.51 May 30, 1995
Windows NT 4.0 4.0.1381 July 31, 1996 August 24, 1996
Windows 2000 5.0.2195 December 15, 1999 February 17, 2000
Windows XP 5.1.2600 August 2001 October 25, 2001
Windows Server 2003 5.2.3790 March 2003 April 24, 2003
Windows Vista 6.0.6000 January 30, 2007
Windows Server 2008 6.0.6001 February 4, 2008 February 27, 2008
Windows 7 6.1.7600 July 22, 2009 October 22, 2009
Windows 8 6.2.9200 August 1, 2012 October 26, 2012
Windows Server 2012 6.2.9200 August 1, 2012 September 4, 2012

The left column…

In the left column we see the official names of the different Windows main versions. As you see the way names are composed, has changed over time; you can hardly call it consistent J. Personally I like consistency, so I’m not really happy with this mix-up, but on the other hand it doesn’t really matter of course (at least from a technical perspective). The reason for this mix-up is marketing. Those marketeers think they know how it should be done and yes, sometimes they’re right, but hey, many other times they are completely wrong. Anyway, let’s not digress too much… J

Besides the names themselves there is another important inconsistency: Windows versions differ on if they target clients and/or servers. Let’s take a quick look:

  • Sometimes a Windows version targets clients only; for example: Windows XP
  • Sometimes a Windows version targets servers only; for example: Windows Server 2003
  • Sometimes a Windows version targets clients and servers; for example: Windows 2000. In this case several client editions and several server editions exist under the version umbrella. A client edition example for Windows 2000 is “Professional”, while a server edition example for the same version is “Server”.

Every version that is meant for clients and servers or clients only starts with the word “Windows” or “Windows NT”. The latter is used for Windows NT versions during the time where both the NT and non-NT Windows series were “valid”. Afterwards, thus starting from Windows 2000, this was reduced again to just “Windows”. This means that the older (pre Windows 2000) “Windows” (but not “Windows NT”) names refer to non-NT Windows versions (for example “3.1” or “98”), while the “newer” (from Windows 2000 on) “Windows” names refer to Windows NT versions (for example “2000”). If a version is targeting servers only, the name starts with “Windows Server”. Note that Windows Me is a non-NT Windows version released AFTER Windows 2000 and still “Windows 2000” isn’t called “Windows NT 2000”, so this is an exception. The reason for this is Windows Me is a latecomer and should conceptually be seen as some kind of an end-of-life version for the non-NT Windows series; in the meanwhile Windows 2000 was already planned and the vision was to re-introduce the “pure” “Windows” name from that point on for the “Windows NT” series, which was thé future for Windows and Microsoft.

Besides the Windows (NT/Server) naming part, those are the different naming choices (referring to the actual version) till now:

  • A year:
    • The year of the release, for example “2012”
    • The year following the year of the RTM, for example: “2000”. This version has been made in December 1999, so it’s very clear that almost everybody got his hands on it after 1999 and thus at first in 2000. From a marketing point of view it would be very stupid to convince people to buy a Windows version called “1999” in the year of… 2000. That’s why they called the version “2000”, even the RTM dates from 1999.
    • A part of the year of the release (i.e. the last two ciphers), for example “98”
  • A textual name, for example “Vista”
  • A version number
    • Consisting of only one number, for example “8”
    • Consisting of multiple numbers, separated by a point and thus forming a more “detailed” version number; for example: “3.1”

Some versions are related to each other in a special way. I’m especially talking about those cases where client and server got their own, separate version, although those 2 versions actually share a lot of stuff and are actually from the same “generation”. An example is Windows XP and Windows Server 2003. Another one is Windows Vista and Windows Server 2008. Perhaps one reason to assign a different version to them is marketing, but on the other hand there is another reason too. Although Windows XP and Windows Server 2003 are from the same “generation” and are “very related to each other”, they still are a little bit too different from a technical point of view. Windows Vista and Windows Server 2008 are actually really each other siblings, at least before the release of Windows Server 2008 R2, which is more related to Windows 7. You see, client and server versions could be connected very closely, sometimes they are no real siblings of each other (or they are, but only till a certain point in time). That is certainly a reason to consider them as different versions. But… as said before, you could certainly consider some versions of belonging to the same “Windows generation” (like Windows XP and Windows Server 2003 for example).

Sometimes you could hear of “Windows 3.2”, “Windows 3.11” or “Windows for Workgroups”. All three of them belong to the main version “Windows 3.1”. 3.2 is a Chinese version of 3.11 and 3.11 is a sub-version of 3.1 (so from a logical point of view it’s more of a 3.1.1 than a 3.11). The sub-versions 3.1 and 3.11 have an extension called “Windows for workgroups”, so that’s not another version, although in practice it’s considered so sometimes by some people/articles/…

Also be aware of the fact that Windows 98 Second Edition (SE) is a sub-version of “Windows 98” and “R2” designations are no separate versions. For example, Windows Server 2003 R2 is a sub-version of Windows Server 2003. The same is true for Windows Server 2008 R2: officially this is a sub-version of Windows Server 2008, although in practice many, many, many of us deal with it like it’s another official main version (but again, it isn’t); at the same time those people designate the non-R2 variant with the name “Windows Server 2008”. The reason for this is quite simple: Windows Server 2008 R2 has quite a lot of new functionality compared to the “R1” of Windows Server 2008 and it was released together with Windows 7, which was a new official main version. At the same time Windows 7 was the successor of Windows Vista, which was the client counterpart of Windows Server 2008 “R1”. So, for many people Windows Server 2008 R2 could easily be seen a new major version too, because it just felt so.

The second column

As just said, every version mentioned at the left side is officially a main version. Marketing, amongst others, certainly drives the creation of such main versions, but technically, from a perspective of developer teams, software engineers and software architects, things can be different and there is a different look at how version numbers are/should be built-up. That’s why we see the so-called technical versions in the 2nd column. The technical version consists of:

  1. The first number: the major version
  2. The second number: the minor version
  3. The third number: the build number

Actually the minor version isn’t that minor, as it’s the build number that precisely identifies a certain version (called a build (hence “build number”)). Well, all this actually happens at a high level. This means we can talk about big versions, service packs and R2s, but not about “small” updates. For example, Windows 7 with Service Pack 1 (SP1) has a technical version of 6.1.7601, only one small increase towards Windows 7 RTM (6.1.7600).

Note: some older versions don’t mention build numbers. Well, a few of them logically do actually, i.e. by suffixing the build number to the minor version number without a dot (.) and thus technically including the build number in the minor version number, getting a possibly confusing minor version system.

We see some official main versions are technically not that “main” (for example, Windows 7 is technically the successor of Windows Vista UNDER major version 6)…

But… even the official technical versions should be interpreted with a little bit of salt, as sometimes development teams like to keep their major versions as long as possible. Why? Well, if the major version is changed, it’s guaranteed new compatibility problems will arise, as some (and even quite many) software pieces do version checks in a wrong way. For example, a piece of software could check if the OS is at least Vista and if so, it’ll run. Let’s say it does this by checking if the technical major version number is 6. If so, the software will run smoothly. As a result the software could fail on an OS with a new technical major version. If Windows 9 (or whatever they would call it) would have a new technical major version (7.x), that piece of software would fail, because it’ll only run if the technical major version is 6! Sometimes this could be intended, but many times it’s just a wrong implementation of the developer (and the same can be said related to the compatibility of websites: many times websites don’t run well in a certain browser (version), this is caused by wrong browser and/or browser version checks of the web developer/designer!). You would be surprised how many software packages would stop running if the major version would be increased. So that’s why some technical major versions are subject of discussion. This was the case with Windows 8. For a big part the codebase is the same as the one from Windows 7, so it’s logical the major version stays the same. On the other hand Windows 8 can be considered the start of a new generation of Windows versions (I guess you know why J), so a new major version would have been logical too; yes, even from a technical point of view. You could wonder why Microsoft has chosen to keep the major version: because they give priority to the codebase similarity when determining versions? Or because compatibility issues are too important, especially when introducing something like Windows 8 (because of the critics and the sensitivity, extra compatibility problems could certainly be missed!). I don’t have the answer to this question, but it’s not that important, so let’s move on.

Technical versions can reveal a lot though. For example, Windows XP has a technical version of 5.1.2600, while Windows Server 2003 is one minor version higher (5.2.3790). It’s no proof at all, but it at least insinuates they differ “a little bit”/”already quite a bit” from a version point of view, which indeed explains why they are considered as 2 different main (non-technical) versions. But that doesn’t conflict with the fact that they are indeed quite related and together form a Windows “generation”.

We also see Windows Vista and Windows Server 2008 have almost the same technical version, though this is not the same story as with Windows XP and Windows Server 2003. Actually both Windows Vista and Windows Server 2008 should have exactly the same technical version (i.e. 6.0.6000), clearly indicating both really are from the same version and only differ in feature set. The thing is Windows Server 2008 R2 leaves that “being on par with Windows Vista” path (explaining why Windows Server 2008 as a whole can’t be part of the same version as Windows Vista) and joins the “being on par with Windows 7” path; another thing is the RTM’d Windows Server 2008 already includes Service Pack 1 (SP1) (yup, that’s right!), which explains why it has a slightly higher build number (6001) than Windows Vista’s RTM build number (6000). You see, their technical versions differ, but that’s because of the WS08 SP1 factor, so you should compare both non-SP1 technical versions and then you would get the same result (6.0.6000).

If we look at Windows at a more high level, we can group versions even further than what I just called “generations”. For me there are the following “big generations”:

  1. Everything before Windows NT and Windows 95
  2. Windows 95, 98 and Me (existing in the same time frame as the following)
  3. Everything from the first NT version and ending with NT 4.0 (existing in the same time frame as the previous set of Windows versions)
  4. Everything from Windows 2000 and before Windows 8/Windows Server 2012
  5. Windows 8 and Windows Server 2012 (and possibly later versions)

This categorization is based on a few factors I won’t explain here, as other categorizations could be made, all depending on how you look at it.

Another categorization is the one of Microsoft determining the major version numbers of Windows’ technical versions. Personally I think this type of categorization is somewhere between I call “generations” and “big generations”. Let’s analyze this a little bit and at the same time analyze a few other version factors, especially the mapping between technical versions and main versions:

  • You can clearly see Windows 2.0 and Windows 2.1 are technically quite similar: both have a major version number of 2
  • You can clearly see Windows 3.0 and Windows 3.1 are technically quite similar: both have a major version number of 3
  • Every main version with a major version number of 1, 2 or 3 has a “marketing version number” consisting of the major and the “real” minor version number (I told you the build number is sometimes added to the “real” minor version number)
  • Windows 95, 98 and Me are actually quite the same technically: they all have major version 4. This is also quite logical, as they are indeed non-NT Windows versions and they indeed follow the Windows 3.x version (also being non-NT). The version names are different: 95 and 98 refer to the last 2 digits of a year, while Me is a descriptive name (standing for “Millennium” or “Millennium Edition”, because it was released around the year 2000).
  • During the time frame with versions 95, 98 and Me another, new Windows series was introduced, Windows NT. This series first continued the 3.x version logic and later also increased to 4. Version numbers are analog to previous version names, with 1 exception: 3.51 is the whole technical version. It’s clear why this is so: there was already a version called 3.5 J. I want to stress the fact that those technical versions are DIFFERENT from the 3.x technical versions mentioned in the second bullet! For example, Windows 3.1 and Windows NT 3.1 have both the same technical version number, but both numbers refer to a different version instance!
  • Windows 2000, Windows XP and Windows Server 2003 have a major version number of 5, but commercial names include years or text.
  • Windows Vista, Windows 7 and Windows Server 2008 are definitely newer and all fall under the major technical version of 6. Windows 8 and Windows Server 2012 were added to this collection. Commercial names are textual, years or version numbers.
  • Windows Server 2008 R2 increases not only the build number, but even the minor version number (to be equal to Windows 7’s technical version by the way).
  • Windows 8 is the successor of Windows 7, but you could ask yourself where the 7 comes from, as there is no Windows 6 and it falls under the major technical version of 6. Well, remember I told about application compatibility and version numbers? Well, IMHO Windows 7 is technically quite similar to Windows Vista, so it could make sense to keep Windows 7 under the technical version 6 umbrella, but on the other hand there was a consideration and a wish to give it a new technical major version (7), hence Windows 7. But at the end the technical version was never changed, because
    • It’s indeed not THAT different from Windows Vista
    • AND application compatibility was too important at that time

Windows 8 just follows the same concept in naming, successing the 7 of its predecessor and also not leaving the 6-branch of the major technical version. At this time too much application compat issues would be a huger PITA!

Interesting to know is that technical versions don’t include very minor updates. For example, if you install a normal, minor update (so no service pack or R2 release), the technical version of your Windows installation isn’t updated. The reason is that the way minor updates work is so complex you can’t get that reflected into the general Windows version. If you want to get the very precise Windows version, you need the technical version + a list of every installed minor update that builds upon that technical version. What does happen though after installation of an update (whether minor or not), is that the affected code files get a version increase. Yes, code files have their own version, consisting of 4 version numbers: major, minor and build number of the OS it belongs to, added with a fourth version number, which is the build number of the file itself. It’s very important though to note that the first 3 numbers are referring to the OS level the file belongs to and thus can differ from the version numbers of the OS you’re working on. For example: suppose you have Windows 7 installed, install some minor update that updates a certain DLL and install SP1, which doesn’t include that first update (a service pack contains many, but not every older update!). The DLL version will be 6.1.7600.x, while your OS will be 6.1.7601 (the technical version of Windows 7 SP1). This indicates that the minor update is not part of or builds upon the SP1 level, although it clearly can be present on a system with SP1.

It’s also worth mentioning that within an official main version an edition can be released with a higher minor version number than the “normal, base” edition. I’m talking about “Windows XP 64-bit Edition” (for IA-64) and “Windows XP Professional x64 Edition” (for x64), which have a technical version of 5.2.3790, while 5.1.2600 is the base technical version for XP in general and the other WP editions in particular. We have already seen this for an update within the same main version, i.e. Windows Server 2008 R2 has a minor version of 1 instead of 0 (Windows Server 2008 pre-R2), but this time we’re talking about editions. Typically such editions are released (much) later and are quite special, explaining why they are technically more “evolved”. In the case of Windows XP this is true: 64 bit computing was completely new to Windows and IE-64 was even a complete new architecture (CPU, but also UEFI, GPT,…).

One way to check for your main and technical versions is to run the built-in Windows tool “System Information” (msinfo32.exe).

The third and fourth column

Anyway, in the third column we can see the official Release-to-Manufacturing (RTM) date. The RTM is a main version’s first to be released “sub-version” as a complete package. Now this sounds complicated, isn’t it? J Let’s take an example: Windows 7. Windows 7 is a main version and from the very first development stage new “sub-versions” are created. At certain moments milestones are reached and the most important milestone is when the product is considered to be “finished” or “final”; that is, “finished/final for a while”, because afterwards updates (like Service Pack 1 (SP1) for example) are developed and distributed, increasing the “sub-version” under the Windows 7 umbrella. The first to be released “sub-version” as a complete package (thus not as an update) (the “finished for a while” version I was just talking about) is typically also the “sub-version” that gets distributed, shipped, sold, released, etc. the first time for that main version, named the Release-to-Manufacturing (RTM) build, because at that point the main version is ready to be released, including to OEM’s “factories”. Sometimes, though very exceptional, it could be that the “finished for a while sub-version” isn’t released at all, but a later “sub-version” is released the first time for the main version (for whatever reason); with other words, sometimes the first released build (the RTM) isn’t officially the first “final” version.

Also, sometimes multiple “sub-versions” can be released as complete packages, but only the first one is the main version’s RTM (well, that’s just how it’s defined…). But… the concept of “RTM” can be considered towards a specific update too instead of towards the whole main version. This way we can also speak of the RTM of a specific sub-version, whether it has been made available as a complete package or not. For example, we can speak of the RTM of an “R2”-release or Service Pack.

Let’s take a more concrete look: the “sub-version” of Windows Vista that was considered the first “final” version has technical version 6.0.6000. Microsoft decided to release this as a complete package, which makes this “sub-version” Windows Vista’s RTM. Another example is Windows Server 2008: the “sub-version” of Windows Server 2008 that was considered the first “final” version also has technical version 6.0.6000, but Microsoft decided NOT to release it. Development continued and Service Pack 1 (SP1) for Windows Server 2008 was created, but it wasn’t made available as an update, because there was no pre-SP1 Windows Server 2008 released yet (so the distribution of the update would make no sense). On the other hand a new full complete package was made, consisting of the new “sub-version” that included SP1 and that particular “sub-version” (with technical version 6.0.6001 by the way) was effectively released, making it WS08’s RTM. Why? Well, first you have to know that Windows Vista SP1 has a technical version of 6.0.6001. It was Microsoft’s intention to make Windows Vista and WS08 on par (although that changed with WS08 R2), but the “finished for a while” version of WS08 wasn’t really ready yet feature-wise, so that’s why it hasn’t been released. Microsoft decided to combine the release of Windows Vista SP1 and WS08 SP1 together, not releasing some kind of an intermediate version for WS08 first.

After a while R2 for WS08 was made (RTM’d), which was made available as another complete package under the Windows Server 2008 umbrella (but not every R2-release is available as a complete package; R2 for WS03 for example is actually available as an update). It is said that WS08 R2 was RTM’d, just the same way as is said that Windows Vista SP1 was RTM’d; but don’t forget those are not the same as Windows Server 2008 RTM and Windows Vista RTM. Got it?

Just remember that an RTM is a relative concept: a main version has its RTM, just as a specific update has its RTM. The RTM of something (main version or update) is the specific version of that something that is or will be released the first time (and most of the time the only time, although that’s not always the case; see Windows Server 2008: an R2 exists as a complete package of Windows Server 2008). It distinguishes itself from earlier (developmental) and later ((typically separate) update) versions of that something.

Anyway, the third column lists the RTM dates for the different main versions. Those dates present the official build dates, but are not the dates the product is effectively distributed, shipped, sold, released or whatever. Typically several release dates follow later; a release date is a date which the product becomes available to a certain target audience on, so the first of those release dates is officially the day the product is released (although not to everyone, as just explained). Most of the time certain “privileged” entities can get their hands on the product earlier (for example TechNet and MSDN subscribers). The latest release date is conceptually the one for “everyone”, the so-called General Availability (GA) and this date is shown in the fourth and last column.

Note: nobody who’s officially a kind of customer can get his hands on it before the first release date, except when they are also part of some special test programs, partnerships or whatever, but that can’t be called a release and neither is distributing a version (although typically a pre-RTM version, which isn’t finished yet) internally for “real life testing” (called dogfooding, where the company/user/organization/… testing the product is called the guinea pig).

It’s quite obvious Microsoft tries to RTM and release versions with the same technical version as together as possible: sometimes really on the same day (for example Windows 8 and Windows Server 2012 were both RTM’d on the 1st of August 2012), sometimes close to each other (for example, the GA for Windows 8 was the 26th of October 2012, a little bit later than the 4th of September 2012, the GA date for Windows Server 2012).

Future Windows versions

For Windows 8 a major update is planned, codenamed “Blue” (although the same codename is also used for other product/service updates like Windows Phone 8 and SkyDrive). The update will officially be called “8.1”, except when Microsoft would still change its mind of course. The update is expected at the end of 2013, while an official preview (a developmental (so pre-final and pre-RTM) build that’s considered to be a milestone and is meant to be made public so some (private) or all (public) people/entities could already taste the product and give feedback, including about discovered bugs) is announced for the 26th of June 2013.

8.1 can be considered as some kind of an “R2”-release, but not as a service pack (SP). In practice a service pack is almost always a collection of thoroughly tested minor updates which are bug fixes, although officially and technically that’s not the case by definition (and there are cases where a service pack does contain more than just bug fixes and does offer new features!), unlike popular belief. An “R2” is considered more as a new set of features, but that concept doesn’t sound sexy and isn’t known to consumers (R2 is used for Windows Server only). Perhaps the name “8.1” is indeed the best way to deal with a new set of bug fixes AND features. Concerning the technical version nothing is known yet; I think the build number will be increased by one (1), as other “big” updates got the same kind of technical version increase.

Windows Server will also get a “Blue” update, but it’s not yet known how it’ll be called officially. As “Blue” targets different products and services, will contain a lot of new features and this already quite soon after their RTMs/releases, we see Microsoft has a new update vision and strategy. In the world of mobile and the cross-over between mobile and classic, I think that’s the right way. It’s unknown at this point though if we may expect a major update yearly, but I certainly hope so.

After Windows 8 of course we may expect a new main version. There is no official news about it yet, but once in a while the name “Windows 9” pops up, even in public Microsoft texts (I’m talking about official job openings). I must warn you that it’s unknown

  • When we may expect this version
  • How it will be called officially
  • What the official codename is
  • What its technical version will be, not even what the minor or major version numbers will be

So it could be that Microsoft only uses the term “Windows 9” to refer to the “the next main version following Windows 8” and nothing more.

In the past Microsoft has changed its vision about when to release new main versions. A few years ago the official vision was to release a new main version every 4 years. This was changed to every 3 years. A while ago though it was insinuated by Microsoft this will occur even more frequent in the future, probably because to keep up with very fast pace nowadays. The fact we’ll already see an 8.1 this year, seems to confirm this. Personally I expect “Windows 9” already 2 years after Windows 8 (so this means 2014) or at last 3 years after Windows 8 (and then the pace of new main versions stays the same; in that case expect “Windows 9” in 2015).

In the current IT world and the way Microsoft is integrating many, many things and implementing many, many new ideas, I think a new main version every 2 year would be great (and every 3 years a minimum!), just as some kind of “R2” (like Windows 8.1 is) in between to bridge the gap between two main versions. Let’s wait and see how it all turns out.


The most important thing is you can “see” and understand the “version hierarchy” of Windows (sub-)generations (that’s how I call it), “commercial”/”main” versions (you know what I mean, right?) and technical versions and how those are built up. Also you must understand consistency isn’t always present… Last, but not least you should understand that not everything that’s weird at first sight, isn’t logical; actually some things are logical, but they are more complex than you would think…

I hope this article was worth reading. One last remark: I had to look up the RTM and GA dates, but have found that it’s difficult to find the correct dates. If you think some of my dates are wrong or missing, please correct me. Thanks!



Windows Internals, 5th Edition


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s