1. 程式人生 > >華為開源能力中心杜玉傑——開源縱橫談:微軟開源那些事兒

華為開源能力中心杜玉傑——開源縱橫談:微軟開源那些事兒

在“開源縱橫談”的上一篇文章“谷歌開源那些事兒”中我們可以學習到分析企業開源戰略可以從兩方面入手:首先要看什麼是不能開源的,其次是要考慮能否幫助擴張業務和賺取收入。這次我們通過聊聊微軟開源那些事兒來看看微軟開源戰略轉型對於制定企業開源戰略又會帶來哪些啟示。

“事實標準常常通過經濟機制在市場上發生演變,這種經濟機制與推動商業成功的正向螺旋的概念十分相似,它使一個成功推動另一個成功,這一概念叫做正反饋,它說明事實標準之所以常常出現在人們尋求相容性的時候的原因。” ——《未來之路》比爾•蓋茨 1995年出版[注1]

2017年1月底,微軟公佈了公司第二財季財報,財報顯示由於雲端計算業務增長迅速,微軟第二財季調整後每股收益和營收均超出華爾街分析師預期,公司市值17年之後重回5000億美元。上次市值超過5000億美元還是在2000年3月份,美國司法部判決裁定微軟的壟斷行為違反了發壟斷法,當天微軟股票狂跌一半,市值從5000億美金縮水到不到3000億美金,當時正值.com泡沫破滅前夕。

而業界也曾有這樣一種講法,如果以公元2000年作為科技史的一個分水嶺,那麼公元2000年之前可以稱之為“PC”(Personal Computer)時代;而公元2000年之後則被稱為“後PC”(Post-Personal Computer)時代。

在前一篇文章“谷歌開源哪些事兒”中也曾經提到過微軟的成功很大程度上得益於爾•蓋茨對於個人PC發展方向的把握,從而建立了WinTel聯盟,那麼我們先穿越回“過去美好的時光[注2]。

PC時代的相容之路

比爾•蓋茨在《未來之路》中詳細的介紹了微軟如何利用相容性打敗所有的其他作業系統而成為PC行業標準,我們不妨把PC時代微軟在開源方面的戰略大致概括為幾個事件:

首先是Bill Gates在1976年寫的一封

《致愛好者的公開信》,譴責盜版BASIC[注3]軟體的“業餘愛好者”,並說他們是在“偷竊”,比爾·蓋茨隨後離開校園,一手創辦了世界上最成功的企業之一——微軟公司,並逐漸將軟體產業化。

但實際上, Stallman 在最初的 GNU 宣言裡列出了幾種可行的營利模式,例如:以光碟或磁碟的形式銷售自由軟體包拷貝;自由釋出軟體,但可以提供捐款的途徑給使用滿意的客戶;提供手把手的安裝、培訓和指導服務;針對廠商新機器架構的軟體移植;軟體的定製化等。

而DOS的誕生源於IBM計劃進入個人PC市場,並與1981年正式推出個人電腦,而微軟則又在未告知自己正在與IBM談判的情況下,靠關係找到了西雅圖電腦公司,以據說是5萬美元的價格向該公司購買了他們所開發的作業系統史稱“世紀性的交易”,隨後微軟將該軟體更名為PC-DOS,再授權IBM使用該作業系統。

據報道事後西雅圖電腦控告微軟在未告知事實的情況下以極低的價格購買該公司的產品,但是雙方最終達成庭外和解。 無獨有偶,微軟釋出Windows 1.0時,蘋果電腦認為與其產品有相似的GUI,但兩者達成一項許可,最終蘋果授權給微軟使用和再許可Windows 1.0派生作品的權利[注4]。

另一個標誌性事件是1993年Windows NT3.1的釋出,Pascal Zachary在《觀止:微軟建立NT和未來的奪命狂奔》一書中寫道:“這個軟體定義了未來軟體的樣子”。比爾•蓋茨曾有句名言:“微軟永遠離破產只有18個月”,而NT核心的開發從1988年開始醞釀,1989年正式啟動,最初的開發計劃其實也是18個月,最終確歷時將近五年時間,延遲了這麼久還沒有胎死腹中註定有著不同尋常的原因。

當時“史上最好的作業系統”VMS的負責人,後來NT核心負責人Dave Cutler曾說:“UNIX就是個由一幫博士設計的垃圾OS,整個系統背後的設計思想從來就沒統一過,而且裸露在外”。而之所以會誕生NT核心,又與著名物理學家Stephen Hawking的得意門生,已經加入微軟的Nathan Myrhvold一系列關於軟體產業發展趨勢的備忘錄密不可分。

這份備忘錄最終引起了蓋茨的注意力,並下定決心要開始研發“UNIX殺手”,Myrhvold在這份備忘錄中提出威脅微軟印鈔機DOS系統的兩個致命毒藥:新型晶片(RISC)和UNIX系統,同時也提出UNIX有個致命的弱點:沒有通用版本存在。而這個問題某種程度上和Cutler的觀點“簡直是驚人的巧合”,後來正如大家所猜測的蓋茨正式邀請46歲的 Cutler加入微軟負責NT核心的研發。後來面向企業級市場的Windows NT和麵向消費者市場的Windows 3.1(後來是Windows XP,包括IE團隊)合二為一。

Microsoft NT不僅改寫網路工程師的使用方式,網路系統也可以用滑鼠來管理了,同時也重新定義了伺服器作業系統的角色和功能,硬是把網路作業系統的主戰場從Novell所擅長的、具有優勢的領域,轉移到了一個全新的、從未曾設想過的競技場。雖然當時Novell一再宣稱NDS領先微軟好幾代,但顯然市場已經不太聽得進去了。

配合全新的程式開發技術Visual Baisic,圖形化的開發工具(同樣Delphi很優秀、Clipper很優秀,FoxPro很優秀,dBase很優秀,Pascal很優秀,最後這些優秀的語言與工具在市場上全都敗給了Visual Basic+Windows NT組合),最終幫助微軟達成了從桌面作業系統的霸主延續到了網路作業系統的使命,而NT核心的成功也完成了幫助微軟從微軟/IBM聯姻走向微軟/Intel聯盟的華麗轉身,開啟了一個新的帝國時代。

1994年成立的網景隨後和微軟展開了另外一場沒有硝煙的戰爭,雖然戰爭勝負已分,但這場戰鬥對於開源也還是產生了深遠的影響[注5]。而在IE打敗網景之後,由於Windows NT和Windows 3.1的合併導致IE從一個戰略級業務降級成Windows的一個應用軟體,最終導致相關負責人、公司副總裁Brad Silverberg的離職。

如果這幾個開源事件還只能算是微軟內部公開的“小祕密”的話,那麼1998年十月份 Eric Raymond 披露微軟內部機密備忘錄《萬聖節檔案》,可以算做是微軟第一次公開它的“開源戰略”。萬聖節檔案中微軟將開源描述成一種“長期可靠”、“對微軟的直接、短期收入和平臺構成威脅”的開發過程,它承認“工業品質可以通過開源軟體專案達成甚至超越”,其中還提出了微軟應該如何對抗開源軟體的建議,包括在公司內部引入開源的模式、高薪挖走開源核心人員等。

在PC時代微軟憑藉一個正反饋的迴圈開始趨動個人計算機市場,通過三種方法來增加微軟作業系統的市場份額[注6],藉著IBM的成功,而使自己的作業系統迅速成為行業標準,藉助“UNIX殺手”成功推出了第一個通用作業系統,從而通過相容性打敗所有其他的作業系統(蘋果公司甚至連自己的系統都不相容)。

後PC時代移動為先云為先

2000年1月13日,Steve Ballmer 成為微軟首席執行官,而蓋茨為自己創立一個新角色“首席軟體架構師”(Chief Software Architect)。也許是1998年網景的開源刺激了Ballmer ,所以Ballmer 一上臺就迫不及待的釋出了“Linux是顆毒瘤”的言論,導致十多年來微軟一直被視為是Linux和開源社群的頭號敵人。這種敵對局面直到Satya Nadella 14年接任微軟新任CEO 公開宣佈微軟愛Linux才有所扭轉。所以後PC時代微軟的開源戰略調整重點在Nadella 新政之後,其中又以過渡期的微軟開放技術公司的成立,以及微軟新的全球戰略“移動為先,云為先”為主要標誌。

2012年,微軟開源了用來強化JavaScript開發大型應用程式的工具語言TypeScript,後來更被Google用於打造自家維護的下一代JavaScript應用程式框架AngularJS。2014年微軟雲端和企業部門執行副總裁Scott Guthrie在Connect()會議上正式宣佈.NET核心將開源,包括.NET Framework 4.6、.NET Core 5、還有Runtime和編譯平臺Roslyn等。這不是微軟第一次宣佈產品開源計劃,但卻是最讓全球開發者震撼的一次宣佈。

要知道2008年時,當時擔任.NET Framework部門總經理的Scott Guthrie宣佈開放.NET架構連結庫,讓開發者可以瀏覽,但仍然不被開源社群認可,甚至被批評微軟只是一種“假”開源,因為程式程式碼只能看而不能修改,只是為了擴大影響力,假開放之名,而行拉攏使用者之實。這些開源動作,儘管引起高度關注,但還是難以說服開源社群,微軟是否真的願意認真擁抱開源。

依稀記得14年1月受邀參加微軟全資子公司——微軟開放技術公司落地上海剪裁時還親自問過蔣博勵總裁一個關於微軟是否會加入OpenStack的問題,當時他的回答是“會以使用者需求為主”。但微軟成立又關閉了微軟開放技術公司[注7]絕對可以看作是微軟開源戰略逐步成熟的一個標誌。

據官方解釋,在微軟“移動為先,云為先”的戰略體系下openness有兩層含義:一個是開放一個是開源。開放是Satya的業務策略,這兩年我們可以看到微軟確實開放了很多,例如office放到蘋果上,還提供Android的支援,開發工具也提供對iOS、Android、Windowsphone等跨平臺支援。

而伴隨著雲正式成為微軟戰略核心,原有的軟體license模式逐步向雲端遷移,對於微軟來說軟體的程式程式碼只是軟體其中一小部分的價值,更大的價值要靠開放的服務來實現。

我們知道比爾·蓋茨於2008年6月27日完全退出管理層讓位給首席執行官史Steve Ballmer 全權控制微軟,08年蓋茨離開以後,Windows Azure Platform釋出,09年Windows7釋出,12年釋出Windows8,Satya Nadella 被任命為新CEO之後,Windows Azure更名為Microsoft Azure。2015年微軟通過與 credativ 合作,將最流行的 Linux 發行版之一的 Debian 搬到了 Azure 雲上,2015年末,微軟還與 Red Hat 達成合作,將 Red Hat 企業版 Linux(RHEL)也搬到了 Azure 。到2016年1月,微軟和 Canonical 展示了在 Azure 上執行 Ubuntu Linux 的第一個技術預覽版,至此微軟Azure 已經實現了對主流的 Linux 發行版的“相容性”要求。

從商業的角度可能更能體現這種“相容性”的殺傷力。目前從雲服務收入體量來看Azure收入僅次於AWS,穩居第二。2016年還發生了一個標誌性事件:波音開始為航空公司提供雲服務,其中的實時資料採集、監控等服務是由GE提供的,而波音和GE的IT基礎設施服務都是由微軟Azure雲提供的,這表明雲服務正從中小企業和Netflix這樣的網際網路公司開始進去大企業、大工業。

另外根據微軟管理層在FY16Q4的溝通會上透露的資訊來看,預計Azure在17財年能夠實現盈利,而去年微軟在全球SaaS收入的份額中約佔15%,超過salesforce(14%)。

對企業來說開源作為一個武器,無論是進攻還是防禦,首先要考慮的都應該是商業的利益。微軟帝國從PC時代崛起,經歷了網際網路時代的短暫迷惘,新的君主能夠領悟到了開源的價值,轉變戰略乘雲之勢重回寶座不得不說是企業開源戰略轉型的一個典範。

微軟開源大事記:

  • 1976年《致愛好者的公開信》by Bill Gates
  • 1998年《萬聖節檔案》by Eric Raymond
  • 2000年 “Linux是顆毒瘤“ by CEO Steve Ballmer
  • 2007年微軟的開源許可證得到了 OSI 認證
  • 2008年加入Apache基金會成為白金會員
  • 2012年微軟成立“微軟開放技術有限公司(Microsoft Open Technologies Inc.)”,其主要目標是“推動公司在開放性方面的投入,包括互操作性、開放標準和開源”
  • 2014年 “微軟愛Linux“ by CEO Satya Nadella,在上海成立開放技術的全資子公司,加入了OCP(Open Compute Project),在微軟Build大會上成立.NET基金會,全力支援.NET平臺上的開源研發與合作
  • 2015年微軟關閉微軟開放技術子公司(MS Open Tech)
  • 2016年3月在EclipseCon大會上 宣佈 加入 Eclipse 基金會,11 月在微軟公司的 Connect開發者大會上微軟公司加入 Linux 基金會成為第11位白金會員,取得董事會席位,同時也宣佈Google加入微軟.NET開源基金會。

備註:

注1: 1995年7月17日,蓋茨榮登《福布斯》全球億萬富翁排行榜榜首,個人財富為129億美元,蓋茨時年39歲。

注2:在《觀止:微軟建立NT和未來的奪命狂奔》一書中,NT核心的負責人David N. Cutler曾用它來形容研發NT核心的那段難忘歲月。

注3:微軟公司賴以發家的BASIC軟體依託於微型電腦”牛郎星”,誕生於1975年前後,售價不到400美元,世界上第一臺裝配微處理器的微型計算機,採用的是英特爾公司研製的8080微處理器。

注4:後來微軟釋出了Windows 2.0和Windows 3.0,蘋果電腦認為這些版本超出了那項許可,侵犯了它的版權,於是提起訴訟。地區法院裁決因缺乏實際一致性(virtual identity)而不構成侵權。蘋果的上訴被第九巡迴上訴庭駁回。

注5: 網景( Netscape )公司宣佈開放其瀏覽器軟體的原始碼,這一事件的影響在於,它開了原本閉源的商業軟體轉向開源模式的先河,此後逐漸有其他軟體開始效仿,例如, Sun 將 Star office 開源並建立 Open office 專案。

注6: 《未來之路》:“第一種就是要使MS-DOS成為最好的產品。第二種就是幫助別的公司編寫以MS-DOS為基礎的軟體。第三種是要確保MS-DOS價格便宜。”

注7: 2015年微軟關閉了已經成立3年的微軟開放技術子公司(MS Open Tech),該公司最初用於“引導微軟在開放性包括互操作性、開放標準和開源上的投資”,不過微軟高管將此舉定性為微軟開放技術“重新加入”微軟而非關閉。

作者:杜玉傑,華為開源能力中心主任工程師,2015年負責華為Docker生態專案,推動成立OCI和CNCF基金會,目前負責華為IoT開源專案Huawei LiteOS 生態,前OpenStack基金會董事。 聯絡方式:https://about.me/yujie.du