GitHub 貢獻第一的是這家「因循守舊」的公司?微軟開源軟體列表

文章推薦指數: 80 %
投票人數:10人

作者|木環

編輯|小智

在GitHub上貢獻最多的公司,不是Facebook,也不是Google,而是微軟。

InfoQ對微軟數個較受社區歡迎的項目進行了整理,以饗讀者。

希望開源的精神,能給技術社區帶來更多的實惠!

寫在前面

提起微軟公司,不少人第一反應是老牌巨頭專注於私有化軟體盈利模式,這大抵是源於微軟前CEO Steve Ballmer曾經宣稱「Linux是顆毒瘤(Linux is a cancer)」,並曾經偏執地認為所有開源軟體都不值一提。

但是,這是2001年的事情了,是時候更新大家對微軟的刻板印象。

這裡,不提繼任者Satya Nadella的微軟擁抱開源進行新式轉型的決策,也不提微軟去年加入Linux基金會等開源組織的舉動。

單單而言,只問一個問題:哪家公司在GitHub上貢獻最多?不是Facebook,也不是Google,而是微軟公司,這個第一名還是多少有些出人意料。

2014年10月,出任微軟執行長的薩提亞∙ 納德拉,第一次公開宣布「微軟愛Linux」。

同年,微軟首次發布.NET Core並將其開源;眾所周知,微軟核心的技術棧長期以來基於.NET和Windows綁定。

在重寫標準庫之後,2016年6月.NET Core 1.0實現跨平台(Windows、Linux和Mac),這意味著開發者可以使用Windows開發而Linux部署。

2016年3月,Windows原生支持 Ubuntu Linux Bash, 這意味著Windows作業系統級別的開放,Win10 可以當作一台Ubuntu開發機來使用。

此外,微軟稱Azure全面支持所有開源技術棧,並且從IaaS(VM),PaaS和SaaS(CRM、PowerBI、Office365)全面支持用戶的靈活選擇。

InfoQ對數個較受社區歡迎的項目進行了整理如下:

Visual Studio Code:跨平台原始碼編輯器

Visual Studio Code是微軟於2015年正式發布的項目,可以運行在Mac OS X、Windows和Linux之上,面向Web和雲應用的一款跨平台原始碼編輯器。

雖然它的名字與Visual Studio相近,但前者是代碼編輯器,後者是集成開發環境(IDE)並且目前只運行在Windows上。

Star數量:24.3k;Fork數量:3.3k

TypeScript:開源程式語言,JavaScript的超集

TypeScript是JavaScript強類型的超集,可以編譯成純JavaScript。

由微軟開發的自由和開源的程式語言,可以運行在各類瀏覽器和作業系統之上。

Star數量:19.8k ;Fork數量:2.8k

CNTK: 深度學習開源工具包

CNTK全稱為The Microsoft Cognitive Toolkit, 將神經網絡描述為計算機可處理的有向圖,有向圖的葉節點表示輸入值或網絡參數,其他節點表示輸入對應的矩陣運算。

CNTK便於實現並且也結合了很多流行計算模型如前饋DNN,卷積網(CNN)和復現網絡(RNN / LSTM)。

它可以跨多個GPU和伺服器實現隨機梯度下降(SGD,誤差反向傳播)學習與自動微分和並行化。

可以在Python或者C++語言中如同庫版應用,也可以使用其自有的描述語言BrainScript單機化使用。

CNTK可適用於64位的Linux和Window,於2015年4月開源。

下圖比較CNTK的處理速度(每秒處理的幀數)與四個其他眾所周知的工具包的處理速度。

配置使用完全連接的4層神經網絡(參見微軟的基準腳本)和有效的迷你批量大小(8192)。

在相同硬體上獲得的結果。

Star數量:9.9k;Fork數量:2.4k

Donnet:採用系統虛擬機運行的編程平台

.NET是微軟研發的XML Web services平台,此框架支持多種語言(如C#、F#、VB.Net、C++、Python等)的開發。

.NET框架歷經亟待,最終於2014年開源。

C#通常被認為是微軟專屬,是.NET框架上最常用的程式語言之一, 其著名競爭對手是Java。

Star數量:7.8k ;Fork數量:1.2k

PowerShell :為任何系統提供Windows的命令行工具

一個跨平台(Windows、Linux和macOS)自動化和配置工具/框架,可與現有工具完美配合,並優化用於處理結構化數據(例如JSON,CSV,XML等)、REST API 和對象模型。

它包括命令行shell,相關的腳本語言和用於處理cmdlet的框架。

Star數量:6.4k;Fork數量:800

MSOpenTech/redis: 在Windows使用Redis

官方只支持64位,可自行構建32位版。

該開源項目,在2.8版本中,替代UNIX forkAPI中的內存映射文件模擬寫時複製行為。

版本3.0類似,為了便於系統文件分頁,刪除了內存映射文件,在管理堆碎片方面進行了改進。

Redis對文件描述符的值做了一些假設,微軟構建了一個虛擬文件描述符映射層。

Star數量:5.8k;Fork數量:8.7k

WinObjc:Windows下的Objective-C

為Visual Studio提供了一個Objective-C開發環境並支持iOS API。

通過重新使用Objective-C代碼和iOS API,配以Windows自有Cortana(中文名:微軟小娜,微軟發布的全球第一款個人智能助理)和通知等功能,用戶可以創建通用Windows平台(UWP)應用程式並運行在Windows設備上。

Star數量:5.8k;Fork數量:745

ASP.NET之MVC核:模型(model)-視圖(view)-控制器(controller)框架

旨在TDD友好,用於創建符合最新Web標準的複雜應用程式、構建動態網站,可以在IIS中託管或自我託管。

Star數量:4.4k;Fork數量:1.6k

BashOnWindows:解決Ubuntu Bash在Windows的使用問題

微軟在Build 2016大會上宣布了一條振奮人心的消息,大家驚呼Ubuntu on Windows。

Bash on Windows 為開發者們提供了Bash shell、Linux類似環境,在不需要Linux虛擬機的情況下,大部分的Linux命令行工具基本上可以不經修改地運行在Windows上。

Star數量:3.7k;Fork數量:129

monaco-editor:基於瀏覽器的代碼編輯器

與 Visual Studio Code 類似,Monaco Editor 提供代碼提示、智能建議等代碼編輯器的功能,它運行在瀏覽器環境中,旨在開發人員們可以遠程更方便地編寫代碼。

與Visual Studio Code版本相比,Monaco是一個直接映射原始碼的庫。

Star數量:4k;Fork數量:265

DMTK:分布式機器學習框架

微軟的DMTK(Distributed Machine Learning Toolkit)參數伺服器框架有很多版本:

LightLDA:用於大規模主題建模的可擴展、快速和輕量級系統。

LightGBM:基於決策樹算法的快速、分布式、高性能梯度提升(GBDT,GBRT,GBM或MART)框架,用於排名、分類和許多其他機器學習任務。

分布式詞嵌入(word embedding):實現的詞嵌入的分布式算法。

Star數量:2k;Fork數量:487

Azure相關:文檔、SDK和代碼示例

微軟支持開發者們將各種開源軟體工具和技術帶入Azure。

Azure 應用市場支持很多Linux 分發,包括 Ubuntu、Debian 和 SUSE;也支持藉助支持 Node.js、PHP、Python 和 Java 的 Azure 應用服務,生成 Web 和移動應用。

在GitHub上Azure相關的存儲庫有1700+個。

Star數量(共計):149k;Fork數量(共計):291k

寫在最後

開源已經形成潮流,一家軟體公司的競爭對手可能是同行企業,還可能是開源項目。

不過開源可不是公益,公司還是以贏利為導向的,那麼開源對公司而言利益是什麼呢?首先,企業級版本的使用往往並不免費,並且相關的技術支持、安裝、系統整合、認證和培訓等服務也是收取費用的。

其次,項目開源之後,可以吸引社區中對此熱情的開發者們。

傳統模式下,軟體巨頭公司需要僱傭大量工程師進行開發、測試和本地化等。

但是,開源相當於把一部分工作「外包」給社區。

此外,如果開源項目代碼優質,則會很好地塑造技術形象並在開源圈產生影響力,從而起到推廣公司品牌的作用。

更重要的是,公司可以接觸到社區中的高尖專家程式設計師,增加了對他們的吸引力也就增加了更多招納賢士的可能性,他們有可能會以兼職或者全職的形式加入公司。

單純對項目本身而言,如果被其他公司採用、再回饋到社區,這是優化項目和豐富使用場景的良性循環。

其實微軟很早開始關注社區開發者並有了開源的舉措:MSDN實現創立於1992年是使用層級的技術文件開放;CodePlex創立於2006年先後託管了很多開源項目;CodePlex Foundation開放源碼基金會成立於2009年。

那麼微軟之外世界的時間發展線是怎樣的呢?雖然其他幾家開源軟體基金會更早成立(自由軟體基金會1985年、OSI開發原始碼促進會1998年、Apache軟體基金會 1999年、Eclipse基金會2004年、軟體自由管理委員會2006年);但是程序界的大規模化關注並參與開源並不比微軟的步伐早:1991年Linux原始碼開源;2007年Linux基金會成立,而GitHub也開始提供軟體原始碼託管服務;2008年StackOverflow問答討論網站建立。

如此看來,其實微軟並沒有一直盲目趕路,並且也有著不算落後的開源和社區意識。

不過,緣何留下了保守不開源的刻板印象?是因為2001年時前CEO的武斷宣言?還是開源之路態度不夠堅決、宣傳力度不夠?亦或是社區更歡迎獨立的第三方開源平台而非某家企業的託管平台?不過,可以確定的一點是,如之前宣傳的那樣「Microsoft Loves Linux」,微軟擁抱開源;並且更大程度地擁抱社區的選擇(如GitHub、StackOverflow平台)。

微軟設的最有價值專家獎(Microsoft MVP Award)也開始歡迎開源社區的活躍分子加入。

有人認為微軟這些開源舉動晚了,錯失了很多機會。

不過,「種一棵樹最好的時間是十年前,其次是現在」。

業界接下來應該更關注的是,微軟究竟會將開源做到什麼程度,並因此對社區產生多麼深刻影響。

今日薦文

點擊下方圖片即可閱讀

從VS 2017談起,解析微軟技術生態進化之道


請為這篇文章評分?


相關文章