當前位置:
首頁 > 最新 > 微軟精心打造的 Vista 系統,為什麼死得這麼快?

微軟精心打造的 Vista 系統,為什麼死得這麼快?

編者按:從後來的很多反饋看來,Vista都是一個超前於時代的操作系統。但這個操作系統在當年卻遭遇了前所未有的失利——究竟為什麼Vista會失敗、死亡?當時的項目團隊主管之一Ben Fathi在Medium發表了文章What Really Happened with Vista: An Insider』s Retrospective,給我們提供了內部的視角。

Windows有這麼一個傳統:團隊成員在新的Windows系統版本發布後,會在海報上籤上自己的名字(本圖是一張DVD)。而當發布會結束的時候,海報上就會有成百上千個簽名。

經驗是你在需要的時候才會得到的東西。——?Steven Wright

我喜歡讀Terry Crowley的博客(《Vista到底怎麼了?》)。Terry「運籌帷幄之中」,雖然作為局外人,但卻把涉及到Windows Vista項目以及與之相關但已被放棄的Longhorn項目的複雜陰謀報道得精彩迭出。

他正確地指出了困擾這個項目的許多問題,不過在此我並不想重複這些問題。我認為對這種事情,只有從一個內部人士的角度提出看法才不失公允。我也不奢望能夠像Terry的文章那樣說服力強,只求大家能對可能的錯誤有所了解。從Windows Vista的發布日期算起,到現在,已經10年了,但這些教訓在現在比以往任何時候都更有意義。

Windows團隊是個龐然大物,有成千上萬的開發人員、測試人員、項目經理、安全專家、界面設計人員、架構師等等,還有人力資源人員、招聘人員、銷售人員、律師,當然還有很多經理、董事和副總裁等等。然後還有成千上萬的合作團隊(在微軟內部以及外部)支持這一整個系列的團隊的運作,範圍從底層硬體到設備驅動程序,再到平台上的應用程序。

微軟足球場上,Windows團隊的照片。(航空拍攝)

從組織上來說,Windows實際上包含了三個團隊:核心、伺服器和客戶端團隊。核心團隊負責操作Windows系統所有版本所共享的一切核心組件(內核本身、存儲、安全、網路、設備驅動程序、安裝和升級模型、Win32等)。而伺服器團隊則專註於伺服器市場所需的技術(終端服務、集群和高可用性、企業管理工具等),而客戶端團隊負責與桌面和消費者相關(web瀏覽器、媒體播放器、圖片等)的技術。

當然還有其他的組織機構,雖然Windows越來越受歡迎,團隊的規模也在擴大,但基本結構仍然保持不變。可以說,從文化和組織角度講,核心團隊更接近伺服器團隊而不是客戶端團隊——至少在Vista發布之前是這樣。


我是1998年入職微軟的。然後我很幸運,在這頭龐然大物里呆了十幾年——在Windows 2000的全盛時期加入了它,並一直堅持到Windows 7的發布。

在任期的前7年里,我管理負責存儲、文件系統、高可用性/集群、文件級網路協議、分散式文件系統和相關技術的團隊。這與Windows 2000、XP、Server 2003和Longhorn大致相同。

後來,我就調到了負責管理安全項目的部門,可能待了有一兩年的時間吧——大概是從Longhorn項目重啟到Vista發布。我的職責範圍從Windows的安全技術到殺毒產品,再到安全營銷的附加解決方案,以及安全補丁等緊急響應。病毒和蠕蟲給Windows帶來了巨大的打擊,讓微軟在市場上建立的安全軟體的聲譽毀於一旦。

在Vista發布之後,以及Windows 7開發之前的這段時間裡,我管理著Windows的所有核心開發事務。這意味著所有技術開發全都在後台運行,客戶端和伺服器團隊都可以使用。在Vista發布後,Windows各級團隊由開發、測試和項目管理三方負責組織,所以我最後跟兩人一起負責,我管理開發團隊,他們分別管理測試和項目管理團隊。

Windows團隊曾經嘗試過許多大規模和有野心的項目,不過這些項目在幾年後往往被放棄或重新規劃。更早的例子是雄心勃勃的Cairo項目,它最終失敗了,最後有些殘存的理念傳承至Windows 2000中。


在我看來,Windows最大的問題在於每個版本的時長。平均而言,一個版本從開始到完成大約需要3年時間,但「新」代碼的開發時間只有大約6到9個月。其餘時間都用於集成、測試之類的——每個階段持續幾個月。

一些項目的核心開發時間要超過6個月,所以它們就齊頭並進,最後在準備就緒時與主代碼庫合併。這意味著主幹幾乎總是支離破碎的,因為大量的功能被集成或替換掉了。在Windows 7發布期間,為了確保有一個持續健康和功能正常的代碼庫,我們對其進行了更嚴格的控制,但之前發布的版本都有好幾個月的不穩定期。

開發過程總體來說還是比較混亂的,開發人員會說服自己和他人他們的代碼優於別的項目,他們最後能及時優化僅剩的一些小部分,這樣一來即使是半成品,這也是一個可以發布的版本。

3年的發布周期意味著我們很少知道當我們發布新版本時,外部的競爭環境會是什麼樣子的。錯過一場發布意味著項目取消,但一個團隊或高管就是不能讓自己放棄。我個人也負責過一些這樣的項目。


考慮到每個團隊都想把自己的東西夾在新版本中,所以他們通常會在與其他組件的集成、用戶界面、端間測試以及升級等繁瑣而乏味的問題上浪費時間,卻忽略了棘手的問題。反過來,這意味著一些團隊很快變成了別人的瓶頸,因為每個人都在為最後一刻完成用戶界面設計或升級測試而努力。

在任何給定的時間點,都有多個主要的版本處於開發狀態。隨著時間的推移,不同的團隊負責不同情況下的代碼庫開發導致了馬太效應——由於某種原因落後的團隊往往會更落後。

當一個項目接近完成時,項目經理將開始關注下一個版本的需求,而「健康」(富有)團隊的開發人員將開始執行新的代碼,但是組織的大部分(窮人)仍然要應用當前版本。特別是測試團隊很少從舊版本中解放出來,直到它發布,所以新代碼在項目開始時並沒有經過徹底的測試,因為「不健康」的團隊總是落後,對當前版本進行最後的修改,然後進一步落後。這些團隊通常是士氣最低、耗時最高的團隊,這意味著工程師們接手的是他們沒有編寫過、因而也不理解的代碼。


在Vista/Longhorn項目的大部分時間裡,我負責的板塊是存儲和文件系統技術,也就是說我參與了WinFS的工作,儘管它主要是由SQL資料庫團隊(Windows團隊的一個姐妹組織)發起的。比爾·蓋茨甚至親自參與,甚至被戲稱為「WinFS」項目經理。

不過事後看來,顯然谷歌輕鬆地解決了為非結構化數據提供無縫且快速搜索的問題。不過他們這樣做是為了整個互聯網,而不僅僅是為了你的磁碟容量。

當Longhorn項目被取消,Vista殘存的一鱗半爪匆匆組裝在一起時,WinFS項目就已經被否決了。SQL團隊將它作為一個獨立的項目進行了幾年。而那時Windows已經有了一個內置的索引引擎,而且完全是在不需要更改變更應用的情況下實現的。因此,WinFS的相關性變得更加模糊,可項目卻仍在繼續。

Longhorn項目中大量與安全相關的架構在該項目廢止之後,被保存為Windows Vista項目的一部分。我們在迅速膨脹的互聯網世界中學習了很多安全知識,並希望將所學到的經驗用於操作系統之中,以提高所有客戶的整體安全性。

我們別無選擇。因為Windows XP表明了我們是自己成功產品的受害者。當面對互聯網時代的現實時,一個設計初衷僅為實用的系統在滿足安全性方面是遠遠不夠的。解決這些安全問題意味著創建一個並行的項目,即Windows XP Service Pack 2,這是一項巨大的工程,而且從Longhorn項目中汲取了數千個資源。

在Vista中執行嚴格的管理邊界意味著打破Windows系統中的每一個應用程序。部分的解決方案是用戶帳戶控制,但這可以說是Vista最令人討厭的特性。當用戶在運行命令時,系統總會詢問用戶是否真的打算提高許可權級別。由於安裝遺留應用幾乎總是需要提升特權,因此用戶在系統上的初體驗就是大量的賬戶控制窗口彈出,毫無疑問這不會給用戶留下什麼好影響。而如果管理許可權從登錄用戶中被刪除了,可以毫不誇張地說99%的Windows應用程序都無法正常安裝。

從各方面來看,Vista比微軟之前發布的任何操作系統都要安全得多,但在這個過程中,我們也以前所未有的方式打破了應用程序和設備驅動程序的兼容性,因為我們不再支持臭名昭著的應用了,或者使用像用戶賬戶控制這樣的機制來繞過它們。客戶們討厭它,因為他們的應用程序崩潰了;系統合作夥伴討厭它,因為他們覺得他們沒有足夠的時間更新和認證應用程序,所以Vista就這樣被掃地出門。

在許多情況下,這些安全性質的更改意味著需要對第三方解決方案進行深入的系統結構改變。而且大多數系統的供應商都沒有對他們遺留的應用程序進行大量的改進投資。其中一些解決方案採用了非正統的方法來修改數據結構,甚至在內核中使用指令來實現它們的功能,這就經常性地造成嚴重破壞。而大約70%的Windows「藍屏」是由這些第三方驅動程序造成的,他們不願意使用支持的介面程序來實現他們的功能。殺毒軟體供應商因為使用這種方法所以一向口碑不佳。

在我擔任微軟的安全主管期間,我花了數年時間向殺毒軟體廠商解釋為什麼我們將不再允許他們為內核內存中的指令和數據結構打補丁、為什麼這是一個安全隱患,以及為什麼他們需要使用我們批准的程序介面,我們將不再支持他們的遺留應用程序與Windows內核掛鉤——因為黑客們會用同樣的方法來攻擊消費者。我們的「朋友」——殺毒軟體——威脅要起訴我們,聲稱我們是在阻礙他們的生計,濫用我們的壟斷力量!簡直了,有這樣的朋友,誰還需要敵人?即使冒著降低我們共同客戶的安全的風險,他們也不願意改進本就應該改進的方法。


計算機行業那些年裡發生了翻天覆地的變化——手機的興起,雲計算的出現,創建新的廣告業模式,社交媒體的病毒式增長,64位計算機的成熟等等,而這些只是Windows面臨的攻擊的一小部分。

這很正常,因為這體現出了創新者的困境。我們添加的代碼越多,項目的複雜度就越高,團隊的規模就越大,系統規模也越大,也就越難跨越競爭。

好像競爭的壓力還不夠似的,工程師們和項目經理們還得花無數個小時和來自司法部以及公司律師的代表們一起研究看是不是違反了反壟斷法律。

更為殘酷的是,產品的生命周期決定了大約需要3年時間才能推出一個主要的Windows版本,但這對於日新月異的市場來說實在是太慢了。WinFS、安全性和託管代碼只是Longhorn議程上的一些大型項目,除此之外還有數不清的的小賭注。

當你公司上下有成千上萬的人、客戶有數十億的時候,每個人就都有發言權。那些被認為能夠在未來應用到平板和手機的操作系統現在還被要求也能應用到筆記本電腦上、數據中心的伺服器上等等不一而足——更不用說雲端的虛擬機監控程序。當我們試圖同時在市場的各個環節上取得進展時,這些要求與團隊的努力完全是南轅北轍。

Longhorn和Vista不可能被孤立地看待。它們只有在與之前及之後發布的版本(Windows 2000和XP, Windows Server 2008和Windows 7)結合在一起看時才有意義,這樣也能對整個行業有個更全面的了解。


Windows是它自身成功的受害者。它已經成功地滲透到許多市場,而那些市場業務現在對操作系統的設計產生了一定的影響,使其設計理念常常是互相衝突的。嘗試滿足所有這些不同的需求意味著不能完全滿足其中任何一個需求。

微軟在九十年代取得過巨大成功,但在十年後陷入困境。因為周圍的世界在不斷變化,我們在努力跟上它。說實話,這些趨勢我們都把握到了,也努力地回應它們。

簡而言之,我們其實知道當一個特定的操作系統即將被發布時,它在三四年前就已經過時了。而我們所能做的最好的事情是為新的雲服務提供增量和無摩擦的服務。但恰恰相反,我們不斷向現有的系統里添加功能,這就需要在每次發布之前進行數月的測試,結果就在我們最需要加速的時候速度反而變慢了。當然,我們也沒法刪除舊的功能,這些功能確保了在Windows上已經運行的應用程序的兼容性。

現在想像一下,在十幾年或更長的時間裡,為數十億的客戶、數百萬的公司、成千上萬的合作夥伴、成百上千的場景和數十種形式提供一種全支持的操作系統,你就會逐漸對兼容性的噩夢有所了解了。

事後看來,Linux在這方面更成功。開源社區和軟體開發的方法無疑是解決方案的一部分。在這方面,Unix/Linux的模塊化和可插式架構實現了體系結構的有效改進。

微軟的「作戰室」,後來改成「研討室」

內部組織的動態和個性也很重要。我們都有自己最喜歡的特性,我們合作夥伴推動我們採用新的標準,幫助它們在平台上認證。我們都有證明我們的技術和想法的野心……只要我們能在下一個Windows版本中體現出來並「俘獲」數以百萬計的客戶。

然而開發團隊和測試團隊難以保持一致,因為前者努力鍵入代碼,後者則致力於發現更複雜和深奧的測試用例。至少可以說,組織內部的動態很複雜。

當然,這一切都不應該被當作借口。

我們有沒有做錯什麼?當然有,而且錯的不少。

但我們是故意犯錯的嗎?當然不是。

我們能做的更好嗎?當然可以。

換到今天我們能做的更好嗎?當然不,此一時,彼一時。

現在回望過去的時候,應該沮喪還是悔恨呢?我更喜歡把它當成經驗教訓。我敢確定我們沒有人在以後的項目中會犯同樣的錯誤。前事不忘,後事之師。人非聖賢,孰能無過?

編譯組出品。

編輯:郝鵬程、王雅琪


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 36氪 的精彩文章:

獲50萬美元 Pre-A 輪融資,Simulanis 通過 VR 來培訓員工,然而這是一門好生意嗎?
新聞從業者的焦慮:「機器人記者」是否會取代人類記者?

TAG:36氪 |