揭秘!微软近年Windows开发史上最大纰漏
事件
■Windows开发遭遇瓶颈,大规模重写低层代码!
■危机决非今日爆发,豪赌多芯片支持种下祸根!
■微软欲做庄IBM、英特尔,跨平台梦想重塑新系统!
确 认
Windows Vista代码大规模重写
2006年3月25日,微软官方宣布推迟其核心产品Office 2007的发布时间到2007年1月,可谓是为“2007”这个版本号正了名。人们大概早已麻木了微软推迟产品发布这样的行为,但却在几天以后爆出一个大冷门:此次Office 2007推迟发布的原因,是因为要配合Windows Vista的延迟发布。而对于后者的延迟发布,微软官方的解释是“为了在CES 2007大会前完善产品性能”。但一条爆炸性的消息通过地下渠道不胫而走:Windows Vista出现了重大的产品功能缺陷,有超过60%的源代码需要重写。
但随即微软官方再次出面否认了大规模重写代码的说法,事实究竟是怎样的?
从微软内外获取的信息已经可以确认,Windows Vista确实出现了重大问题,有大规模的低层代码需要重新编写,由于各个系统模块需要修改的程度不同,所以需要重写的工作总量不一定是60%,但已经可以认定是微软近年Windows系列产品开发的最大纰漏。
微软家庭娱乐部已经接到通知暂停大多数正在进行的其他编码与测试工作,“以和Windows客户端部门协同工作”。Windows Vista的Beta发布也戛然而止。
一位资深微软开发工程师沮丧地告诉笔者:“本来说好了在下次代码完成检视以后就可以度假,现在又莫名其妙地取消了。”而另一位刚加入微软雷蒙德总部的软件测试工程师则兴奋异常地告诉记者,“我居然有了从头开始设计Windows核心部件的机会,你知道吗?这种机会可不是人人都能赶上。”这个核心部件位于相当靠近硬件的部分,属于指令优化相关的内容。在这个级别上的部件尚且需要从头设计的话,可以确认,Windows Vista确实在某些关键的问题上遇到了很大困难,也会有相当比例的代码需要重写。
虽然官方首页上只字未提,但是MSDN订户已经数月未领到新平台光盘。而微软一向很积极进行的新平台反馈和错误报告收集工作,也突然放慢了脚步。
就连与微软关系密切的系统集成商也有所察觉:“确实已经很久没有关于Windows Vista测试报告的反应了,近来好像只有人管Windows XP的测试,微软的新系统肯定出什么事了。”
关于此次事件,Windows客户端部门的一位不愿意透露姓名的开发经理也表示,目前微软的绝大多数开发工作还处于“scrum”(允许即兴修改)的状态。很多情况下,产品代码都没有经过很严格的单元测试就正式发布到代码库里了。虽然高素质的软件开发工程师微软并不缺少,但对于开发工作同样重要的软件测试却重视不够,参与软件测试的工程师水平可谓参差不齐。
虽然微软的项目号称“测试驱动开发”,但是测试在微软并没有得到应有的高度重视。测试用例虽然也要经过开发经理过目,但是还基本上属于难以想象的手工作坊的层次。虽然在Windows部门,软件开发工程师都是训练有素的,可是代码的版本管理仍然很成问题。最后这位开发经理表示:“我想,这次Windows Vista的代码出了问题,我们每一个开发经理都应该接受教训,是到了重视软件工程的时候了。”但他表示自己并不知道整个系统需要大规模重写的具体代码比例,单从他负责的这个项目来看,“大概有一半左右的代码需要进行不同程度的修改,为的是适应新的系统需求。”
原来测试也只是借口,“炸弹”引爆的真正导火索是“新的系统需求”。
谜 底
微软欲坐庄IBM、英特尔
那么,到底是怎样的“新的系统需求”导致了微软在这个关键时刻准备重写大量底层代码?
顺着时间,让我们一步步接近事件真相。
探询的眼光首先投向微软的“亲密伙伴”——英特尔。3月初,英特尔股票大跌,几乎所有的未招聘职位全部冻结。一反常态的是,其Viiv部门却一直在招新人。
再回头看看微软这段时间在做什么:它悄悄地淡化了Windows XP ×64为AMD CPU作优化的声音,相反,却在宣传基于英特尔芯片的Windows XP Media Center Edition上下足了功夫。
如果把目光再往前推几个月,我们不难发现,微软发布了它跨时代的娱乐产品Xbox 360,并已经跃跃欲试地准备借此抢滩家用娱乐平台。这一系列看似不相关事件的背后,却隐藏了同样的一个主题,而它正是本次重写的起因:微软的下一代操作系统,决不是只打算做一个现在已经如此成熟的Windows XP的界面改善版本,而是要赋予更多内涵,这个系统要能够胜任未来可能利用它的各种硬件设备!
Windows 2000对Windows XP的巨大销售滞阻作用已经让微软越来越明显地感觉到,如果Windows Vista面世的时候,不能带来绝对震撼的革新变化,那它的处境会比Windows XP艰难得多。如果说Windows 2000卖的是“性能”,Windows XP卖的是“体验”,那么Windows Vista卖的只能是“无处不在”。而要做到这一点,作为纯粹的软件生产商的微软靠自己的力量是不够的,它需要芯片厂商的支持。
所以,它自然而然地想到了有着二十年合作经验的老朋友英特尔。而英特尔的Viiv部门,则正是号称“下一代影音娱乐之芯”的核心研发部门。这种合作的未来,谁也不知道会怎么样,但是有一点是肯定的,那就是无论是微软还是英特尔,面对上千亿美元的家庭娱乐市场,都没有合作之外的其它选项。那个微软开发经理所说的“新的系统需求”,当然也就囊括了满足英特尔的Viiv项目组新设计的需求。
但还有一个问题,同样处于核心地位的Xbox 360使用的是IBM的芯片,而未来,他一定会融入英特尔的Viiv。
于是一个极其大胆、风险极大的想法在微软诞生。
如果微软能够在自己的新系统中采用两种完全不同的指令集,以便能统一两个平台下的系统,那么微软将第一次成为IBM和Inel的庄家:我的Vista将提前出炉,看看你们谁愿意成为我的芯片合作伙伴,我的订单就给谁!
这种在技术上极度困难的豪赌为微软今日的危机种下了祸根。
首先微软拿IBM开刀,试图让Xbox 360与新系统有一个好的沟通,正是在这一点上微软立刻踩中了地雷:Windows Vista与Xbox 360在通讯协议框架上出现了问题,由此带来的问题可以通过更轻松地修改芯片来完成,但无奈,IBM又怎么可能主动帮助微软来完成新系统来制衡自己呢?所以微软只能开始艰巨的修改大量低层代码的任务。牵一发而动全身,这样的改动在未来还会产生怎样的联动效应,现在还难以做出评估。如今能直接看到的是微软从Xbox开发组抽调了上百人到Windows的开发组,用以保证Windows Vista的新代码质量。
所谓愿赌服输,根据微软内部开发人士透露,新系统的开发确实走到了一个相当困难的地步,代码重写已经是没有选择的决定了。
微软的豪赌非但没能吊起芯片厂商的胃口,还搬起石头砸了自己的脚,乖乖地去重写自己的操作系统代码以在两种指令集之间取得一种无奈的平衡。可以说,微软欲坐庄IBM、英特尔的梦想在危机爆发的这一刻碎掉了。
教 训
史无前例的芯片导致系统重写
Windows Vista设计的初衷只是将Windows XP往前更推进一步,并没有打算重写。因为重写和修改是有本质不同的,重写意味着此前的代码将被视作完全无用,要花费极大的精力从头开始设计、编码、测试和发布。不到万不得已,微软是决不至于出此下策的。
硬件方面的新设计,必然要求软件与之配合,而这种事情如果放在五年之前,很可能会以英特尔或者IBM的让步而告终——毕竟修改硬件比软件重写要容易得多。但这回,微软要秘密坐庄两个硬件芯片巨头,自然不会有往日谈判的筹码。
对于未来决战数字家庭,微软深知这场战争的失败会决定很多事,甚至会让微软帝国一夜之间不复存在。所以在这样的情势下,重写Windows Vista也就成了值得一搏的尝试。这也就产生了史无前例的芯片导致系统重写的事件。
重写操作系统,在微软的近30年Windows历史上只有过两次。一次是上世纪的90年代中期,微软把那帮暑期实习生在没有任何强有力的软件工程约束下写出的Windows的早期代码全部推翻,写出了供服务器使用的Windows NT内核。还有一次是1999年,微软在Windows 98的蓝屏体验越来越流行的情况下,花了数十亿美元的资金几乎从零开始写出了Windows 2000,并把Windows用户统一在了NT内核下。这两次重写都给微软带来了极大的商业成功:Windows NT 4.0把红极一时的Novell打得落花流水,Windows 2000更是几乎在一夜之间彻底扭转了Windows稳定性的口碑。而建立在Windows 2000的代码之上的Windows XP,更是创下个人桌面操作系统销售史上的空前奇迹。2005年,Windows取得了个人桌面市场(Windows XP)、手持设备市场(Windows Mobile)和服务器市场(Windows Server 2003)的三连冠,它们的基础代码系统是Windows 2000。
而这一次的代码重写对微软又意味着什么呢?
微软必须直面来自Google和雅虎在互联网领域的挑战,同时在娱乐领域又有苹果和索尼两大对手。微软的血液里最重要的元素永远是操作系统,而其它的摇钱树如办公软件、浏览器和服务器也只有建立在操作系统之上才能发挥功效。如果要占领新设备的空间,操作系统更是主要的战场。所以它的操作系统战略,无论如何不能犯方向性的错误。微软现在值得庆幸的是,Windows XP的销售业绩似乎使它还有一点时间用来喘息。可是谁知道明年的CES 2007上,Google不会宣布自己已经研制出了新一代的操作系统并公开免费下载?
另一个很大的问题是,微软必须找到受自己控制的芯片供应商,因为下一代的竞争已经不是在一个统一兼容平台上的竞争了,光有软件已经不够了。微软在发布Xbox 360的时候,顺便试了一把IBM。不过看来,毕竟新朋友不如老朋友,99%的可能性,微软的下一代整体平台战略的合作伙伴,应该也只能是英特尔。不过英特尔的Viiv组这么快就将了微软一军,恐怕也是从来都居高临下蹂躏芯片厂商的微软始料未及的。我们可不要忘记,这只是第一次呢。如果再继续下去,向来视源代码为生命的微软,会不会就此沦为芯片厂商的奴隶?也许会,也许不会,只是这一次Windows Vista的大重写,让微软知道了一件事:这世界不是他一家说了就算数的。