NO IMAGE

Facebook為了爭當開源第一大廠,已經把自家很多好東西都拿了出來貢獻給開源世界,在開源之路上一騎絕塵,根本停不下來。

Facebook開源專案涉及的領域有移動工具多樣化、大資料、客戶端web庫、後臺執行時和基礎設施,還有通過開放計算專案涉及到的伺服器和儲存硬體等等。Facebook的GitHub賬戶有274個程式碼庫,收到了39000次fork、提交了79000個commit,擁有242000個關注者……

下面是Facebook最受歡迎的15個開源專案。

移動開發

Buck

Buck是一個高效能的安卓編譯系統。此係統鼓勵使用者建立由程式碼和資源組成的可複用的小模組。因為安卓應用主要是用Java寫的,Buck也是一個Java編譯系統。

Rebound

Rebound是一個模仿彈簧動力學的Java庫。回彈彈簧模型可以用來建立動畫,通過將真實物理世界引入到你的應用可使動畫更自然。回彈使用相同的彈簧常數,就像Origami使得摺紙互動模型很容易被轉換到安卓應用中。

Origami

Origami是用來設計現代使用者介面的工具。可以迅速的建立原型,執行在你的iPhone或iPad上並進行迭代,將可用的程式碼片段輸出給工程師。

Stetho

Stetho是一個全新的安卓平臺除錯工具。Stetho提供C/S協議,使強大的Chrome開發者工具能在應用程式中使用該協議。你的應用程式整合之後,只需訪問chrome://inspect ,點選“檢查”即可開始。

Infer

Infer是一個靜態分析工具,用來檢測安卓和蘋果系統應用釋出前的缺陷。如果你給Infer一些Objective-C,Java或C程式碼,它會生成一個潛在的缺陷列表。Infer工具也有助於防止系統崩潰和效能下降。Infer的目標是空指標異常、資源漏洞、記憶體溢位之類的致命缺陷。

Web開發

React Js

React Js是個用於構建使用者介面的JavaScript庫,高效且靈活。很多人把React當作MVC中的V來用,因為React不依賴你技術棧裡的其它技術,因此很容易把它用在一些已有專案的小特性上。

HHVM

HHVM是個開源虛擬機器,設計目的是用來執行Hack和PHP寫的程式。HHVM用即時編譯方式實現卓越的效能並保持了PHP的開發靈活性。和Zend PHP5.2相比,HHVM為Facebook實現了超過5倍的產能提升。HipHop通常作為一個獨立的伺服器執行,同時替代Apache和modphp,它也可以在命令列執行單獨的指令碼。

Flux

Flux是Facebook使用者建立客戶端web應用的應用架構。利用一個單向的資料流,Flux補充了React的組合檢視元件。它更像是一種模式,而非正式框架,不用寫太多新程式碼就能直接使用Flux。

Flow

Flow給JavaScript新增了靜態型別,提高開發者的效率和程式碼質量。Flow的目標是減少程式設計師花在查詢JavaScript錯誤上的精力。Flow很大程度上依賴型別推斷來查詢型別錯誤,即使程式碼中並未標註——它像流經程式一樣精確的跟蹤變數的型別。

fb-flo

fb-flo是Chrome的延伸,可以不重新載入而修改執行的應用。它能輕易和你的系統、開發環境實現整合,可以和你喜歡的編輯器一起使用。

Jest

Jest是一款JavaScript的單元測試框架。它建立在Jasmine測試框架之上,使用我們熟悉的expect(期望)和toBe(實際值)。它自動模擬require()返回的CommonJS模組,使得大部分現有程式碼可測試。

Nuclide

Nuclide是一套Atom包,為許多程式語言和技術提供編輯功能。設計目的是為了在整個公司為工程師提供一套標準的開發者經驗——無論他們從事純iOS應用,React和React Native程式碼,或者在Hack執行我們的HHVM網路服務。

後端開發

Presto

Presto是開源的分散式SQL查詢引擎,適用於執行互動式解析查詢,資料量支援從GB到PB。Facebook用Presto進行互動式查詢,用於多個內部資料儲存,包括300PB的資料倉儲。每天有1000多名臉譜網員工用Presto執行超過30000次查詢,掃描超過1PB資料量。

Osquery

Osquery提供一個SQL介面,用來嘗試新的查詢和監控作業系統。它擁有一套完整的SQL語言和許多有用的內建表,Osquery對於執行事件響應、診斷系統操作問題、排除效能故障是非常出色的工具。它也允許開發人員和系統管理員部署安全工具。

RocksDB

RocksDB基於LevelDB,可執行在多CPU核心的伺服器上,高效使用快速儲存,支援IO繫結,記憶體和一次寫負載,並且非常靈活。