2013 年 —— Facebook 在開源方面的工做介紹

自從 Facebook 的第一行PHP代碼,第一句 MySQL 的 INSERT 語句,開源就已是咱們工程哲學中的一個重要的部分。php

如今,咱們使用、維護併爲大量的主要項目作出了貢獻——涉及多種領域如手機工具、大數據系統、客戶端的web庫、後端的運行庫和基礎架構,也涉及到開放計算項目,服務器和存儲硬件。node

2013 是咱們開源項目具備重要意義的一年,咱們擁有大量使人自豪的新項目,爲正常運行和維護它們的更新承諾,和使用它們的充滿活力的社區一塊兒工做的願望。僅在咱們的Github帳戶上,咱們如今已經有超過90個倉庫,有超過40,000次的提交,一共被複制了15,000次。python

年底是一個很好的機會來回顧咱們投入精力的一些主要的領域,簡要重述(不是詳細的!)下咱們工做的一些項目列表。react

手機

咱們最自豪的開源貢獻經常是咱們爲了解決在 Facebook 遇到的規模和性能的挑戰而開發的一些技術。android

手機也不例外:Facebook 的手機應用已是咱們產品團隊今年的一個重點,咱們如今也還須要開發新的兼容性——在這種狀況下,那些要迅速開發、編譯、測試併發布咱們手機應用的需求變得更加的高效。開源咱們的工做,正如咱們已經作的那樣,是很天然的事情,這些工具已經成爲咱們手機開源做品集的核心。git

好比,在四月份,咱們發佈了Buck,咱們的Android編譯工具。開發者的效率對咱們來講很重要,天然速度是Buck的首要工做:在Facebook,咱們發現它在編譯咱們的應用時,比 Ant 快了超過兩倍。從一開始,這個項目就愈來愈強大,並被Android社區也包括一些有名的Java項目普遍應用。github

對於iOS,咱們也有相似的瓶頸,發現咱們須要加速和自動化Xcode的手動編譯過程。結果就是很是流行的 xctool ——也在四月份發佈——可使工程師(更不說那些持續集成的機器)更加簡單的編譯和測試iOS和Mac項目。web

咱們在十月份舉行的Mobile @ Scale上推出了Rebound,一個Android的物理和動畫庫。Will Bailey在這篇最近的博文中詳細介紹了這個項目,咱們相信對真實世界的物理建模是一個有力的方式,方便在應用中建立天然、可觸的動畫和交互效果。apache

最後,經過發佈另外一個手機工具來結束這一年,還有比這更好的方式嗎?今天咱們很激動的發佈Origami,一個Quartz Composer的工具集,容許設計者更快的編譯和構建手機交互的原型。後端

Web

Web技術也和Facebook相關,包括手機和桌面的客戶端。在前段,咱們開源的重點更多的在於支持在五月份的JSConf上發佈的快速靈活的JavaScript庫React

從那之後,React庫——和社區的熱心者——有了必定的發展。如今在編譯工具上有了大量的集成,服務器端的環境(像nodeRails,和Python)和其餘客戶端的庫——也包括一些備受矚目的外部的部署工具如Khan Academy。團隊維護了一個出色的社區概要博客,包括大量其餘React項目的例子、演示和教程。

總之,咱們也想幫助提升JavaScript語言和web應用的質量。例如,Regenerator,是用來轉換ECMAScript 6的yield語法到現今的瀏覽器的一個轉換器,Huxley,在夏天由Instagram團隊構建的,已經快速成爲web應用中一個很是流行的可視化正則測試工具。

數據

Facebook與開源數據基礎設施(open source data infrastructure)很有淵源,回顧咱們對MySQL, Cassandra,Hadoop,Hive和Hbase所作的貢獻能夠看出這一點。2013年也不例外,僅僅在過去的幾個月裏,咱們就上線了兩個新的旗艦級數據項目。

首先是Presto,一個新的分佈式SQL查詢引擎,被設計用於高性能分析咱們用於運行交互式查詢的300PB數據倉庫。

咱們在夏天的Analytics @ Scale event上公佈了Presto而且在上個月於咱們的blog上對它作了更多介紹。從那之後,咱們激動的看到它被許多像Airbnb和Dropbox這樣的公司採用,而且從許多熱情的社區獲得了貢獻,包括new clientsAnsible playbookdebian packaging

第二個項目是RocksDB,一個很是不同凡響的數據基礎設施(data infrastructure):一個基於LevelDB的嵌入式key-value存儲類庫,而且爲擁有多核CPU和快速閃存的環境作了優化。此外,在它上線的之後幾個月裏,它引發了普遍的興趣,一些偉大的社區已經把它綁定到其餘的語言上。

咱們對數據基礎設施(data infrastructure)的貢獻和支持拓展得很好也已經超過了咱們自己。咱們對Giraph提供了強大的支持,好比,它已經被提升到能夠支持1萬億邊緣的圖形結構。

基礎設施項目

最後,但絕對不是最不重要的,基礎設施項目在咱們對開源項目的貢獻中仍然是最爲重要的一部分。

HHVMthe HipHop Virtual Machine,是目前爲止咱們的項目資產中最爲顯著而且是追隨人數最多的項目,而且獲得了大量的來自PHP生態系統的支持。2013年有近4000次提交,而且在性能和第三方php框架的兼容性上有了長足進步,這對於社區的普遍採用來講是很是重要的。

這個團隊剛剛從封閉中走出來而且在昨天分享了他們最新進度的消息。而且咱們很激動的看到在持續不斷的集成測試以後,VM被集成到Travis CI,而且爲集成到其餘流行的web server加入了FastCGI支持

咱們今年也爲許多其餘的顯著的基礎設施項目工做過。對於咱們本身的項目,包括pfff,咱們的代碼分析工具箱,libPhenom,一個高性能的事件框架,和folly,咱們流行的C++類庫。而且咱們今年爲 MercurialLLVMGNU grep提供了許多顯著的貢獻。

Open Compute項目在2013年繼續壯大,使用new work on networking hardware,新的社區和基礎管理,以及整年衆多的hackathons和討論會。Facebook致力於支持項目建設而且它的目標是開發設計用於全部數據中心技術的開源服務器和數據中心 - 而且讓咱們期待下個月的Open Compute Summit

2013年咱們的開源項目...

當你在使用或者爲一個開源項目作出貢獻時,咱們知道沒有比看到它停滯不前更糟糕的了:bug 沒有被修復,問題沒有解決,pull requests 被忽略。關於 Facebook,咱們的目標是,經過咱們的投資組合,保持強有力的社區參與責任感。

咱們已經採起了具體的措施來達到這個目標。例如:咱們如今鼓勵咱們的工程師團隊在使用或者開發一個開源項目的時候,首選 Github,Bitbucket 或者 Apache 軟件基金會的項目做爲源碼的來源。

咱們有一個新的工具鏈,使 repos 和咱們內部系統同步,同步代碼評審過程,任務跟蹤等等。同時把咱們最近檢測的全部 repos 儀表化,保證他們保持健康的發展:咱們有內部的儀表盤來顯示commits 的數量,pull requests 的數量和每一個團隊 issues 的數量。這給咱們提供了一個早期預警系統,提醒社區中有哪些被咱們無心中忽略了。

同時咱們很自豪的宣佈,咱們正在作的 Bountysource 項目幫咱們社區解決了不少問題,其中包括鼓勵你們參與各類開源項目,獎勵那些參與開源項目的開發者。咱們已經有了一系列的獎勵計劃,包括 HHVM 和 D

就在上個月,咱們宣佈 Facebook Open Academy 已經把開源帶到世界各地大學的計算機科學課程中。

在 2013 年,咱們也同步開始了 "@ Scale" 工程活動的項目,這個項目旨在聚集開發人員討論和分析各類技術大規模實施面臨的挑戰,分享他們的解決方案和相關的開源項目。今年的活動包括 Analytics @Mobile @ 和 Data @ Scale,相關的視頻已經放在了咱們的 Facebook Developers channel。 敬請期待明年更多的 @ Scale 活動。

最後,歡迎訪問咱們新工程的網站 code.facebook.com!咱們儘量讓您更方便的關注咱們全部的活動詳細信息,在blog postseventsvideosacademic publications 和 open source projects 上均可以找到咱們全部的工程項目和活動。訂閱咱們的 Facebook Page 和 open source news 能夠得到更多的更新新聞。

相關文章
相關標籤/搜索