編者按:從后來的很多反饋看來,Vista都是一個(gè)超前于時(shí)代的操作系統(tǒng),。但這個(gè)操作系統(tǒng)在當(dāng)年卻遭遇了前所未有的失利——究竟為什么Vista會(huì)失敗,、死亡?當(dāng)時(shí)的項(xiàng)目團(tuán)隊(duì)主管之一Ben Fathi在Medium發(fā)表了文章What Really Happened with Vista: An Insider’s Retrospective,,給我們提供了內(nèi)部的視角,。 Windows有這么一個(gè)傳統(tǒng):團(tuán)隊(duì)成員在新的Windows系統(tǒng)版本發(fā)布后,會(huì)在海報(bào)上簽上自己的名字(本圖是一張DVD),。而當(dāng)發(fā)布會(huì)結(jié)束的時(shí)候,,海報(bào)上就會(huì)有成百上千個(gè)簽名。
我喜歡讀Terry Crowley的博客(《Vista到底怎么了?》),。Terry“運(yùn)籌帷幄之中”,,雖然作為局外人,但卻把涉及到Windows Vista項(xiàng)目以及與之相關(guān)但已被放棄的Longhorn項(xiàng)目的復(fù)雜陰謀報(bào)道得精彩迭出,。 他正確地指出了困擾這個(gè)項(xiàng)目的許多問題,,不過在此我并不想重復(fù)這些問題。我認(rèn)為對這種事情,,只有從一個(gè)內(nèi)部人士的角度提出看法才不失公允,。我也不奢望能夠像Terry的文章那樣說服力強(qiáng),只求大家能對可能的錯(cuò)誤有所了解,。從Windows Vista的發(fā)布日期算起,,到現(xiàn)在,已經(jīng)10年了,,但這些教訓(xùn)在現(xiàn)在比以往任何時(shí)候都更有意義,。 Windows團(tuán)隊(duì)是個(gè)龐然大物,有成千上萬的開發(fā)人員,、測試人員,、項(xiàng)目經(jīng)理、安全專家,、界面設(shè)計(jì)人員,、架構(gòu)師等等,還有人力資源人員,、招聘人員,、銷售人員、律師,當(dāng)然還有很多經(jīng)理,、董事和副總裁等等,。然后還有成千上萬的合作團(tuán)隊(duì)(在微軟內(nèi)部以及外部)支持這一整個(gè)系列的團(tuán)隊(duì)的運(yùn)作,范圍從底層硬件到設(shè)備驅(qū)動(dòng)程序,,再到平臺(tái)上的應(yīng)用程序,。 微軟足球場上,Windows團(tuán)隊(duì)的照片,。(航空拍攝) 從組織上來說,,Windows實(shí)際上包含了三個(gè)團(tuán)隊(duì):核心、服務(wù)器和客戶端團(tuán)隊(duì),。核心團(tuán)隊(duì)負(fù)責(zé)操作Windows系統(tǒng)所有版本所共享的一切核心組件(內(nèi)核本身,、存儲(chǔ)、安全,、網(wǎng)絡(luò),、設(shè)備驅(qū)動(dòng)程序、安裝和升級(jí)模型,、Win32等),。而服務(wù)器團(tuán)隊(duì)則專注于服務(wù)器市場所需的技術(shù)(終端服務(wù)、集群和高可用性,、企業(yè)管理工具等),,而客戶端團(tuán)隊(duì)負(fù)責(zé)與桌面和消費(fèi)者相關(guān)(web瀏覽器、媒體播放器,、圖片等)的技術(shù),。 當(dāng)然還有其他的組織機(jī)構(gòu),,雖然Windows越來越受歡迎,,團(tuán)隊(duì)的規(guī)模也在擴(kuò)大,但基本結(jié)構(gòu)仍然保持不變,??梢哉f,從文化和組織角度講,,核心團(tuán)隊(duì)更接近服務(wù)器團(tuán)隊(duì)而不是客戶端團(tuán)隊(duì)——至少在Vista發(fā)布之前是這樣,。 我的微軟經(jīng)歷我是1998年入職微軟的。然后我很幸運(yùn),,在這頭龐然大物里呆了十幾年——在Windows 2000的全盛時(shí)期加入了它,,并一直堅(jiān)持到Windows 7的發(fā)布。 在任期的前7年里,,我管理負(fù)責(zé)存儲(chǔ),、文件系統(tǒng)、高可用性/集群、文件級(jí)網(wǎng)絡(luò)協(xié)議,、分布式文件系統(tǒng)和相關(guān)技術(shù)的團(tuán)隊(duì),。這與Windows 2000、XP,、Server 2003和Longhorn大致相同,。 后來,我就調(diào)到了負(fù)責(zé)管理安全項(xiàng)目的部門,,可能待了有一兩年的時(shí)間吧——大概是從Longhorn項(xiàng)目重啟到Vista發(fā)布,。我的職責(zé)范圍從Windows的安全技術(shù)到殺毒產(chǎn)品,再到安全營銷的附加解決方案,,以及安全補(bǔ)丁等緊急響應(yīng),。病毒和蠕蟲給Windows帶來了巨大的打擊,讓微軟在市場上建立的安全軟件的聲譽(yù)毀于一旦,。 在Vista發(fā)布之后,,以及Windows 7開發(fā)之前的這段時(shí)間里,我管理著Windows的所有核心開發(fā)事務(wù),。這意味著所有技術(shù)開發(fā)全都在后臺(tái)運(yùn)行,,客戶端和服務(wù)器團(tuán)隊(duì)都可以使用。在Vista發(fā)布后,,Windows各級(jí)團(tuán)隊(duì)由開發(fā),、測試和項(xiàng)目管理三方負(fù)責(zé)組織,所以我最后跟兩人一起負(fù)責(zé),,我管理開發(fā)團(tuán)隊(duì),,他們分別管理測試和項(xiàng)目管理團(tuán)隊(duì)。 Windows團(tuán)隊(duì)曾經(jīng)嘗試過許多大規(guī)模和有野心的項(xiàng)目,,不過這些項(xiàng)目在幾年后往往被放棄或重新規(guī)劃,。更早的例子是雄心勃勃的Cairo項(xiàng)目,它最終失敗了,,最后有些殘存的理念傳承至Windows 2000中,。 問題1:更新迭代的時(shí)長過久在我看來,Windows最大的問題在于每個(gè)版本的時(shí)長,。平均而言,,一個(gè)版本從開始到完成大約需要3年時(shí)間,但“新”代碼的開發(fā)時(shí)間只有大約6到9個(gè)月,。其余時(shí)間都用于集成,、測試之類的——每個(gè)階段持續(xù)幾個(gè)月。 一些項(xiàng)目的核心開發(fā)時(shí)間要超過6個(gè)月,,所以它們就齊頭并進(jìn),,最后在準(zhǔn)備就緒時(shí)與主代碼庫合并,。這意味著主干幾乎總是支離破碎的,因?yàn)榇罅康墓δ鼙患苫蛱鎿Q掉了,。在Windows 7發(fā)布期間,,為了確保有一個(gè)持續(xù)健康和功能正常的代碼庫,我們對其進(jìn)行了更嚴(yán)格的控制,,但之前發(fā)布的版本都有好幾個(gè)月的不穩(wěn)定期,。 開發(fā)過程總體來說還是比較混亂的,開發(fā)人員會(huì)說服自己和他人他們的代碼優(yōu)于別的項(xiàng)目,,他們最后能及時(shí)優(yōu)化僅剩的一些小部分,,這樣一來即使是半成品,這也是一個(gè)可以發(fā)布的版本,。 3年的發(fā)布周期意味著我們很少知道當(dāng)我們發(fā)布新版本時(shí),,外部的競爭環(huán)境會(huì)是什么樣子的。錯(cuò)過一場發(fā)布意味著項(xiàng)目取消,,但一個(gè)團(tuán)隊(duì)或高管就是不能讓自己放棄,。我個(gè)人也負(fù)責(zé)過一些這樣的項(xiàng)目。 問題2:團(tuán)隊(duì)龐大,,進(jìn)度不一致且最終測試難考慮到每個(gè)團(tuán)隊(duì)都想把自己的東西夾在新版本中,,所以他們通常會(huì)在與其他組件的集成、用戶界面,、端間測試以及升級(jí)等繁瑣而乏味的問題上浪費(fèi)時(shí)間,,卻忽略了棘手的問題。反過來,,這意味著一些團(tuán)隊(duì)很快變成了別人的瓶頸,,因?yàn)槊總€(gè)人都在為最后一刻完成用戶界面設(shè)計(jì)或升級(jí)測試而努力。 在任何給定的時(shí)間點(diǎn),,都有多個(gè)主要的版本處于開發(fā)狀態(tài),。隨著時(shí)間的推移,不同的團(tuán)隊(duì)負(fù)責(zé)不同情況下的代碼庫開發(fā)導(dǎo)致了馬太效應(yīng)——由于某種原因落后的團(tuán)隊(duì)往往會(huì)更落后,。 當(dāng)一個(gè)項(xiàng)目接近完成時(shí),,項(xiàng)目經(jīng)理將開始關(guān)注下一個(gè)版本的需求,而“健康”(富有)團(tuán)隊(duì)的開發(fā)人員將開始執(zhí)行新的代碼,,但是組織的大部分(窮人)仍然要應(yīng)用當(dāng)前版本。特別是測試團(tuán)隊(duì)很少從舊版本中解放出來,,直到它發(fā)布,,所以新代碼在項(xiàng)目開始時(shí)并沒有經(jīng)過徹底的測試,因?yàn)椤安唤】怠钡膱F(tuán)隊(duì)總是落后,,對當(dāng)前版本進(jìn)行最后的修改,,然后進(jìn)一步落后,。這些團(tuán)隊(duì)通常是士氣最低、耗時(shí)最高的團(tuán)隊(duì),,這意味著工程師們接手的是他們沒有編寫過,、因而也不理解的代碼。 問題3:與軟件供應(yīng)商關(guān)于安全問題的矛盾在Vista/Longhorn項(xiàng)目的大部分時(shí)間里,,我負(fù)責(zé)的板塊是存儲(chǔ)和文件系統(tǒng)技術(shù),,也就是說我參與了WinFS的工作,盡管它主要是由SQL數(shù)據(jù)庫團(tuán)隊(duì)(Windows團(tuán)隊(duì)的一個(gè)姐妹組織)發(fā)起的,。比爾·蓋茨甚至親自參與,,甚至被戲稱為“WinFS”項(xiàng)目經(jīng)理。 不過事后看來,,顯然谷歌輕松地解決了為非結(jié)構(gòu)化數(shù)據(jù)提供無縫且快速搜索的問題,。不過他們這樣做是為了整個(gè)互聯(lián)網(wǎng),而不僅僅是為了你的磁盤容量,。 當(dāng)Longhorn項(xiàng)目被取消,,Vista殘存的一鱗半爪匆匆組裝在一起時(shí),WinFS項(xiàng)目就已經(jīng)被否決了,。SQL團(tuán)隊(duì)將它作為一個(gè)獨(dú)立的項(xiàng)目進(jìn)行了幾年,。而那時(shí)Windows已經(jīng)有了一個(gè)內(nèi)置的索引引擎,而且完全是在不需要更改變更應(yīng)用的情況下實(shí)現(xiàn)的,。因此,,WinFS的相關(guān)性變得更加模糊,可項(xiàng)目卻仍在繼續(xù),。 Longhorn項(xiàng)目中大量與安全相關(guān)的架構(gòu)在該項(xiàng)目廢止之后,,被保存為Windows Vista項(xiàng)目的一部分。我們在迅速膨脹的互聯(lián)網(wǎng)世界中學(xué)習(xí)了很多安全知識(shí),,并希望將所學(xué)到的經(jīng)驗(yàn)用于操作系統(tǒng)之中,,以提高所有客戶的整體安全性。 我們別無選擇,。因?yàn)?span>Windows XP表明了我們是自己成功產(chǎn)品的受害者,。當(dāng)面對互聯(lián)網(wǎng)時(shí)代的現(xiàn)實(shí)時(shí),一個(gè)設(shè)計(jì)初衷僅為實(shí)用的系統(tǒng)在滿足安全性方面是遠(yuǎn)遠(yuǎn)不夠的,。解決這些安全問題意味著創(chuàng)建一個(gè)并行的項(xiàng)目,,即Windows XP Service Pack 2,這是一項(xiàng)巨大的工程,,而且從Longhorn項(xiàng)目中汲取了數(shù)千個(gè)資源,。 在Vista中執(zhí)行嚴(yán)格的管理邊界意味著打破Windows系統(tǒng)中的每一個(gè)應(yīng)用程序。部分的解決方案是用戶帳戶控制,,但這可以說是Vista最令人討厭的特性,。當(dāng)用戶在運(yùn)行命令時(shí),,系統(tǒng)總會(huì)詢問用戶是否真的打算提高權(quán)限級(jí)別。由于安裝遺留應(yīng)用幾乎總是需要提升特權(quán),,因此用戶在系統(tǒng)上的初體驗(yàn)就是大量的賬戶控制窗口彈出,,毫無疑問這不會(huì)給用戶留下什么好影響。而如果管理權(quán)限從登錄用戶中被刪除了,,可以毫不夸張地說99%的Windows應(yīng)用程序都無法正常安裝,。 從各方面來看,Vista比微軟之前發(fā)布的任何操作系統(tǒng)都要安全得多,,但在這個(gè)過程中,,我們也以前所未有的方式打破了應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序的兼容性,因?yàn)槲覀儾辉僦С殖裘阎膽?yīng)用了,,或者使用像用戶賬戶控制這樣的機(jī)制來繞過它們,。客戶們討厭它,,因?yàn)樗麄兊膽?yīng)用程序崩潰了,;系統(tǒng)合作伙伴討厭它,因?yàn)樗麄冇X得他們沒有足夠的時(shí)間更新和認(rèn)證應(yīng)用程序,,所以Vista就這樣被掃地出門,。 在許多情況下,這些安全性質(zhì)的更改意味著需要對第三方解決方案進(jìn)行深入的系統(tǒng)結(jié)構(gòu)改變,。而且大多數(shù)系統(tǒng)的供應(yīng)商都沒有對他們遺留的應(yīng)用程序進(jìn)行大量的改進(jìn)投資,。其中一些解決方案采用了非正統(tǒng)的方法來修改數(shù)據(jù)結(jié)構(gòu),甚至在內(nèi)核中使用指令來實(shí)現(xiàn)它們的功能,,這就經(jīng)常性地造成嚴(yán)重破壞,。而大約70%的Windows“藍(lán)屏”是由這些第三方驅(qū)動(dòng)程序造成的,他們不愿意使用支持的接口程序來實(shí)現(xiàn)他們的功能,。殺毒軟件供應(yīng)商因?yàn)槭褂眠@種方法所以一向口碑不佳,。 在我擔(dān)任微軟的安全主管期間,我花了數(shù)年時(shí)間向殺毒軟件廠商解釋為什么我們將不再允許他們?yōu)閮?nèi)核內(nèi)存中的指令和數(shù)據(jù)結(jié)構(gòu)打補(bǔ)丁,、為什么這是一個(gè)安全隱患,,以及為什么他們需要使用我們批準(zhǔn)的程序接口,我們將不再支持他們的遺留應(yīng)用程序與Windows內(nèi)核掛鉤——因?yàn)楹诳蛡儠?huì)用同樣的方法來攻擊消費(fèi)者,。我們的“朋友”——?dú)⒍拒浖{要起訴我們,,聲稱我們是在阻礙他們的生計(jì),濫用我們的壟斷力量,!簡直了,,有這樣的朋友,誰還需要敵人,?即使冒著降低我們共同客戶的安全的風(fēng)險(xiǎn),,他們也不愿意改進(jìn)本就應(yīng)該改進(jìn)的方法。 問題4,、5,、6:新形勢、大型公司創(chuàng)新難,、壟斷計(jì)算機(jī)行業(yè)那些年里發(fā)生了翻天覆地的變化——手機(jī)的興起,,云計(jì)算的出現(xiàn),創(chuàng)建新的廣告業(yè)模式,,社交媒體的病毒式增長,,64位計(jì)算機(jī)的成熟等等,而這些只是Windows面臨的攻擊的一小部分,。 這很正常,,因?yàn)檫@體現(xiàn)出了創(chuàng)新者的困境。我們添加的代碼越多,,項(xiàng)目的復(fù)雜度就越高,,團(tuán)隊(duì)的規(guī)模就越大,系統(tǒng)規(guī)模也越大,,也就越難跨越競爭,。 好像競爭的壓力還不夠似的,工程師們和項(xiàng)目經(jīng)理們還得花無數(shù)個(gè)小時(shí)和來自司法部以及公司律師的代表們一起研究看是不是違反了反壟斷法律,。 更為殘酷的是,,產(chǎn)品的生命周期決定了大約需要3年時(shí)間才能推出一個(gè)主要的Windows版本,但這對于日新月異的市場來說實(shí)在是太慢了,。WinFS,、安全性和托管代碼只是Longhorn議程上的一些大型項(xiàng)目,除此之外還有數(shù)不清的的小賭注,。 當(dāng)你公司上下有成千上萬的人,、客戶有數(shù)十億的時(shí)候,每個(gè)人就都有發(fā)言權(quán),。那些被認(rèn)為能夠在未來應(yīng)用到平板和手機(jī)的操作系統(tǒng)現(xiàn)在還被要求也能應(yīng)用到筆記本電腦上,、數(shù)據(jù)中心的服務(wù)器上等等不一而足——更不用說云端的虛擬機(jī)監(jiān)控程序。當(dāng)我們試圖同時(shí)在市場的各個(gè)環(huán)節(jié)上取得進(jìn)展時(shí),,這些要求與團(tuán)隊(duì)的努力完全是南轅北轍,。 Longhorn和Vista不可能被孤立地看待。它們只有在與之前及之后發(fā)布的版本(Windows 2000和XP, Windows Server 2008和Windows 7)結(jié)合在一起看時(shí)才有意義,,這樣也能對整個(gè)行業(yè)有個(gè)更全面的了解,。 問題7:兼容性難題Windows是它自身成功的受害者。它已經(jīng)成功地滲透到許多市場,,而那些市場業(yè)務(wù)現(xiàn)在對操作系統(tǒng)的設(shè)計(jì)產(chǎn)生了一定的影響,,使其設(shè)計(jì)理念常常是互相沖突的,。嘗試滿足所有這些不同的需求意味著不能完全滿足其中任何一個(gè)需求。 微軟在九十年代取得過巨大成功,,但在十年后陷入困境,。因?yàn)橹車氖澜缭诓粩嘧兓覀冊谂Ω纤?。說實(shí)話,,這些趨勢我們都把握到了,也努力地回應(yīng)它們,。 簡而言之,,我們其實(shí)知道當(dāng)一個(gè)特定的操作系統(tǒng)即將被發(fā)布時(shí),它在三四年前就已經(jīng)過時(shí)了,。而我們所能做的最好的事情是為新的云服務(wù)提供增量和無摩擦的服務(wù),。但恰恰相反,我們不斷向現(xiàn)有的系統(tǒng)里添加功能,,這就需要在每次發(fā)布之前進(jìn)行數(shù)月的測試,,結(jié)果就在我們最需要加速的時(shí)候速度反而變慢了。當(dāng)然,,我們也沒法刪除舊的功能,,這些功能確保了在Windows上已經(jīng)運(yùn)行的應(yīng)用程序的兼容性。 現(xiàn)在想象一下,,在十幾年或更長的時(shí)間里,,為數(shù)十億的客戶、數(shù)百萬的公司,、成千上萬的合作伙伴,、成百上千的場景和數(shù)十種形式提供一種全支持的操作系統(tǒng),你就會(huì)逐漸對兼容性的噩夢有所了解了,。 事后看來,,Linux在這方面更成功。開源社區(qū)和軟件開發(fā)的方法無疑是解決方案的一部分,。在這方面,,Unix/Linux的模塊化和可插式架構(gòu)實(shí)現(xiàn)了體系結(jié)構(gòu)的有效改進(jìn)。 微軟的“作戰(zhàn)室”,,后來改成“研討室” 內(nèi)部組織的動(dòng)態(tài)和個(gè)性也很重要,。我們都有自己最喜歡的特性,我們合作伙伴推動(dòng)我們采用新的標(biāo)準(zhǔn),,幫助它們在平臺(tái)上認(rèn)證,。我們都有證明我們的技術(shù)和想法的野心……只要我們能在下一個(gè)Windows版本中體現(xiàn)出來并“俘獲”數(shù)以百萬計(jì)的客戶。 然而開發(fā)團(tuán)隊(duì)和測試團(tuán)隊(duì)難以保持一致,因?yàn)榍罢吲︽I入代碼,,后者則致力于發(fā)現(xiàn)更復(fù)雜和深?yuàn)W的測試用例,。至少可以說,組織內(nèi)部的動(dòng)態(tài)很復(fù)雜,。 當(dāng)然,,這一切都不應(yīng)該被當(dāng)作借口,。 我們有沒有做錯(cuò)什么,?當(dāng)然有,而且錯(cuò)的不少,。 但我們是故意犯錯(cuò)的嗎,?當(dāng)然不是。 我們能做的更好嗎,?當(dāng)然可以,。 換到今天我們能做的更好嗎?當(dāng)然不,,此一時(shí),,彼一時(shí)。 現(xiàn)在回望過去的時(shí)候,,應(yīng)該沮喪還是悔恨呢,?我更喜歡把它當(dāng)成經(jīng)驗(yàn)教訓(xùn)。我敢確定我們沒有人在以后的項(xiàng)目中會(huì)犯同樣的錯(cuò)誤,。前事不忘,,后事之師。人非圣賢,,孰能無過,? 編譯組出品。 編輯:郝鵬程,、王雅琪 |
|