愛開源的微軟是如何擊敗 Facebook、Google 成為 GitHub No.1 的?
文丨唐小引
去年今月,我在微軟開發者峰會上見到了《設計模式:可復用面向對象軟體的基礎》聯合作者、現任微軟技術院士(Technical Fellow at Microsoft)Erich Gamma,那是我第一次真正對「微軟愛開源」的 Slogan 有了清晰而深刻的認識,從可在視窗、Linux 與 Mac 環境運行的 VS Code,基於 JavaScript、具備強型別的 TypeScript,到既開源也跨平台的 .NET Core 等,微軟已然成為了開源領域的佼佼者。彼時還很好奇微軟為什麼會從封閉到積極擁抱開源,對此,Erich 如此言說:
其實開源對於微軟而言並非新鮮事物,只是方法和心態上發生了變化。過去,我們只是自己編寫,自己維護產品。現在,既使用別人的,也提供給別人使用。開源對我們來說,就是一扇門,打開了就可以接觸到更多的開發者。
所以,微軟愛開源,不只是使用到了很多開源的東西,我們也做了非常多的貢獻。就像是「給」和「拿」的關係,這是一個非常重要的變化。我們不僅有完整的流程去使用現在的開源技術,也有完善的過程將我們的工具開放給大家使用。
從 PC 時代一路走來,曾經「因循守舊」到成為 linux 和開源社區的頭號敵人,頗讓開發者嗤之以鼻的微軟究竟如何在開源上發力甚至擊敗了 Facebook、Google 成為 GitHub 貢獻第一的公司?而從詆毀開源到擁抱開源,為何微軟會做出截然不同的開源戰略轉型?追本溯源,也許我們能夠從微軟開源歷程的幾個重大事件中找尋到答案。
2004 年,基於 OSS 許可協議發布的 WiX 工具集成為了微軟發布的第一個開源項目,該工具集包括了編譯器、鏈接器、庫工具和反編譯器。
2006 年,微軟推出開源託管網站 CodePlex,在此網站所發布的所有程序都可以下載源碼使用。儘管微軟已經宣布此網站即將於今年關閉,但不可否認的是,這是微軟首次重要的開源社區嘗試。
2007 年,微軟的開源許可證 Microsoft Public License (Ms-PL) 和 Microsoft Reciprocal License (Ms-RL) 得到了 OSI 認證。在一篇文章中,OSI 寫道,「這個決定的通過獲得了開源社區大多數人的認可(雖然還有不同意見),這些許可證符合開源定義的 10 項準則,所以應該通過。」
2008 年,微軟加入 Apache 軟體基金會並成為白金會員,逐漸向開源 Web 伺服器 Apache 項目靠攏。
2009 年,微軟向 Linux 內核貢獻了超過兩萬行的代碼。這些代碼大大增強了在 Windows Server 2008 Hyper-V 或 Windows Server 2008 R2 Hyper-V 上運行的 Linux 操作系統虛擬機的性能。這些貢獻讓微軟在一段較短的時間內成為了 Linux 內核排名第一的貢獻者。
2009 年,ASP.NET MVC 基於 Microsoft Public License 開源,這些代碼沒有平台限制,也可以被移植到 Java 或 Ruby 平台中去。
2012 年,微軟基於 Apache 2.0 許可證開源了它的部分 Web 產品體系,包括 ASP.net MVC、Razor 和 Web API。
2012 年,微軟開源了用來強化 javascript 開發大型應用程序的工具語言 TypeScript,後來更被 Google 用於打造自家維護的下一代 JavaScript 應用程序框架 AngularJS。
2012 年微軟成立「微軟開放技術有限公司(Microsoft Open Technologies Inc.)」,其主要目標是「推動公司在開放性方面的投入,包括互操作性、開放標準和開源」。
還是在 2012 年,微軟開源了用來強化 JavaScript 開發大型應用程序的工具語言 TypeScript,後來更被 Google 用於打造自家維護的下一代 JavaScript 應用程序框架 angularjs。
2014 年,微軟雲端和企業部門執行副總裁 Scott Guthrie 在 Connect() 會議上正式宣布.NET 核心將開源,包括 .NET Framework 4.6、.NET Core 5、還有 Runtime 和編譯平台 Roslyn 等。這不是微軟第一次宣布產品開源計劃,但卻是最讓全球開發者震撼的一次宣布。
同年,新上任的 CEO Satya Nadella 提出了「微軟愛 Linux「,並加入了 OCP(Open Compute Project),在微軟 Build 大會上成立.NET 基金會,全力支持 .NET 平台上的開源研發與合作。
2015 年,微軟通過與 credativ 合作,將最流行的 Linux 發行版之一的 Debian 帶到了它的 Azure 上。同年與 Red Hat 達成合作,將 Red Hat 企業版 Linux(RHEL)帶到了 Azure 雲上。
同在 2015 年,微軟還開源了 Visual Studio Code, 並且發布了 Visual Studio GDB 預覽版,允許開發者遠程調試 Linux 對象。
2016 年初,微軟和 Canonical 展示了在 Azure 上運行 Ubuntu Linux 的第一個技術預覽版。至此,微軟已經將所有的領先的 Linux 發行版帶到了 Azure 雲上。
同年 3 月,在 EclipseCon 大會上,微軟宣布加入 Eclipse 基金會,在 11 月的 Connect 開發者大會上,微軟公司加入 Linux 基金會成為第 11 位白金會員,取得董事會席位,同時也宣布 Google 加入微軟 .NET 開源基金會。
且在 6 月的 Red Hat DevNation 大會上,微軟正式發布實現跨平台(Windows、Linux 和 Mac)的 .NET Core 1.0 ,這意味著開發者可以使用 Windows 開發,用 Linux 部署。
9 月,在 GitHub 的「對開源貢獻人數最多的組織(Organizations with the most open source contributors)」的榜單中,微軟擊敗 Facebook、Google 一躍成為 No.1,至此,微軟徹底贏得了來自業界及開源社區的認可。
而到了今年,微軟在開源領域已經有了諸多動作,比如開源 GVFS (Git Virtual File System) 虛擬文件系統、Azure Service Fabric SDK、用於幫助開發者創建跨平台應用的 ReactXP,以及可用於訓練無人機和自動駕駛汽車的模擬器平台 AirSim 等。
在《開源縱橫談:微軟開源那些事兒》一文中,作者杜玉傑如此總結道:「對企業來說開源作為一個武器,無論是進攻還是防禦,首先要考慮的都應該是商業的利益。微軟帝國從 PC 時代崛起,經歷了互聯網時代的短暫迷惘,新的君主能夠領悟到了開源的價值,轉變戰略乘雲之勢重回寶座不得不說是企業開源戰略轉型的一個典範。」
而從技術角度出發,我們又不禁想問,開源對於微軟究竟產生了怎樣的影響?Erich Gamma 給出了他的答案:
開源的發展速度非常驚人,尤其是微軟。五年前談到開源時,整個 Windows 沒有什麼開源的東西。這五年來我們發生了很大的變化,現在微軟內部也有了很多流程與方法,能夠讓我們的工程團隊去使用開源。
五年前,我們的律師一聽到開源,第一反應就說「NO」,但現在律師也在幫助我們更好地往開源上做努力了。我們知道開源領域有很多爭議,特別是 License 的部分,有些「License」也許存在一些灰色地帶。然而在微軟,我們的工程部門和法律部門都在幫助我們更加合規地做開源項目,比如 GPL。現在,在他們的幫助下,我們能夠清楚地了解哪些是我們可以使用的。
雖然是開源,但事實上對微軟對我們所提供的開源軟體是負責任的。微軟對開源技術的運用橫跨多個不同的產品線。我們內部對整個開源的軟體都做了詳細的記錄,來幫助開發者和產品團隊,讓他們避免陷入到一些 License 問題里。我們很多開源的軟體都有資料庫去記錄它用在哪個產品里,能夠實現正向和反向的追蹤。比如有的開源軟體造成一些問題,我們可以很清楚地對相關產品進行迅速準確的修正。
而說到影響,我所看到的最大的貢獻便是來自於效率的提升。比如當我們把 .Net Core 開源之後,有諸多來自社區的人幫助我們審閱代碼,給出了很多改進意見。同時,許多開發者會希望能不能實現讓 .Net Core 在其他平台上運行,我們可以看到在這方面很多的嘗試。
點擊展開全文
※深度學習,先跟上再說
※驚呆了,使用空格縮進的開發者比使用Tab的薪水高很多
※法國新總統馬卡龍的IT之路,看他的開源Web平台架構
※父親節,技術人不應放棄對那些編程語言之父的愛
TAG:CSDN |
※微軟愛開源:VS Code擴展Web Template Studio
※從收購Xamarin到GitHub 微軟越來越愛開源
※微軟愛開源:將協助改進Chrome在Windows平台上的內存使用問題