Jan 5 2009 · Random
So we decided to ship the Windows 7 code as Windows 6.1 – which is what you will see in the actual version of the product in cmd.exe or computer properties.
Really now, is incrementing the major version number such a big deal?
We learned a lot about using 5.1 for XP and how that helped developers with version checking for API compatibility. We also had the lesson reinforced when we applied the version number in the Windows Vista code as Windows 6.0– that changing basic version numbers can cause application compatibility issues.
Let’s see here, the lesson is to avoid incrementing the major version number as it will help developers with version checking for API compatibility. So, it’s not the API changes that cause the compatibility issues, it’s changing the major version number. By this logic, if an API change is made in Windows 7 and I need to check the version number of the system to see how to make the call, it’s easier to check the version number if it’s 6.1 as opposed to 7.0 because the 6 was the major version number for Vista and … I’m going to stop, this makes no sense whatsoever.
Maybe I’m not being fair. Maybe it’s difficult for developers to programmatically check the version number. I’ve never done it, so I investigated a bit, and here’s how it’s done:
dwVersion = GetVersion();
// Get the Windows version.
dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
Well, that doesn’t seem difficult.
So why the mismatch between the name and the internal version number? My guess is a grand battle erupted across the cubicles and offices of Microsoft between those wanting the set the version number at 6.1 to represent the internal changes to the operating system and those wanting to set the version number at 7.0 to represent the seventh major release. In the end a truce was reached, where the release was named “Windows 7” and the internal version number was set at 6.1. Illogical and stupid, but it was the price that had to be payed to end the carnage.