微軟著名工程師和Windows服務器設計師。
“我們是在1988165438+10月份作為壹個群體走到壹起的。”Lucovsky告訴我們並強調,NT團隊的第壹個任務是獲得壹臺開發機,其次是壹臺25MHz的386 PC,110 MB硬盤和13 MB內存。"它們質量很高。"他笑著說。前兩周,除了用Word寫最初的設計文檔,沒有什麽大的開發活動。
最後,是時候開始寫代碼了。“我們在1988 65438+2月中旬左右檢查了原始代碼,”Lucovsky說。“到10月底,它只有壹個在英特爾i860模擬器上啟動的非常基本的系統。”其實這才是NT名字的真正由來。根據Lucovsky的說法,“新技術”壹詞是在產品取得市場成功後添加的。“起初,我們將NT的目標鎖定在Intel i860(代碼編號N-Ten),這是壹種令人討厭的RISC處理器。由於我們沒有i860機器,我們必須使用i860模擬器。這就是為什麽我們稱它為NT,因為它在‘n-ten’上工作。”
1989年4月,新任命的NT團隊在模擬器上運行了基本的系統內核。“我們五個來自DEC的人和來自微軟的Steve Wood開始壹起工作,”Lucovsky說。“我們組保留了很久。過了壹個夏天,我們開始思考:創造壹個操作系統有多難?我們制定了18個月完成NT的計劃。但是我們忘記了壹些重要的因素,比如用戶模式,網絡等等。”
1989之後,NT團隊開始擴張。他們增加了壹個正式的網絡團隊和壹個擴大的獨立安全團隊,他們以前負責文件系統和本地化開發。“第壹年,我們增加到50人,”Lucovsky說。“在這壹年,我們終於得到了i860的第壹個原型,因此我們可以取代模擬器。我們開始研究上下文切換的數量,試圖找到壹種方法讓它更好地工作。我們幾乎立刻發現i860永遠不會工作。因此,我們開始專註於MIPS系統,另壹種RISC設計。”
1989 65438+2月,NT團隊決定放棄i860,換成MIPS R3000芯片。“我們在兩三個月的時間裏,在真實的硬件上無休止地引導NT,”Lucovsky告訴我們。“當我們將其移植到MIPS時,我們獲得了獎勵。我們把NT設計成可移植的,它幾乎立刻就開始工作了。這種變化並沒有帶來多大的痛苦。”
此後,NT團隊迅速擴大,微軟不同陣營的人現在也加入進來。當壹種使用圖形的新風格被創造出來時,圖形團隊迅速成長。他們也開始把NT換成當時主流的PC處理器Intel i386。Lucovsky解釋了為什麽他們壹開始沒有定位i386。“我們暫時避開386是為了避免局限於這個系統,我們不想采用壹個不可移植的想法。”他說,如果壹開始就定位在Intel系列芯片,前期可以有高性能的系統,但那樣會長期傷害NT,很難跟上新架構的發展,比如最近基於64位安騰芯片的Windows Server 2003。
NT變成了Windows NT
“我們的核心系統非常堅實,因此我們可以讓NT從1990中的386-25適應嵌入式設備、64路64位多處理器機器和1000美元單元的刀片服務器。”
——大衛·湯普森
微軟副總裁,Windows Server產品組
“在1990的春天,我們的MIPS版本繼續壹波三折,同時我們也開始熱情地開發386版本,”盧科夫斯說。“這是另壹個重大突破。”當年5月,微軟發布了Windows 3.0,立即引起了全世界的關註。Windows因其基於PC的圖形功能而取得了顯著的成功。“我們開始研究Windows 3.0,並問自己,‘如果我們用32位版本的Windows取代OS/2,會發生什麽?’”Lucovsky拋出了壹個更深層次的問題:“史蒂夫·伍德(Steve Wood)、斯科特·路德維希(Scott Ludwig)、壹群圖形工程師和我自己,我們四個人研究了16位Windows API,研究了如何將其擴展到32位。我們花了壹個月的時間完成了壹半的API收集,然後交給100的設計評測人員,看看他們是怎麽想的。"
新的API最終被命名為Win32。關鍵是,雖然是新的API,但外觀和運行方式都和16位Windows API相似,開發者可以很容易地將程序移植到新系統中。“我們使得將16位程序移植到nt上變得非常容易,”Lucovsky說,“這些程序將受益於NT的獨特功能,例如更大的尋址空間。我們還添加了許多16位版本中沒有的API。我們添加了主流的新功能,使其成為壹個完整的操作系統API,但我們使用了Windows程序員熟悉的風格。”
這立即在微軟內部引起了反響。“當他們看到它是多麽容易使用時,他們立刻就喜歡上了它,”Lucovsky說。“它是基於Windows而不是OS/2,它使用的是完全不同的編程模式。”但是更換OS/2產品,把NT變成32位版本的Windows,帶來了新的問題,不完全是技術問題。微軟必須獲得ISV和OEM的批準,當然,它必須通知IBM這壹變化。“我們做了壹個IBM的ISV預覽版,有20多頁,然後我們說,‘看,這就是我們要做的。’起初他們認為Win32只是OS/2的壹個迷人的昵稱,但後來妳可以看看他們的臉:‘等壹下,這不是OS/2!’"
OS/2的拋棄永遠傷害了兩家公司的感情。“但是我們執行了批準並開始了程序,”Lucovsky說。"所以我們選擇Win32來運行NT而不是OS/2子系統."他說,那壹刻,這個產品就變成了Windows NT。
NT的模塊化結構促進了這種變化。“感謝我們的微內核系統,它弱化了內核和應用環境之間的相關性,比如POSIX和Win32。我們不必改變內核,也不必從頭開始編程,”Lucovsky告訴我們。“時間表的內容不必更改。我們在兩周內運行命令行應用程序。這是9月1990。”
湯普森闡述了NT基礎的重要性:“我們的核心系統非常堅實,所以我們可以讓NT從1990的386-25適配到嵌入式設備、64路64位多處理器機器和1000美元壹個單元的刀片服務器。我們可以為其提供全方位的服務。”
1990年9月是Windows nt真正的轉折點,也是戴夫·湯普森加入NT團隊的時候。他之前領導微軟的Lanman for OS/2 3.1高級開發團隊。“我們經歷了壹場變革,”湯普森告訴我們。“我們的團隊已經從28人增加到300人。我們有了第壹個真正的產品計劃。”
NT紀念品
10月365438日:大衛·卡特勒來到微軟。
1988 165438+10月:NT項目開始運營。
1993年7月27日:Windows NT 3.1在售。
1994 9月21: Windows NT 3.5發售。
1995年5月30日:Windows NT 3.51發售。
1996 7月31: Windows NT 4.0發售。
2000年2月17: Windows 2000發布。
2006 54 38+0 65438+25 00年10月:Windows XP發售。
2003年4月24日:Windows Server 2003發布。
1993年7月,Windows NT的第壹個版本Windows NT 3.1發布,版本號的命名與當時的16位Windows產品相同。那個版本的NT有兩個版本,桌面和服務器,采用域形式的分布式安全機制。此後,NT團隊開始不斷發布產品,所有的開發都基於相同的底層代碼。
第二個發布版本,Windows NT 3.5(代號Daytona),9月份上市,1994。“代托納是壹個非常有價值的項目,”湯普森說。“我們專註於尺寸和性能,改進3.1的功能。代托納得到了顯著的改善和增強。”Daytona最初的主題是大小、性能、壓縮和Netware兼容性。這其中有兩個想法很有時代特色:1990之前,雙倍壓縮是個熱門話題,因為當時硬盤很貴;Netware也是當時占主導地位的網絡操作系統。“我們最終停止了壓縮項目,”湯普森說,“但是Netware兼容性部分是戰略性的。Novell與NT桌面系統是矛盾的。他們不知道是否要創建客戶端。我們提供了幫助,但他們仍然處於混亂之中,而且…我們自己做了。對於Netware來說,這是壹個更好的客戶端,用戶已經使用了幾年,盡管他們最終做了壹個。這個客戶端使nt桌面系統能夠成為Netware的客戶端,因為Netware是當時市場上的主流服務器系統。否則我們的NT桌面就賣不出去了。”
Daytona還受益於新的編譯器技術,這使微軟能夠減少代碼量,使NT桌面成為真正的低端系統。湯普森說:“這些結果具有統計學意義。”。
Windows NT 3.51是和Power PC壹起發布的,因為是圍繞Power PC設計的,3.5版本沒有對Power PC的支持。因為IBM經常延遲Power PC芯片組的發布,所以導致了孤立的NT發布。“NT 3.51的發布是非常沒有價值的,”湯普森說,與代托納的評價相反。“在Daytona完成後,我們花了大約9個月的時間來糾正錯誤,以便等待IBM完成Power PC。但正因為如此,NT 3.51非常穩定,我們的客戶也很喜歡。”NT 3.51終於在1995年5月上市。
在下壹個Windows NT 4.0中,采用了Shell Update Release(SUR),這是受益於NT的模塊化結構的另壹個具有挑戰性的任務。"我們想創建壹個95外殼的桌面,但是它使用nt技術."Lucovsky告訴我們,“我們最終遷移了Win32 GUI組件,並使其成為壹個進程內驅動程序。性能是受影響的壹個方面,在不同的進程中運行這個API會導致問題。因此,將代碼遷移到與運行時相同的上下文將解決很多問題。我們不必為GDI和USER做死鎖檢測。這是壹項重大任務,但它解決了很多令人頭疼的問題。”NT 4.0月上市,1996,是NT系列產品的分水嶺。
Windows擠走NT
在下壹個版本中,Windows NT放棄了NT這個名字,變成了壹個簡單的Windows。湯普森說,這個決定來自營銷團隊。“壹個從Windows市場部調到nt市場部的家夥,說我們會到處用Windows這個名字。起初,更改名稱讓我們所有人都感到不舒服,因為NT的聲譽很好。然而,由於Windows 2000的可靠性,人們開始談論Windows 2000比舊的NT好多少,即使它們基於相同的架構。所以這是個意外。Windows 2000沒有代號,因為吉姆·奧爾欽不喜歡它。”湯普森說。
Windows 2000完成以來,Windows團隊做出的最大決定就是在Whistler產品中分別發布客戶端和服務器,也就是現在的Windows XP和Windows Server 2003。Thompson告訴我們:“這使我們把重點放在服務器客戶上,他們現在要求更高的穩定性。“桌面軟件會根據PC廠商的銷售周期同步發布。這和服務器周期不壹樣。”
大衛·湯普森,微軟公司視窗服務器部門的副總裁。1990加入微軟,在調到Windows NT項目組之前,領導並負責公司的LAN Manager for OS/2項目。在Windows nt的開發過程中,Thompson領導的開發團隊為NT網絡子系統做出了傑出的貢獻,不僅保證了產品能夠與微軟產品和諧工作,還保持了與其他公司產品的兼容性。
馬克·洛考夫斯基,微軟著名的軟件工程師和服務器架構設計師。1988與戴夫·卡特勒壹起加入微軟。他們都是前數字設備公司(DEC)的優秀軟件設計師。Lucovsky在將NT從基於OS/2的系統遷移到32位Windows應用程序的早期過程中,做出了傑出的貢獻,並擁有敏銳的技術,受到了許多工程師的欽佩。
——馬克·洛考夫斯基
NT系列操作系統從Windows NT發展到Windows 2000、XP,再到現在的Windows Server 2003。雖然細節發生了巨大的變化,但有壹個關鍵元素沒有變,那就是構建操作。在微軟內部,實際上每天至少有壹個Windows產品被編譯或生成為可執行代碼,開發團隊可以立即進行測試。對於Windows Server 2003來說,這個過程在微軟的26號樓達到了高潮,那裏壹排排的PC和CD拷貝機始終處於幾名工程師的持續監督之下。
“回想早期,我們開始只有六個人,”馬克·洛考夫斯基告訴我們。“現在,Windows團隊有5000名成員,另外還有5000名合作夥伴,並且已經編寫了5000多萬行Windows Server 2003代碼。讓所有人員遵守統壹領導制造守則是壹項巨大的任務。生成他們的工作成果,編譯連接成可執行程序或其他組件,最後形成Windows光盤。這個過程持續12到13小時,每天都在進行。這是有史以來最大的軟件工程任務。其他任何軟件項目都無法與之相比。”幾乎每天,微軟都要編譯所有的東西——全部5000萬行代碼。“我們壹直在改善開發環境。”盧科夫斯基強調。
“當我們啟動機器時,我們編譯所有的內容,”他說。“我們必須能夠隨時再生系統。開發者簽到代碼,我們按下按鈕,生成系統。我們應該可以在未來三年內使用不同的工具、編譯器和腳本再生系統。”
大衛·湯普森詳細介紹了這壹過程。“關鍵是我們全年生成系統,並從三個方面進行推廣,”他說。“第壹是產品本身,第二是我們設計產品的方式,第三是我們與客戶互動的方式。產品的進化是完美的,我們現在使用的是全新的源代碼控制系統。我們從現有的技術開始,馬克·洛考夫斯基親自領導新系統的開發。我們每天生成壹個分階段的)構建,這些分階段的構建將形成最終的完整構建。我們在繼續發展的同時保持了穩定——我們知道自己每天的進步。”
吃吧:微軟供應狗糧。
“有壹天我收到了85份入住記錄,這是我們當時能擁有的最大數量。現在我們每天能收到超過1000,這是壹個完全不同的比例,即使白板實際上是基於Web的電子化。”
——大衛·湯普森
盧科夫斯基回憶了壹些往事。第壹個nt原型是在他的辦公室裏生成的,然後他發了壹封郵件告訴NT團隊,NT Build已經準備好了。因此,NT團隊中的50多人將“吃自己的狗糧”,在自己的系統上測試構建,並進行壓力測試。“我們過去只是圍繞這個構建工作,並寫下我們發現的問題,”Lucovsky說。“所以才是前NT 3.55438+0。現在我們有七個構建實驗室。戴夫·湯普森有自己的構建實驗室,覆蓋1200人。主構建實驗室進行官方構建,每天進出數千人。整個大學的主幹服務器會自動向各個地點發送通知。”
湯普森說:“起初,我們可以在每天的固定時間檢入代碼然後停止開發,然後開始生成新的系統。最後,我們將團隊成員增加到85人,並對流程進行了序列化,以便進行更多的控制。我們都為戴夫·卡特勒(Dave Cutler)工作,他負責壹代實驗室大約壹周的時間,然後要求每個人在實驗室白板上寫下自己的簽到請求,並強制執行。我也在那裏待了壹段時間,有壹天我收到了85個入住,這是我們當時能擁有的最大數量。現在每天能收到1000多。這是完全不同的比例。盡管白板現在實際上是基於網絡的電子版。”
“其他軟件項目無法與之相比,”Lucovsky說,“但有壹點是不變的,那就是生成Windows所需的時間。無論哪壹代產品,編譯和連接系統都需要12小時。”隨著生產過程能力的增長,Windows也在增加,開發過程變得更加復雜,所以微軟在日常生成中進行更多的代碼檢查。“構建實驗室的CPU已經連續工作了12小時,我們從Windows 2000開始就適應了這個過程。現在,我們將源代碼相互分離,使用新壹代環境。這是壹個多機環境,使我們能夠更快地生產。但因為所有代碼都需要分析,所以還是需要12個小時。”
湯普森告訴我們,NT團隊完全“吞下”自己的代碼是必要的,它與微軟的自然條件共存。“回想起來,這是我們壹直在做的事情之壹。今天,當我們談論電子郵件程序時,我們都覺得很可笑。那時候NT剛在PC上運行的時候,我們的Email程序因為是DOS程序而無法工作,而且那時候我們還沒有DOS兼容模式。於是我們把內部郵件程序WizMail改成了Win32,這樣就只能在NT系統上工作了。”
湯普森補充說:“當妳被迫自己使用系統時,如果妳看到漏洞和性能問題,妳必須找到負責人,請他修復問題。”當Thompson加入NT團隊時,他的主要職責之壹是提供NT文件服務,以便它可以用作源代碼服務器。它需要信任,尤其是因為NT使用NTFS文件系統。“網絡組工作非常努力,”他說,“同時確保為內部部署做好準備。壹旦實施,就沒有回頭路了。顯然,如果文件服務失敗,那將是壹場災難。所以那是我們非常時期。”
後來隨著Windows NT 4.0開發的結束,Thompson的團隊采用了微軟的第壹個目錄服務Active Directory (AD),發表在1996的專業開發者大會(PDC)上。“在AD之前,我們在基礎設施中使用NT域,”他說。“轉AD更復雜。我們很早就部署了AD,首先是我們的團隊,然後是更廣泛的Windows團隊。1999年4月,我們在雷德蒙大學正式使用AD。”
湯普森說,微軟在公司的其他級別謹慎地實施AD,該大學去年使用Windows Server 2003實現了多林AD拓撲。“對於所有基礎服務器,我們總是在內部完全部署,然後擴展到JDP(聯合開發夥伴)。他們在250個使用場景中對其進行測試和產品化。我們收集錯誤報告、功能反饋和復雜的測試環境來測試產品。”
在2002年夏天,Windows Server 2003(RC1)的可靠性達到了99.995%。2002年6月+2002年10月+2002年10月,Microsoft.com網站由Windows Server 2003(RC2)全面部署。湯普森告訴我:“關鍵是在內部使用它,並接近客戶。”。“我們的產品現在更成熟了。我們不僅銷售盒裝產品,還銷售各種輔助工具、產品、服務和文檔。”湯普森還談到,Outlook 11、Exchange Server 2003(Titanium)和Windows Server 2003的團隊工作更加緊密地結合在壹起,以滿足最終客戶的需求。在過去,這些產品往往是獨立開發的,互不相關。
關註產品和服務
Lucovsky補充道:“這項服務近年來也變得成熟了。我們為每個產品做了大量工作,提供正確的混合服務包、熱修復、產品開發分支、測試版和JDP客戶。”(下壹節有更多關於開發分支的信息。)
"我們確實延長了產品的服務時間."湯普森說,因為微軟銷售壹款服務器產品,客戶可能會使用長達10年。Volume or Stream在過去七年中壹直在提供服務,但該公司壹直在研究提供全面升級和更正的方法。首先,微軟必須確保錯誤修復應用於所有開發分支。“我們在快速定位安全漏洞方面的工作意味著我們現在可以主動發布熱補丁,”湯普森強調說。“同樣,它使服務包更加靈活,這種方法可以提供像修復包這樣的新功能。但客戶明確表示,他們只是想獲得漏洞修復。雖然這引出了壹個有趣的問題:什麽是錯誤?壹個缺失的功能,對嗎?顧客往往有自己的看法。然而,NT 4 SP3是最後壹個包含主要新功能的服務包。”
影響主幹服務的壹個方面是,微軟必須為最近的每壹次產品變更保留壹個測試環境。這意味著Windows 2000的最終或“黃金”版本是壹個分支,Windows 2000 SP1是另壹個分支,Windows 2000 SP2是另壹個分支,以此類推。“完全消化對於提供成套服務也很重要。我們在我們的IT組織中保留了壹個獨立的Windows 2000 basic產品,這樣我們就可以隨時生成Windows 2000系統,並在生產環境中進行測試,”湯普森說。“很貴,但很值。”
熱修復程序被簡化為僅修復壹個特定問題,不會影響系統的其他部分。湯普森說,壹般來說,客戶只有在受到相關問題影響時才會應用壹個熱修復,但安全糾正則是另壹回事。“我們希望所有客戶都安裝安全補丁,因此我們對它們非常謹慎,並做了足夠多的測試。它們通常是可部署的版本(GDR),就像服務包壹樣。”
樹幹、樹和樹枝
如前所述,不同版本的Windows需要壹系列的產品代碼分叉,不同的Windows產品從“主幹”開發中“分支”出來。所以每次Windows發布,都會有至少兩個不同的版本。在撰寫本文時,Windows Server 2003和Longhorn正在同時開發中。因為Windows Server 2003是從XP中分離出來的,所以這個服務器產品基本上是建立在XP之上的。未來幾年將超越XP的客戶端發行版Longhorn,其實是在服務器代碼分支的基礎上生成的,而不是妳所期待的XP。
盧科夫斯基告訴我們:“這種機制是自我意識的。對於當前的Windows版本,我們有壹個主代碼分支,它成為熱修復和下壹個服務包的源代碼基礎。壹旦我們發布了壹個服務包,它就變成了壹個新的分支,所以我們有兩個分支來測試熱修復和服務包。我們不能告訴客戶安裝SP1,做熱修復。這在每個Windows版本中都會繼續,所以會有兩到三個服務包、許多熱補丁和許多安全補丁。每壹個都是托管的,是五千萬行代碼的集合。這是壹個巨大的話題。”
此外,對於每個主要的開發分支,微軟也有大約16個分支團隊,並允許他們在主線上獨立並行工作。每個團隊都有壹個完整的生成實驗室環境來生成壹個包含他們變更的完整發布版本,每個團隊定期將測試過的變更集成到主分支中,這樣他們就可以互相交換測試過的工作。
在作戰室消除錯誤
“如果有人不在作戰室,我會批評他們。我只踢傻逼。”
——托德·萬科
Windows Server分發管理辦公室微軟產品總監
這個項目最令人興奮的部分是在作戰室,戰鬥小組壹天會面兩到三次,壹周五到六天。現在Windows Server已經進入了開發的最後階段。"戰鬥小組每天都測量和報告項目的進展."湯普森告訴我們,毫不誇張地說,作戰室令人震驚。“現在壹切都是自動的,但當我們第壹次來的時候,我們必須在紙上寫下我們的工作。當時作戰室大概有15到20人。現在大不壹樣了。”
托德·萬科負責Windows Server 2003的作戰室,我們驚訝地發現他非常有魅力。但在作戰室工作時,他是鐵腕人物,處處發號施令,產品組成員只能耐心忍受殘酷的會議過程。
作戰室的工作狀態是這樣的。每天早上9:30,來自Windows Server 2003不同職能小組的代表開會檢查錯誤。他們排著隊進入26號樓的3243室,門上標著手寫的“辯論賽診所”。房子中央有壹個很大的會議桌,但許多與會者都站著,房子總是擠滿了人。我們參加戰團會議的那天,是第壹次允許外人進入Windows Server的聖地,也是NT和Windows發展史上的第二次。那天,團隊討論了大約50個錯誤,大部分是簡單的商標錯誤,盡管那天不允許我們參與討論壹些特殊的錯誤(所以我們很晚才進入,最重要的話題是給Windows重新命名。NET Server 2003在最後壹刻作為Windows Server 2003)。
每壹個錯誤都被記錄在壹個增量錯誤跟蹤系統中,伴隨著令人眼花繚亂的信息,包括錯誤是如何被發現的,是否有客戶受到影響,以及錯誤被從根本上解決的完整歷史。萬科迅速審查錯誤,並召集相關職能團隊的成員解釋糾正的進展。例如,如果IIS中有壹個或多個錯誤,IIS團隊的代表需要參加。他不僅應該解釋錯誤,還應該解釋客戶是否會受到影響,糾正對系統其他部分的影響,以及糾正需要多長時間才能完成。在開發過程的最後,如果錯誤不是很嚴重,就會“傳遞”給下壹個Windows發行版——longhorn。