原文地址:https://technet.microsoft.com/en-us/magazine/jj663498.aspx
原文标题:Windows Confidential: Numerology of the build
作者:Raymond Chen为微软员工,从文章看作者参与了windows8的开发工作
要点:作者回顾了从NT3.1一直到8的版本最终版本号的由来,解释了8888之所以被抛弃的原因,最近的几个版本(vista,7,8),最终版本号的要求只有能被16整除,然后尽量比较cute,我翻译成有趣。巧合的是vista,7,8的版本号之间都相差1600,以此看来,windows10的版本号可能是10800。另外,windows的另一个分支th2版本号从10500起跳,明显是留给RTM分支版本号空间,所以10400也可能是最终版本号。最近windows10的版本号10176,10192,10208都能被16整除,很明显是RTM候选版。
Windows机密:版本号的数字命理学
作者:Raymond Chen
分派windows发行版的版本号是管理部门抖机灵的机会。
让我们回到1993年,微软刚刚发布windows nt 3.1,版本号为528,原因非常简单,因为他是第528个正式的编译版本。这个号码并没有特殊属性,并不是特别选择的,一切自然而然。
好吧,实际上并不一定是第528个编译版本,并行开发会导致跳过一些版本号。例如,当前版本号是256,我们决定发布一个公开的beta版本,beta分支的一系列版本会沿用256之后的版本号,例如257,258等,内部开发主干的版本号会跳跃,来为beta分支腾出版本号空间,可能跳到300,然后是301,302等。这个跳跃的版本号必须足够大,给beta分支留出足够的版本号空间,以达到能发布的稳定程度,防止出现版本号用完,但是系统仍不能达到公开发布标准的情况发生。结果是,版本号经常会像这样:
主干:255,256,跳过,300,301,302……
Beta分支:257,258,259,公开发布的beta版
保留一些版本号不用是没有任何意义的,他们只是数字而已,并不会付出任何成本,只要两个版本不会被分配一样的版本号即可。
在微软华盛顿州雷蒙德园区的另一个地方,另一个团队在1993年正在完成windows95的开发工作,这个操作系统最终的版本号是950,这是个有趣的版本号,它显然与windows95中的95有关(恰好10倍关系),它也有特殊目的,它帮助应用程序的开发者识别正在运行在windows95的最终版本上,而不是之前的测试版预览版,“检查一下版本号,如果超过了700,这就是windows95的最终正式版”。
开发者选择700,是因为它完全超出了之前的内部版本号,版本号一般每天增加1(出现beta分支的时候会跳跃)。为了得到大于700的版本号,只能是人为设置的。
基于windows95的其他windows版本继承了给最终正式版一个有趣版本号的传统。Windows98的版本号是1998,windows98 se的版本号是2222,windows me(这个版本非常失败以至于没人愿意提他)的版本号是3000。
在这期间,windows NT系列并没有采用给最终版设定有趣的版本号这一惯例,当 window95为基础的windows版本走向终结,似乎标志了给最终版设定有趣的版本号这一惯例的终结。
开发者们在WindowsXP身上复活了了这一让他们骄傲的传统,windows xp的最终版本号被设定为2600,这一数字是从一本黑客杂志上得来的,这次,最终版本号大跨越和windows95原因相同,为了清楚的区分最终版本和之前发布的预览版本。
延续了这一给最终版设定有趣的版本号的传统,开发者给windows vista 的最终版本号是6000,windows7的最终版本号是7600,windows8的最终版本号本来会是8888,实际上,开发团队(当时我就是其中一员)也确实编译了版本号为8888的版本,但是我们发现了一个问题,8888不能被16整除。
Windows vista引入了一个新的要求,那就是任何最终版windows的版本号必须能被16整除,这是服务团队增加的新规则,目的是便于他们为了内部用途,使用版本号的后4字节来编码附加信息,不幸的是,我们也不能使用另一个不错的选择——8800了,因为版本号是不能走回头路的,只能增不能减。
经过一些考量,我们选择了9200作为最终的版本号,很遗憾,这个数字不怎么有趣,敏感的数字命理学家可能已经注意到了,在过去的几个发行版中,最终版本号每次都是恰好比上个版本增加了1600(9200-7600=1600,7600-6000=1600,),这确实是个很有趣的巧合,但是我不觉得这意味着什么或是开发者故意这么做的。