Windows Confidential: Numerology of the build

Assigning the build number of the Windows release version is a chance for management to do something cute.

Raymond Chen

Let’s go back to 1993. Microsoft had just shipped Windows NT 3.1 as build 528. There’s a very simple reason for that. It was the 528th official build of the product.

There were no special attributes assigned to that value. It wasn’t specifically chosen. It just happened. OK, it may not actually have been the 528th official build. Concurrent development can result in skipping some build numbers.

For example, if the current build number is 256 and you decide to release a beta, you create a second source-code tree for the beta. The builds from the beta tree continue the original sequential number, so the next builds are numbered 257, 258 and so on. Build numbers from the main tree jump ahead to make room, so those would be numbered 300, 301, 302 and so on.

The build managers choose a gap large enough to accommodate the expected number of builds it will take to stabilize on the beta release, plus a generous extra buffer just in case. Consequently, build numbers often follow a track like this:

255, 256, (skip ahead) 300, 301, 302, 303, 304, and so on

257, 258, 259, beta released

There’s not much point in trying to “conserve” build numbers. They’re just numbers. They don’t cost anything. The important thing is that no two builds are given the same build number.

Elsewhere on the Microsoft Redmond, Wash., campus, another team in 1993 was finishing up work on Windows 95. That OS was finally shipped as build 950. This was a cute number, as it was of course a play on 95. It also served a practical purpose. It helped application developers recognize they were running the final build of Windows 95 instead of a prerelease build. When they questioned the release status, they were told, “Check the build number. If it’s more than 700, it’s the final build.”

Developers chose the value 700 so it was comfortably out of range for any naturally occurring build number. Build number increments increase by only one per day (plus some bigger gaps for betas). In order to get a build number greater than 700, someone must explicitly set it there.

The versions of Windows based on Windows 95 carried forward this tradition of giving the final build a cute build number. Windows 98 was build 1,998. Windows 98 SE was build 2,222. And Windows Me (the version of Windows no one ever wants to talk about) was build 3,000.

All through this period, the Windows NT folks resisted the invasion of the cute build numbers and merely used whatever build number came off the line. When the string of Windows 95-based versions of Windows came to an end, that seemed to have signaled the end of the era of the cute final build number.

What’s in a number?

Developers revived that proud tradition during the development of Windows XP. The final build number for Windows XP was set at 2,600, a reference to the hacker magazine. That final build number jumped ahead for the same reason that Windows 95 jumped its build number: To clearly distinguish the final build from the prerelease builds.

Continuing the tradition of the cute final build number, developers gave Windows Vista build number 6,000 and Windows 7 build number 7,600. Windows 8 was going to be build number 8,888. In fact, the team (of which I was a member) actually produced a build with that number, but we discovered a problem. The number 8,888 is not evenly divisible by 16.

Windows Vista introduced the requirement that the final build number of any version of Windows must be a multiple of 16. The servicing team added this rule to let them use the bottom four bits of the build number to encode additional information for internal purposes. Unfortunately, we couldn’t use the next-best choice of 8,800 because build numbers can’t go backward (that would mess up any upgrades).

After some deliberation, we selected a final build number of 9,200. Sorry, it’s not very cute. The numerologists out there might notice that for the past few releases, the build number has increased by exactly 1,600. While that is indeed fascinating, I don’t think it’s intended to mean anything.

Raymond Chen

Raymond Chen's Web site, The Old New Thing, and identically titled book (Addison-Wesley, 2007) deal with Windows history and Win32 programming. You look fantastic in those shoes.