1. 程式人生 > >微軟、谷歌、亞馬遜、Facebook等矽谷大廠91個開源軟體盤點(附下載地址)

微軟、谷歌、亞馬遜、Facebook等矽谷大廠91個開源軟體盤點(附下載地址)

開源軟體中有大量專家構建的程式碼,大大節省了開發人員的時間和成本,熱衷於開源的大廠們總是能夠帶給我們新的驚喜。2016年9月GitHub報告顯示,GitHub已經有超過 520 萬的使用者和超 30 萬的組織。這十二個月以來,有超過 81 萬的人發起了人生第一個 PR,更有 280 萬人創造了他自己的第一個倉庫,而中國,成為新註冊增長最多的國家。

Facebook開源專案負責人曾說過:
一是開源能夠幫助他人更快地開發軟體,促進世界創新,主要是社會價值層面的考慮。二是開源能夠倒逼Facebook的工程師寫出更好的程式碼。三是開源能夠更有效利用社群的力量,幫助Facebook一起解決難題。開源,讓世界更美好,不是嗎?

國內外很多國家都為開源做出了很大的貢獻,小編也秉著“開源”的心態,整理了13個公司的開源軟體,這13個公司分別是微軟、Google、亞馬遜、IBM、VMware、Facebook、Twitter、ebay、騰訊、阿里、百度、美團點評、華為等。分兩篇文章和大家共享,快點Mark起來並轉發給需要的人吧。

微軟開源軟體 

1、Visual Studio Code:跨平臺原始碼編輯器
Visual Studio Code是微軟於2015年正式釋出的專案,可以執行在Mac OS X、Windows和Linux之上,面向Web和雲應用的一款跨平臺原始碼編輯器。
雖然它的名字與Visual Studio相近,但前者是程式碼編輯器,後者是整合開發環境(IDE)並且目前只執行在Windows上。
GitHub主頁:

https://github.com/Microsoft/...

2、CNTK: 深度學習開源工具包
CNTK全稱為The Microsoft Cognitive Toolkit, 將神經網路描述為計算機可處理的有向圖,有向圖的葉節點表示輸入值或網路引數,其他節點表示輸入對應的矩陣運算。CNTK便於實現並且也結合了很多流行計算模型如前饋DNN,卷積網(CNN)和復現網路(RNN / LSTM)。它可以跨多個GPU和伺服器實現隨機梯度下降(SGD,誤差反向傳播)學習與自動微分和並行化。
可以在Python或者C++語言中如同庫版應用,也可以使用其自有的描述語言BrainScript單機化使用。CNTK可適用於64位的Linux和Window,於2015年4月開源。
GitHub地址:

https://github.com/Microsoft/...

3、TypeScript:開源程式語言,JavaScript的超集
TypeScript是JavaScript強型別的超集,可以編譯成純JavaScript。由微軟開發的自由和開源的程式語言,可以執行在各類瀏覽器和作業系統之上。
GitHub主頁:
https://github.com/Microsoft/...

4、Azure相關:文件、SDK和程式碼示例
微軟支援開發者們將各種開源軟體工具和技術帶入Azure。Azure 應用市場支援很多Linux 分發,包括 Ubuntu、Debian 和 SUSE;也支援藉助支援 Node.js、PHP、Python 和 Java 的 Azure 應用服務,生成 Web 和移動應用。在GitHub上Azure相關的儲存庫有1700+個。
地址:https://azure.microsoft.com/z...

5、BashOnWindows:解決Ubuntu Bash在Windows的使用問題
微軟在Build 2016大會上宣佈了一條振奮人心的訊息,大家驚呼Ubuntu on Windows。Bash on Windows 為開發者們提供了Bash shell、Linux類似環境,在不需要Linux虛擬機器的情況下,大部分的Linux命令列工具基本上可以不經修改地執行在Windows上。
GitHub地址:
https://github.com/Microsoft/...

6、Donnet:採用系統虛擬機器執行的程式設計平臺
.NET是微軟研發的XML Web services平臺,此框架支援多種語言(如C#、F#、VB.Net、C++、Python等)的開發。.NET框架歷經亟待,最終於2014年開源。C#通常被認為是微軟專屬,是.NET框架上最常用的程式語言之一, 其著名競爭對手是Java。
GitHub主頁:
https://github.com/Microsoft/...

7、PowerShell :為任何系統提供Windows的命令列工具
一個跨平臺(Windows、Linux和macOS)自動化和配置工具/框架,可與現有工具完美配合,並優化用於處理結構化資料(例如JSON,CSV,XML等)、REST API 和物件模型。 它包括命令列shell,相關的指令碼語言和用於處理cmdlet的框架。
GitHub地址:
https://github.com/PowerShell...

8、MSOpenTech/redis: 在Windows使用Redis
官方只支援64位,可自行構建32位版。該開源專案,在2.8版本中,替代UNIX fork()API中的記憶體對映檔案模擬寫時複製行為。 版本3.0類似,為了便於系統檔案分頁,刪除了記憶體對映檔案,在管理堆碎片方面進行了改進。
Redis對檔案描述符的值做了一些假設,微軟構建了一個虛擬檔案描述符對映層。
GitHub地址:
https://github.com/MSOpenTech...

9、WinObjc:Windows下的Objective-C
為Visual Studio提供了一個Objective-C開發環境並支援iOS API。通過重新使用Objective-C程式碼和iOS API,配以Windows自有Cortana(中文名:微軟小娜,微軟釋出的全球第一款個人智慧助理)和通知等功能,使用者可以建立通用Windows平臺(UWP)應用程式並執行在Windows裝置上。
GitHub地址:
https://github.com/Microsoft/...
GitHub地址:
https://github.com/Microsoft/...

10、ASP.NET之MVC核:模型(model)-檢視(view)-控制器(controller)框架
旨在TDD友好,用於建立符合最新Web標準的複雜應用程式、構建動態網站,可以在IIS中託管或自我託管。
GitHub地址:
https://github.com/aspnet/Mvc

11、.Net 開源核心類庫:執行環境和編譯器
.Net的核心類庫,執行環境和編譯器都已經開源,如今整套.Net環境都可以在Linux,Mac下執行。
Github主倉庫:
https://github.com/Microsoft/...

12、ChakraCore :開源JavaScript直譯器 
隨著Windows10一起面世的Edge瀏覽器是微軟的洗心革面之作,執行效率得到了極大的提升,多項測試中執行效率甚至超過了Chrome。 ChakaraCore,作為Edge瀏覽器的JavaScript直譯器,是其中的祕密武器。在ChkraCore開源後,原本就火熱的JavaScript後端開發領域或許會迎來新的推動力。
Github主倉庫:
https://github.com/Microsoft/...

13、PerfView:CPU 和記憶體效能分析工具 
PerfView 是微軟開源的 CPU 和記憶體效能分析工具。它能以多種方式收集和觀察 ETL 檔案,擁有強大的群組運算能力。
在 Visual Studio 中開啟 src/PerfView/Perfview.sln 檔案,選擇 Build -> Build Solution ,即可建立。生成的 PerfView.exe 檔案是以 src/PerfView/bin/BuildType/PerfView.exe 命名,配置好後即可使用。
需要工具:Visual Studio 2013 或更高版本,建議 Visual Studio 2015 。
詳情:https://www.oschina.net/p/per...

14、vcpkg:VC++ 打包工具 
vcpkg 是微軟 C++ 團隊開發的在 Windows 上執行的 C/C++ 專案包管理工具,可以在 Windows 平臺上獲取 C 和 C++ 庫.
vcpkg 自身也是使用 C++ 開發的,整合了 git,構建系統整合的 CMake,並且 vcpkg 能夠幫助使用者在 Visual Studio 中更好的使用這些安裝好的庫.
詳情:https://www.oschina.net/p/vcpkg

15、Checked C:C/C++ 更加安全的庫 
Checked C允許程式設計師在C/C++中編寫“確保邊界檢查”的程式碼。該規範確定了變數操作行為,包括指標型別的間接定址、陣列引用、賦值、指標加法、比較、取址(&)、含邊界檢查陣列型別和指標型別的轉換等。編譯器可以通過增加引數在指標非正常使用時發出警告或者錯誤。
Checked C 包含規範、一個clang的實現和一個LLVM的實現。
詳情:https://www.oschina.net/p/che...

16、monaco-editor :基於瀏覽器的程式碼編輯器 
Monaco Editor 是微軟開源的基於 VS Code 的程式碼編輯器,執行在瀏覽器環境中。編輯器提供程式碼提示,智慧建議等功能。供開發人員遠端更方便的編寫程式碼。
詳情:https://www.oschina.net/p/mon...

亞馬遜開源軟體

1、DDSTNE:開源深度學習工具 
DDSTNE是亞馬遜推薦系統中使用的深度學習工具,為多GPU節點和鬆散資料結構進行了專門優化.
Github主倉庫: 
https://github.com/amznlabs/a...

2、opsworks-cookbooks:開源運維輔助工具 
亞馬遜為開源運維工具Chef編寫的配置和運維策略集。如果你想在AWS上嘗試Chef,這是亞馬遜為你進行的專門定製。在其他平臺上嘗試Chef,亞馬遜的opsworks-chookbooks也有一定的參考意義.
Github主倉庫:
https://github.com/aws/opswor...

3、Amazon Ion:開源資料儲存格式 
亞馬遜開源的資料儲存格式,同時支援便於檢視的文字格式和便於高效儲存和傳輸的二進位制格式。提供了C,Java,Python語言的支援。
Github主倉庫:
https://github.com/amznlabs/i...

谷歌開源軟體
1、Android:開源移動作業系統 
世界最流行的作業系統,市場佔有量甚至超過了Windows。 成功很大程度來源Android作業系統相比競爭對手採用了開源的策略,使得手機制造商能夠大量生產基於Android作業系統的手機。
地址:
https://source.android.com

2、Chromium:開源瀏覽器 
Chromium是Chrome的開源版本,幾乎所有的瀏覽器新特性都會首先出現在Chromium上再逐步往Chrome“下放”。由於Chromium的開源屬性,幾乎所有的國產瀏覽器裡都有著Chromium的開原始碼。
地址:
https://www.chromium.org/

3、TensorFlow:AI和機器學習 
TensorFlow是Google開源的用於機器學習庫。用於構建和訓練神經網路,編寫AI程式。去年橫掃人類圍棋高手的Google AI程式,就是基於TensorFlow編寫的。TensorFlow可以執行在CPU,也可以執行在GPU之上。
Github主倉庫:
https://github.com/tensorflow...

4、Go:開源程式語言 
釋出於2007年的程式語言。Go嘗試成為一種在保留住靈活性和效能的同時最大程度去處C系程式語言複雜度的新系統語言。雖然社群裡一直有對Go特性不足的抱怨,但創始人堅決認為這對保持這一語言的成功是必不可少的。 Go語言目前主要運用於伺服器程式設計領域。
Github主倉庫:
https://github.com/golang/go

5、AngularJS:前端框架 
AngularJS是一個用來編寫單頁Web應用的前端框架。雖然AngularJS的目標是簡化Web應用的開發過程,但其自身引入的眾多概念帶來的複雜性也受不少詬病。
Github主倉庫:
https://github.com/angular/an...

6、Kubernetes:容器叢集管理系統 
Kubernetes 是來自 Google 雲平臺的開源容器叢集管理系統。基於 Docker 構建一個容器的排程服務。該系統可以自動在一個容器叢集中選擇一個工作容器供使用。其核心概念是 Container Pod。
Github地址:
https://github.com/kubernetes...

7、Protocol Buffers:分散式計算 
用於不同程序和伺服器之間進行資料通訊的資料序列化工具。伺服器上不同的程式能通過Protocol Buffers來進行通訊和分工協作。相比XML和JSON,Protocal Buffers有著更高的效能,但你也不再能僅憑文字編輯器就檢視到自己的資料。
Github主倉庫:
https://github.com/google/pro...

8、Dart:開源程式語言 
另一個由Google支援的開源程式語言。Dart著力於Web應用,移動App和物聯網裝置。和Go不同,Dart不是一種編譯型語言。它和Python或Java一樣執行在自己的虛擬機器之上,但也能轉換成JavaScript放入瀏覽器中執行。
Github主倉庫: 
https://github.com/dart-lang/sdk

9、Fuchsia OS:作業系統 
神祕的全新開源作業系統,和之前的Android不同,Fuchsia OS沒有基於Linux核心,而是另起爐灶打造裡一套更能被Google控制的作業系統核心. Google是準備打造IOT(物聯網)領域的新Android,還是僅僅是個試驗專案,現在還不得而知。
地址: https://fuchsia.googlesource.com

10、GWT:Google web工具包
Google 網頁工具包——GWT 提供了一組基於Java語言的開發包,
開發出來的Java應用將由GWT開發包提供的編譯工具編譯後聲生成對應的、應用了Ajax技術的Web應用,Java應用中出現的、和伺服器之間的互動動作被自動生成的非同步呼叫程式碼所代替。
詳情:http://www.oschina.net/p/goog...

11、Google Mock:C++模擬測試框架  
Google Mock在google內部超過100個專案中使用過,這個框架能夠在Linux,Windows 和Mac OS X上使用。
下載地址:
http://download.csdn.net/down...

12、GRPC:RPC 框架  
GRPC 是一個高效能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc,grpc-java,grpc-go。其中 C 版本支援 C,C++,Node.js,Python,Ruby,Objective-C,PHP 和 C# 支援。
GRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連線上的多複用請求等特。這些特性使得其在移動裝置上表現更好,更省電和節省空間佔用。
開源中國組織翻譯的《gRPC 官方文件中文版》:
http://doc.oschina.net/grpc

13、Gumbo:純C語言實現的HTML5解析庫 
Gumbo 是 Google 的一款用C語言實現的HTML5解析庫,無需任何外部依賴。目標及特徵:
遵循 HTML5 規範
功能強大,可處理一些不規範的 HTML 標籤
簡單的 API
支援源位置和指標回到原始文字
輕巧、沒有外部依賴
通過 html5lib-0.95 相容測試
已在超過25億個來自谷歌索引的頁面中進行過測試
Github地址:
https://github.com/google/gum...

14、Google API for Java
Google API Client Library for Java 是由Google開發的一個Java客戶端類庫,用於訪問其提供的各種基於HTTP的服務。具有靈活、高效、強大等特點。這是訪問基於REST或JSON-RPC的Google API推薦類庫。
Github地址:
https://github.com/google/goo...

15、MDL:前端開發工具組
MDL (Material Design Lite) 是 Google 推出的網站前端開發工具組。Material Design Lite (MDL)可以讓你新增一個 Material Design 的外觀和感覺到你的靜態內容網站,不依賴於任何的 JavaScript 框架和庫。MDL 可以優化跨裝置的使用體驗,可以在舊版的瀏覽器進行平滑的切換,提供非常快速的訪問體驗。
瀏覽器支援:
IE9-11,Chrome,Opera,Firefox,Safari,Chrome(Android),Mobile Safari。
詳情:https://www.oschina.net/p/mdl

16、Google JS Test 
Google JS Test是一個運行於V8 JavaScript引擎下的Javascript單元測試框架,其在Google內部負責對Chrome的快速JS執行速度進行測試。
詳情:https://www.oschina.net/p/goo...

17、Bazel:程式碼構建工具 
Bazel 是 Google 的一款可再生的程式碼構建工具。它主要是用於構建 Google 的軟體,處理出現在谷歌的開發環境的構建問題,比如說:大規模資料構建問題,共享程式碼庫問題,從原始碼構建的軟體的相關問題。
Bazel 支援多種語言並且跨平臺,還支援自動化測試和部署、具有再現性(Reproducibility)和規模化等特徵。Bazel 在谷歌大規模軟體開發實踐能力方面起著至關重要的作用。
詳情:https://www.oschina.net/p/bazel
GitHub地址:
https://github.com/bazelbuild...

18、SyntaxNet:全球最精準自然語言解析器 
SyntaxNet 是一個框架,即學術圈所指的SyntacticParser,他是許多NLU系統中的關鍵元件。在這個系統中輸入一個句子,他會自動給句子中的每一個單詞 打上POS(part-of-Speech)標籤,用來描述這些詞的句法功能,並在依存句法樹中呈現。這些句法關係直接涉及句子的潛在含義。
詳情:https://www.oschina.net/p/syn...

19、AnyPixel.js:可令使用者自己創造互動展示  
AnyPixel.js 是 Google 開源的一個軟體和硬體框架,可以用來構建各種由“畫素”構成的展示,每個畫素可以是任何一種可互動的實體物件,如 LED 燈、氣球等。
詳情:https://www.oschina.net/p/any...

20、PerfKit:雲基準測試工具
PerfKit 提供一組基準測試方法用來測量和比較雲服務。當前支援 Google 自己的 Compute Engine、亞馬遜的 AWS 和微軟的 Azure 雲。PerfKit 同時還提供一個視覺化工具 PerfKit Explorer 用來比較測試結果。
詳情:https://www.oschina.net/p/per...

21、Gson:Java的JSON類庫
Gson 是 Google 提供的用來在 Java 物件和 JSON 資料之間進行對映的 Java 類庫。可以將一個 JSON 字串轉成一個 Java 物件,或者反過來。
詳情:https://www.oschina.net/p/goo...
GitHub地址:
https://github.com/google/gson

22、Eclipse ADT:Eclipse ADT logoAndroid開發外掛
Eclipse ADT 是 Eclipse 平臺下用來開發 Android 應用程式的外掛。
線上安裝地址:
https://dl-ssl.google.com/and...

23、LevelDB:K/V資料庫 
Leveldb是一個google實現的非常高效的kv資料庫,目前的版本1.2能夠支援billion級別的資料量了。 在這個數量級別下還有著非常高的效能,主要歸功於它的良好的設計。特別是LSM演算法。
LevelDB 是單程序的服務,效能非常之高,在一臺4個Q6600的CPU機器上,每秒鐘寫資料超過40w,而隨機讀的效能每秒鐘超過10w。
Github地址:
https://github.com/google/lev...
在企業使用開源和貢獻開源方面,Google一直是行業的典範。一直以來,Google都在極力推廣和倡導開源,併發布了一系列開源專案。開源中國社群目前收錄了Google 259 款開源軟體,此處不一一列舉。

IBM開源軟體

1、Apache SystemML :機器學習語言 
SystemML 是靈活的,可伸縮機器學習 (ML) 語言,使用 Java 編寫。機器學習 (ML) 是指無需顯式的程式設計即可讓計算機學習的能力。
SystemML 先進的機器學習主要基於兩方面:SystemML 語言,宣告式機器學習 (DML)。
SystemML 包含線性代數原語,統計功能和 ML 指定結構,可以更容易也更原生的表達 ML 演算法。演算法通過 R 型別或者 Python 型別的語法進行表達。DML 通過提供靈活的定製分析表達和獨立於底層輸入格式和物理資料表示的資料顯著提升資料科學的生產力。
其次,SystemML 提供自動優化功能,通過資料和叢集特性保證高效和可伸縮。SystemML 可以在 MapReduce 或者 Spark 環境執行。
詳情:https://www.oschina.net/p/sys...

2、Kitura:Swift 的 Web 框架 
Kitura,來自IBM的基於Swift的Web框架,也是一個HTTP伺服器。
特性:
URL路由(GET, POST, PUT, DELETE)
URL引數
靜態檔案服務
支援FastCGI
支援SSL/TLS
JSON解析
可插拔的中介軟體
詳情:https://www.oschina.net/p/kitura
GitHub地址:
https://github.com/IBM-Swift/...

3、TJ Bot:開源 DIY 紙板機器人 
TJBot 延續了手工社群的精神,它是一套 DIY 工具包,可讓你建立由 Waston 驅動的可程式設計紙板機器人。該機器人由一塊切割的紙板(可以是 3D 列印或者鐳射切割)、Raspberry Pi 和多種外掛(包括一個 RGB LED 燈、一個麥克風、一個伺服電機和一個攝像頭)構成。
詳情:https://www.oschina.net/p/tj-bot

4、OpenWhisk:無伺服器計算平臺 
OpenWhisk 是一個由 IBM 開源的、事件驅動的無伺服器計算平臺,你可以將操作程式碼傳送給 OpenWhisk,然後提供 OpenWhisk 程式碼要處理的資料流。OpenWhisk 負責處理計算資源的擴充套件,這些資源是處理工作負載所需要的;你只需要處理操作程式碼以及觸發這些操作的資料。
OpenWhisk 簡化了微服務的部署,消除了管理自己的訊息代理或部署自己的工作伺服器的需求。OpenWhisk 適用於你不希望管理任何基礎架構的專案,只需為已完成的工作付費,不會將金錢浪費在空閒的伺服器上。OpenWhisk 很容易管理活動峰值,因為它可以外擴來滿足該需求。
詳情:https://www.oschina.net/p/ope...
GitHub地址:
https://github.com/bjustin-ib...

5、Quarks:物聯網感測器資料應用開發工具 
Quarks 是 IBM 開發的一個開源開發工具,用於幫助製造商和程式設計師開發高效的基於物聯網感測器資料的應用。
詳情:https://www.oschina.net/p/quarks

6、Node Application Metrics:Node.js 應用監控工具 
Node Application Metrics 提供了一個基礎設施,來為基於 Node.js 的應用收集資源和效能監控資料。Node Application Metrics 建立所基於的資料收集效能,是 Health Center 開發工具所使用的,同時也是基於 Eclipse 的 IBM 監控和診斷工具的一部分。
Node Application Metrics 公開了 JavaScript 和 C 的 API,這使得開發者工具、管理和擴充套件工具、效能監控工具,比如 StatsD with Graphite 或 Elasticsearch with Kibana,都可以實現資料採集。
詳情:https://www.oschina.net/p/nod...

7、Clouseau:全文搜尋庫 
Clouseau 通過類似 Erlang 的節點使用 Scalang 來公開 Lucene 的功能。在每個獨立的終端視窗執行。
詳情:https://www.oschina.net/p/clo...

8、Dreyfus:全文搜尋庫 
Dreyfus 管理 Clouseau 節點來表現全文搜尋特性。
詳情:https://www.oschina.net/p/dre...

Facebook開源軟體

1、React Native:移動開發框架
React Native是Facebook在2015年開源的基於React.js的移動開發框架,它的設計理念是讓移動應用既擁有Native的使用者體驗,同時又可以保留React的開發效率,提高程式碼的複用率。React Native的宗旨是,學習一次,高效編寫跨平臺原生應用。開發者可以使用JavaScript編寫應用,並利用相同的核心程式碼就可以建立Web、iOS 和Android平臺的原生應用,目前已經實現了對iOS和Android兩大平臺的支援。
GitHub主頁:
https://github.com/facebook/r...

2、GraphQL:資料查詢語言
GraphQL是Facebook開源的資料查詢語言。Facebook在構建移動應用程式時,需要用API獲取足夠強大的資料來描述所有的臉譜,同時簡單易學易用,於是開發了GraphQL,並支援每天千億級的呼叫。GraphQL不是像MySQL或Redis這樣直接面向資料的介面,而是面向已經存在的應用程式碼的介面。你可以把GraphQL看作是為了呼叫應用伺服器上的方法的一些內嵌的RPC。
GitHub主頁:
https://github.com/facebook/g...

3、Presto:大資料查詢引擎
Presto是Facebook開發的一款分散式SQL引擎,主要用於針對各種大小的資料來源(從GB到PB)來執行互動式分析查詢。Facebook建立Presto的主要目的在於幫助他們更快地分析資料,因為Facebook的資料量一直在持續增長,產品週期的節奏也變得越來越快。自從2013年11月開源後,Presto的使用者量呈現了爆發式增長。諸如Airbnb、京東、Dropbox以及Netflix等公司都將Presto作為自己的互動式查詢引擎。
GitHub主頁:
https://github.com/prestodb/p...

4、HHVM:PHP執行引擎
HHVM(HipHop Virtual Machine)是Facebook於2013年開源的PHP執行引擎。它採用一種JIT(just-in-time)的編譯機制實現了高效能,同時又保持對 PHP 語法的充分支援。HHVM常常用作獨立的伺服器,用於替代Apache與mod_php,旨在執行使用Hack與PHP所編寫的程式。它使用了即時編譯方法來實現超高的效能,同時又保持了PHP開發者所習慣的靈活性。
GitHub主頁:
https://github.com/facebook/hhvm

5、React:JavaScript庫
React是Facebook開發的用於構建使用者介面的JavaScript庫,現已為很多公司所用,因為它採用了一種不同的方式來構建應用:藉助於React,開發者可以將應用分解為彼此解耦的獨立元件,這樣就可以獨立維護並迭代各種元件了。2015年,React有兩個主要的釋出,同時還發布了React Native,並且釋出了新的開發者工具。現在已經有越來越多的公司(包括Netflix與WordPress)開始使用React構建自己的產品了。
GitHub主頁:
https://github.com/facebook/r...

6、RocksDB:鍵值儲存系統
RocksDB是Facebook開源的嵌入式、可持久化鍵值儲存系統,它基於Google的LevelDB,但提高了擴充套件性可以執行在多核處理器上,可以有效使用快速儲存,支援IO繫結、記憶體和一次寫負荷。過去一段時間,RocksDB在社群非常流行,Facebook分析其原因在於它能夠對由於網路延遲等原因造成的慢查詢響應時間起到消除的作用,RocksDB非常靈活,完全可以針對各種新興的硬體發展趨勢進行定製。LinkedIn與Yahoo都是RocksDB的重度使用者。
GitHub主頁:
https://github.com/facebook/r...

7、Big Sur:人工智慧硬體平臺
近些年,人工智慧和機器學習方向取得了長足的發展。據Kevin Lee透露,Facebook的AI軟體已經能夠閱讀故事、回答相關場景的問題、玩遊戲以及通過一些例子來學習非指定的內容。作為計算密集型的應用,AI軟體的效能與資料集規模/硬體效能密切相關。尤其是硬體方面,高效能微處理器、儲存器以及圖形處理器(Graphics Processing Unit,GPU)的發展為AI演算法的快速執行提供了堅實基礎。為了進一步更好地服務大規模AI計算,Facebook推出了基於GPU的、用於訓練神經網路的“Big Sur”硬體系統。

8、ATC:網路模擬測試工具
Augmented Traffic Control(ATC)能夠利用Wi-Fi網路模擬2G、2.5G(Edge)、3G以及LTE 4G行動網路環境,測試工程師們可以快速在各種不同的模擬網路環境中切換,從而實現對智慧手機和App在不同國家地區和應用環境下的效能表現進行測試。ATC是Facebook內部團隊在2013年的一次Hackathon活動上開發出來的工具,其原理實際是利用了Linux流量控制系統,通過純Python的網路庫pyroute2呼叫netlink的API控制,而開發其的目的是為了確保更多的使用者獲得最好的應用體驗。
GitHub主頁:
https://github.com/facebook/a...

9、HydraBase:開源資料庫
HydraBase是HBase資料庫的升級版。Facebook是HBase的重度使用者,Facebook的HBase資料庫系統儲存著Facebook的很多關鍵業務資料,包括內部監控系統、搜尋索 引、流資料分析以及資料抓取等。HydraBase相比HBase穩定性和可用性更高,可以減少伺服器宕機時間。HydraBase能夠讓一個數據域分佈在多個域伺服器中,域伺服器之間能相互備份,因此能夠大大減少資料恢復所用的時間。Facebook聲稱HydraBase能將Facebook全年的宕機時間縮減到不到5分鐘。
Facebook已經將HydraBase捐贈給Apache,目前很多程式碼都已經被合併到HBase中。
詳情:https://www.oschina.net/p/hyd...

10、WebScaleSQL:關係型資料庫
WebScaleSQL是基於MySQL 5.6 社群版本改編的MySQL通用分支,基於GPL開源協議釋出。WebScaleSQL目前已經做了很多效能改進工作,包括:客戶端非同步協調、邏輯預讀、查詢限流、服務端執行緒池優化、InnoDB大頁支援等等。WebScaleSQL上的功能都是很“Web Scale”和接地氣的。比如執行緒池優化,WebScaleSQL基於Mariadb的執行緒池實現進行重寫並優化,對讀寫佇列進行分離,重新設計佇列優先順序策略,避免了餓死現象。要知道執行緒餓死在有些場景下是很嚴重的。尤其是在併發連線數往往很大的網際網路應用裡面。
GitHub主頁:
https://github.com/webscalesq...

11、Phabricator:程式碼審查工具
程式碼審查方面,Facebook開源了視覺化工具Phabricator。工程師可以在頁面上非常方便的針對每一段(單行或者多行)程式碼進行互動討論;負責審查的工程師可以接受程式碼改變,可以提出疑問要求原作者繼續修改,可以提出自己不適合以推出該程式碼審查,等等。只有程式碼被明確接受之後才能被工程師提交到伺服器端的程式碼庫,這一點整合到提交工具中強制執行。
GitHub主頁:
https://github.com/phacility/...

12、Proxygen:C++HTTP框架
Proxygen是一款Facebook開源的支援SPDY 3.1的HTTP框架。其目的不是替換Apache,而是有能力建立一個專用的高效能Web伺服器,使其可以嵌入到Facebook提供Web服務的現有應用中。Facebook從2011年開始構建一款代理伺服器(Proxygen這個名字也是由此而來),在該專案演進並在生產環境中測試了數年之後,Facebook將其程式碼開源了。 Facebook內部做的基準測試表明,在一個Proxygen echo伺服器上,每秒可以支撐多達304 197次基於SPDY 3.1的記憶體GET請求。
GitHub主頁:
https://github.com/facebook/p...

13、Pop:開源動畫庫
Pop是Facebook推出的一個可擴充套件的iOS 和OS X動畫庫,其新聞聚合閱讀應用Paper背後的核心技術就是由Pop支援。除了增加基本的靜態動畫外,還支援Spring和衰變動態動畫,可非常方便的構建現實的、基於物理的互動。Pop動畫庫的動畫效果非常流暢,因為它使用了CADisplayLink來重新整理畫面(幀),一秒鐘重新整理幀數為60幀,接近於遊戲開發引擎。Pop動畫的自成體系,與系統的CoreAnimation有很大的區別,但使用上非常相似。
GitHub主頁:
https://github.com/facebook/pop

14、Infer:靜態程式碼分析工具
Infer是Facebook的開發團隊在程式碼提交內部評審時,用來執行增量分析的一款靜態分析工具,在程式碼提交到程式碼庫或者部署到使用者的裝置之前找出bug。由OCaml語言編寫的Infer目前能檢測出空指標訪問、資源洩露以及記憶體洩露,可對C、Java或Objective-C程式碼進行檢測。
Facebook使用Infer自動驗證iOS和安卓上的移動應用的程式碼,bug報告的正確率達80%。Infer通過捕獲編譯命令,把要被編譯的檔案轉換為可用於分析潛在錯誤的中間語言格式。整個過程是增量進行的,意味著通常只有那些有修改過並提交編譯的檔案才會被Infer分析。Infer還集成了大量的構建或編譯工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。
GitHub主頁:
https://github.com/facebook/i...

15、osquery:作業系統監控工具
osquery是一款面向OSX和Linux的作業系統檢測框架。它將作業系統暴露為一個高效能的關係型資料庫,允許使用者編寫SQL查詢檢視作業系統資料。在osquery中,SQL表代表像下面這樣的抽象概念:
正在執行的程序
已載入的核心模組
開啟的網路連線
GitHub主頁:
https://github.com/facebook/o...

16、Flow:JavaScript靜態型別檢查工具
Flow是Facebook出品的一個JavaScript程式碼的靜態型別檢查工具,該工具採用開放原始碼的OCaml(Objective Caml)語言開發,。Flow能夠幫助開發人員查找出JavaScript程式碼中的型別錯誤,從而提高開發效率和程式碼質量。Flow已經能夠捕獲JavaScript程式碼中的常見問題,如靜態型別轉換不匹配、空指標引用等問題。同時,Flow還為JavaScript新增了型別語法,如類型別名。
GitHub主頁:
https://github.com/facebook/flow

17、Flux:Web應用架構
Flux是一個Facebook開發的、利用單向資料流實現的應用架構,用於 React。Flux應用有三個主要的部分組成:排程程式、儲存和檢視(React 元件)。
GitHub主頁:
https://github.com/facebook/flux

18、Stetho:Android除錯工具
Stetho是一個Android應用的除錯工具。當Android應用整合Stetho時,開發者可以通過訪問Chrome,在Chrome Developer Tools中檢視應用佈局、網路請求、sqlite、preference等等,視覺化一切應用操作(更重要的是不用root)。開發者也可通過它的dumpapp工具提供的命令列介面來訪問應用內部。
GitHub主頁:
https://github.com/facebook/s...

VMware開源軟體

1、Cloud Foundry:開源PaaS平臺 
Cloud Foundry是VMware於2011年4月12日推出的業界第一個開源PaaS雲平臺,它支援多種框架、語言、執行時環境、雲平臺及應用服務,使開發 人員能夠在幾秒鐘內進行應用程式的部署和擴充套件,無需擔心任何基礎架構的問題。
同時,它本身是一個基於Ruby on Rails的由多個相對獨立的子系統通過訊息機制組成的分散式系統,使平臺在各層級都可水平擴充套件,既能在大型資料中心裡執行,也能執行在一臺桌面電腦中, 二者使用相同的程式碼庫。
作為新一代雲應用平臺,Cloud Foundry專為私有云計算環境、企業級資料中心和公有云服務提供商所打造。Cloud Foundry雲平臺可以簡化現代應用程式的開發、交付和執行過程,在面對多種公有云和私有云選擇、符合業界標準的高效開發框架以及應用基礎設施服務時, 可以顯著提高開發者在雲環境中部署和執行應用程式的能力。
Cloud Foundry為開發者構建了具有足夠選擇性的PaaS雲平臺,它同時支援多種開發框架、程式語言、應用服務以及多種雲部署環境的靈活選擇
詳情:https://www.oschina.net/p/clo...

2、ESXi:虛擬化系統 
ESXi (VMware vSphere Hypervisor)專為執行虛擬機器、最大限度降低配置要求和簡化部署而設計。只需幾分鐘時間,客戶便可完成從安裝到執行虛擬機器的全過程,特別是在下載並安裝預配置虛擬裝置的時候。在VMware Virtual Appliance Marketplace 上有800多款為VMware hypervisor 建立的虛擬裝置,如今,ESXi已經實現了與Virtual Appliance Marketplace的直接整合,使使用者能夠即刻下載並執行虛擬裝置。這為即插即用型軟體的交付與安裝提供了一種全新和極其簡化的方式。
詳情:https://www.oschina.net/p/esxi

3、Harbor:企業級 Registry 伺服器 
Harbor 包括了許可權管理(RBAC)、LDAP、審計、管理介面、自我註冊、HA 等企業必需的功能,同時針對中國使用者的特點,設計映象複製和中文支援等功能,歡迎使用和反饋意見。
作為一個企業級私有 Registry 伺服器,Harbor 提供了更好的效能和安全。提升使用者使用 Registry 構建和執行環境傳輸映象的效率。Harbor 支援安裝在多個 Registry 節點的映象資源複製,映象全部儲存在私有 Registry 中, 確保資料和智慧財產權在公司內部網路中管控。另外,Harbor 也提供了高階的安全特性,諸如使用者管理,訪問控制和活動審計等。
詳情:https://www.oschina.net/p/harbor

4、VMware View Open Client:虛擬桌面環境 
VMware View Open Clien 是 VMware 以 LGPL V2.1 許可釋出了一個開源的 Linux VDI(virtual desktop infrastructure)客戶端。主要用於訪問由 VMware View 所管理的個性化虛擬桌面環境。目前 VMware View Open Clien 提供下列功能:
支援使用 SSL 建立安全隧道
支援利用 RSA SecurID 進行雙重認證
提供Novell SLETC Add-On RPM 包
全命令列介面
詳情:https://www.oschina.net/p/vmw...

5、Photon Controller:叢集管理系統 
Photon Controller 是開源的硬體,容器和叢集管理系統。是一套分散式、API 驅動型多租戶控制平臺,旨在最大程度提升擴充套件能力與容器承載量,且能夠根據開發者的實際需要支援 Docker Swarm、Cloud Foundry、Kubernetes 以及 Mesos 等多種相關方案。
詳情:https://www.oschina.net/p/pho...

6、Serengeti:Hadoop部署管理和擴充套件 
支援企業能夠在虛擬和雲環境中快速部署、管理和擴充套件Apache Hadoop。此外,VMware與Apache Hadoop社群共同合作研發擴充套件功能,讓主要元件可以“感知虛擬化”以支援靈活擴充套件,並進一步提高Hadoop在虛擬化環境中的效能。
Serengeti基於Apache 2.0許可證。它是一鍵式部署工具包,支援企業能夠利用VMware vSphere平臺在幾分鐘內部署高度可用的Apache Hadoop叢集,包括Apache Pig和Apache Hive等常見的Hadoop元件。通過使用Serengeti在VMware vSphere上執行Hadoop,企業可以輕鬆享受到值得信賴、廣泛部署的全球虛擬化平臺的高可用性、容錯性和現場遷移能力,從而實現Hadoop叢集的可用性和可管理性。
詳情:https://www.oschina.net/p/ser...
GitHub地址:
https://github.com/vmware-ser...

eBay開源軟體

1、Apache Griffin:開源資料質量解決方案 
Apache Griffin是一個應用於分散式資料系統中的開源資料質量解決方案。在Hadoop, Spark, Storm等分散式系統中,提供了一整套統一的流程來定義和檢測資料集的質量並及時報告問題。  
Apache Griffin填補了開源世界裡在大資料質量領域的空白。就像空氣質量,水和食品安全等無時不刻地在影響人類的生命一樣,資料質量在資料科學領域是至關重要的。在大資料時代,企業決策調整,商機發現等越來越依賴於大資料的資料分析和資料探勘,而資料質量的保證是所有一切資料分析和資料探勘的基礎。
詳情:https://www.oschina.net/p/gri...

2、Turmeric:開源SOA平臺 
Turmeric是eBay公司開發的SOA開源平臺。這個平臺擁有一個完整的安全措施驅動的保安系統,它基於Java,遵守WSDL, SOAP, XML, JSON, XACML, REST等主要標準,支援各種協議和資料格式的可插拔,可用於SOA的服務端以及應用端的開發、部署、安全保護、執行和監控。平臺提供了Eclipse 外掛,輔助SOASOA的服務端以及應用端程式的開發。當前釋出的版本是1.0.0 GA,包括eBay公司內部使用的類似平臺的大部分元件,只是將其中依賴於商業產品的一些功能去除,並代之以開源的等價實現。
詳情:https://www.oschina.net/p/tur...

3、REST Superman:Web伺服器監控和管理 
REST Superman 已改名REST Commander是 eBay 開發的一個使用快速並行的非同步 HTTP/REST/SOAP 客戶端開發的服務用來監控和管理10000臺 Web 伺服器,可在 10 秒內傳送請求到 1000 臺伺服器,或者 50 秒內傳送請求到 10000 臺伺服器。
詳情:https://www.oschina.net/p/res...
GitHub地址:
https://github.com/eBay/restc...

4、Apache Eagle:Hadoop 資料安全方案 
Apache Eagle提供一套高效分散式的流式策略引擎,具有高實時、可伸縮、易擴充套件、互動友好等特點,同時整合機器學習對使用者行為建立Profile以實現實時智慧實時地保護Hadoop生態系統中大資料的安全。
Eagle 是開源分散式實時Hadoop資料安全方案,支援資料行為實時監控,能立即監測出對敏感資料的訪問或惡意的操作,並立即採取應對的措施。Eagle具有如下特點:高實時、可伸縮、簡單易用、使用者Profile。
詳情:https://www.oschina.net/p/apa...

5、Parallec:HTTP/SSH/TCP/Ping並行客戶端 
Parallec是一個基於Akka的快速並行非同步HTTP(S)/SSH/TCP/UDP/Ping 客戶端的Java庫。它是eBay雲端計算部門開發並在REST Superman基礎上開源的。
詳情:https://www.oschina.net/p/par...
GitHub地址:
https://github.com/eBay/parallec

6、fabio:HTTP(S) 路由器 
fabio 由 eBay Classifieds Group 開發, 用於處理 marktplaats.nl 和 kijiji.it 的流量。Marktplaats 所有的流量都經過 fabio ,每秒有數千個請求,分發於數個 fabio 例項。但我們並沒有觀察到任何延遲。
詳情:https://www.oschina.net/p/fabio
GitHub地址:
https://github.com/fabiolb/fabio

7、Ebay Pulsar:實時大資料分析平臺
Pulsar 作為一個複雜事件處理平臺,具有快速,準確,靈活的特性,保證點到點的低延時和高可靠,從而很好得滿足了的eBay秒級實時資料分析的需求。同時每秒百萬級流量處理能力,給客戶帶來更好的個性化體驗,幫助客戶監控實時業務資訊並定製實時營銷策路,及時監測網路欺詐行為並減少機器人干預。並且Pulsar是基於標準的分散式雲架構部署並跨越多個數據中心,從而保證了在系統升級和拓撲更新時沒有叢集停機時間。
詳情:https://www.oschina.net/p/eba...

Twitter開源軟體
1、Typeahead.js:jQuery外掛,快速、全功能的自動完成庫
Typeahead.js是Twitter的一個jQuery外掛,支援遠端和本地的資料集。比較有特色的地方在於,你可以將資料集使用本地儲存(local storage)來儲存在本地,有效的提高使用者體驗。同時也擁有很多遠端資料集的處理選項,例如請求頻率,最大的併發請求數,等等。
GitHub主頁:
https://github.com/twitter/ty...

2、Twemoji:JavaScript庫
Twemoji是Twitter於2014年開源的完整的Emoji表情圖片,Twemoji包含872個表情,相容最新的Unicode 7.0。Emoji,來自日本的小巧符號,通過影象表達感情,已經征服了移動網際網路的資訊世界。現在,你可以在虛擬世界中隨處使用它們。開發者可以去GitHub下載完整的表情庫,並把這些表情加入到自己的應用或網頁中。
GitHub主頁:
https://github.com/twitter/tw...

3、Hogan.js:JavaScript模板引擎
Hogan.js是Twitter團隊所製作的一個針對mustache模板的語法解析器。Hogan.js不依賴其他任何庫或框架,同時保證了高效率的模板解析,而其體積卻僅有2.5K。用它作為你的一部分資產打包編譯模板提前或將它包括在你的瀏覽器來處理動態模板。
GitHub主頁:
http://twitter.github.com/hog...

4、Finagle:RPC框架
Finagle是一個允許開發者使用Java、Scala或其他JVM語言來構建非同步RPC伺服器和客戶端的庫,主要用於Twitter的後端服務。Finagle是Twitter基於Netty開發的支援容錯的、協議無關的RPC框架,該框架支撐了Twitter的核心服務。
Twitter面向服務的架構是由一個龐大的Ruby on Rails應用轉化而來的。為了適應這種架構的變化,需要有一個高效能的、支援容錯的、協議無關且非同步的RPC框架。在面向服務的架構之中,服務會將大多數的時間花費在等待上游服務的響應上,因此使用非同步的庫能夠讓服務併發地處理請求,從而充分發揮硬體的潛能。Finagle構建在Netty之上,並不是直接在原生NIO之上構建的,這是因為Netty已經解決了許多Twitter所遇到的問題並提供了乾淨整潔的API。
GitHub主頁:
https://github.com/twitter/fi...

5、Diffy:自動化測試工具
Diffy是一個開源的自動化測試工具,它能夠自動檢測基於Apache Thrift或者基於HTTP的服務。使用Diffy,只需要進行簡單的配置,之後不需要再編寫測試程式碼。
Diffy主要基於穩定版本和它的副本的輸出,對候選版本的輸出進行比較,以檢查候選版本是否正確。因此,Diffy首先假設候選版本應該和穩定版本有“相似”的輸出。即不論候選版本和穩定版本系統模組是否相同,他們的最終輸出應該是“相似”的。這裡一直使用“相似”,而不是使用相同,是因為相同請求可能會有一些Diffy不需要關心的干擾。
GitHub主頁:
https://github.com/twitter/diffy

6、Scalding:Scala庫
Scalding是一個Scala庫,簡化了Hadoop MapReduce作業開發,基於Cascading構建。Scalding跟Pig類似,但提供更緊密的Scala整合。Scalding是用於Cascading的Scala API。Cascading是一個構建於Hadoop上的API,用來建立複雜和容錯資料處理工作流,它抽象了叢集拓撲結構和配置,允許開發者快速開發複雜分散式的應用,而不用考慮背後的MapReduce。
GitHub主頁:
https://github.com/twitter/sc...

7、Heron:資料實時分析平臺
在Twitter,Heron作為主要的流媒體系統,執行數以百萬計的開發和生產topologies。由於Heron可高效使用資源,在遷移Twitter所有的topologies後,整體硬體減少了3倍,導致Twitter的基礎設定效率有了顯著的提升。
GitHub主頁:
https://github.com/twitter/heron

8、SecureHeaders:Web安全開發工具
SecureHeaders是Twitter送給Web開發者的一份大禮,作為一款Web安全開發工具,Secureheaders能夠自動實施安全相關的header規則,包括內容安全政策(CSP),防止XSS、HSTS等攻擊,防止火綿羊(Firesheep)攻擊以及XFO點選劫持等。
GitHub主頁:
https://github.com/twitter/se...

9、Twemproxy:代理伺服器
Twemproxy是一個快速的單執行緒代理程式,支援Memcached ASCII協議和更新的Redis協議。它全部用C寫成,使用Apache 2.0 License授權。Twemproxy的強大之處在於可以通過配置的方式讓它禁用掉失敗的結點,同時還能在一段時間後進行重試,抑或使用指定的鍵->伺服器對映。這意味著在將Redis用作資料儲存時,它可以對Redis資料集進行分片(禁用掉結點驅逐);在將Redis用作快取時,它可以啟用結點驅逐以實現簡單的高可用性。
GitHub主頁:
https://github.com/twitter/tw...

10、Bootstrap:Web 前端 UI 框架 
Bootstrap 是快速開發 Web 應用程式的前端工具包。它是一個 CSS,HTML 和 JS 的集合,它使用了最新的瀏覽器技術,給你的 Web 開發提供了時尚的版式,表單,buttons,表格,網格系統等等。
GitHub地址:
https://github.com/twbs/boots...
從Twitter的GitHub賬戶中可以看到,Twitter已經開源的開源專案有近200個,領域涉及分散式架構、大資料、非同步網路傳輸(客戶端、服務端)、Web、工具等,本文列舉常用到的專案。

寫給讀者
越來越多的公司正走向開源,程式語言、作業系統、框架、平臺、資料庫等方方面面開源軟體也越來越多,這些開源專案為我們的工作帶來很多方便,可以直接“拿來”解決技術問題,不用重複造輪子,提高效率的同時也極大地降低了研發成本。
除了軟體可以開源之外,研發實踐也可以開源共享,第六屆TOP100全球軟體案例研究峰會將於11月9-12日在北京國家會議中心舉辦,甄選100個本年度最具行業代表性的軟體研發案例,現場解讀其解決方案和背後的技術邏輯,幫助研發團隊快速提高效能。

更多TOP100案例資訊及日程請前往[官網]查閱。4天時間集中分享2017年最值得學習的100個研發案例實踐。本平臺共送出10張開幕式單天免費體驗票,登入TOP100summit官網即可申請,數量有限,先到先得。