2013年 Facebook 在開源方面做了哪些工作?
自從 Facebook 的第一行PHP代碼,第一句 MySQL 的 INSERT 語句,開源就已經(jīng)是我們工程哲學(xué)中的一個重要的部分。
現(xiàn)在,我們使用、維護(hù)并為大量的主要項(xiàng)目做出了貢獻(xiàn)——涉及多種領(lǐng)域如手機(jī)工具、大數(shù)據(jù)系統(tǒng)、客戶端的web庫、后端的運(yùn)行庫和基礎(chǔ)架構(gòu),也涉及到開放計(jì)算項(xiàng)目,服務(wù)器和存儲硬件。
2013 是我們開源項(xiàng)目具有重要意義的一年,我們擁有大量令人自豪的新項(xiàng)目,為正常運(yùn)行和維護(hù)它們的更新承諾,和使用它們的充滿活力的社區(qū)一起工作的愿望。僅在我們的Github賬戶上,我們現(xiàn)在已經(jīng)有超過90個倉庫,有超過40,000次的提交,一共被復(fù)制了15,000次。
年末是一個很好的機(jī)會來回顧我們投入精力的一些主要的領(lǐng)域,簡要重述(不是詳細(xì)的!)下我們工作的一些項(xiàng)目列表。
手機(jī)
我們最自豪的開源貢獻(xiàn)常常是我們?yōu)榱私鉀Q在 Facebook 遇到的規(guī)模和性能的挑戰(zhàn)而開發(fā)的一些技術(shù)。
手機(jī)也不例外:Facebook 的手機(jī)應(yīng)用已經(jīng)是我們產(chǎn)品團(tuán)隊(duì)今年的一個重點(diǎn),我們現(xiàn)在也還需要開發(fā)新的兼容性——在這種情況下,那些要迅速開發(fā)、編譯、測試并發(fā)布我們手機(jī)應(yīng)用的需求變得更加的高效。開源我們的工作,正如我們已經(jīng)做的那樣,是很自然的事情,這些工具已經(jīng)成為我們手機(jī)開源作品集的核心。
比如,在四月份,我們發(fā)布了Buck,我們的Android編譯工具。開發(fā)者的效率對我們來說很重要,自然速度是Buck的首要工作:在Facebook,我們發(fā)現(xiàn)它在編譯我們的應(yīng)用時,比 Ant 快了超過兩倍。從一開始,這個項(xiàng)目就越來越強(qiáng)大,并被Android社區(qū)也包括一些有名的Java項(xiàng)目廣泛應(yīng)用。
對于iOS,我們也有類似的瓶頸,發(fā)現(xiàn)我們需要加速和自動化Xcode的手動編譯過程。結(jié)果就是非常流行的 xctool ——也在四月份發(fā)布——可以使工程師(更不說那些持續(xù)集成的機(jī)器)更加簡單的編譯和測試iOS和Mac項(xiàng)目。
我們在十月份舉行的Mobile @ Scale上推出了Rebound,一個Android的物理和動畫庫。Will Bailey在這篇最近的博文中詳細(xì)介紹了這個項(xiàng)目,我們相信對真實(shí)世界的物理建模是一個有力的方式,方便在應(yīng)用中創(chuàng)建自然、可觸的動畫和交互效果。
最后,通過發(fā)布另一個手機(jī)工具來結(jié)束這一年,還有比這更好的方式嗎?今天我們很激動的發(fā)布Origami,一個Quartz Composer的工具集,允許設(shè)計(jì)者更快的編譯和構(gòu)建手機(jī)交互的原型。
Web
Web技術(shù)也和Facebook相關(guān),包括手機(jī)和桌面的客戶端。在前段,我們開源的重點(diǎn)更多的在于支持在五月份的JSConf上發(fā)布的快速靈活的JavaScript庫React。
從那以后,React庫——和社區(qū)的熱心者——有了一定的發(fā)展。現(xiàn)在在編譯工具上有了大量的集成,服務(wù)器端的環(huán)境(像node,Rails,和Python)和其他客戶端的庫——也包括一些備受矚目的外部的部署工具如Khan Academy。團(tuán)隊(duì)維護(hù)了一個出色的社區(qū)概要博客,包括大量其他React項(xiàng)目的例子、演示和教程。
總之,我們也想幫助提高JavaScript語言和web應(yīng)用的質(zhì)量。例如,Regenerator,是用來轉(zhuǎn)換ECMAScript 6的yield語法到現(xiàn)今的瀏覽器的一個轉(zhuǎn)換器,Huxley,在夏天由Instagram團(tuán)隊(duì)構(gòu)建的,已經(jīng)快速成為web應(yīng)用中一個非常流行的可視化正則測試工具。
數(shù)據(jù)
Facebook與開源數(shù)據(jù)基礎(chǔ)設(shè)施(open source data infrastructure)頗有淵源,回顧我們對MySQL, Cassandra,Hadoop,Hive和Hbase所做的貢獻(xiàn)可以看出這一點(diǎn)。2013年也不例外,僅僅在過去的幾個月里,我們就上線了兩個新的旗艦級數(shù)據(jù)項(xiàng)目。
首先是Presto,一個新的分布式SQL查詢引擎,被設(shè)計(jì)用于高性能分析我們用于運(yùn)行交互式查詢的300PB數(shù)據(jù)倉庫。
我們在夏天的Analytics @ Scale event上公布了Presto并且在上個月于我們的blog上對它做了更多介紹。從那以后,我們激動的看到它被許多像Airbnb和Dropbox這樣的公司采用,并且從許多熱情的社區(qū)得到了貢獻(xiàn),包括new clients,Ansible playbook和debian packaging。
第二個項(xiàng)目是RocksDB,一個非常與眾不同的數(shù)據(jù)基礎(chǔ)設(shè)施(data infrastructure):一個基于LevelDB的嵌入式key-value存儲類庫,并且為擁有多核CPU和快速閃存的環(huán)境做了優(yōu)化。此外,在它上線的以后幾個月里,它引起了廣泛的興趣,一些偉大的社區(qū)已經(jīng)把它綁定到其他的語言上。
我們對數(shù)據(jù)基礎(chǔ)設(shè)施(data infrastructure)的貢獻(xiàn)和支持拓展得很好也已經(jīng)超過了我們本身。我們對Giraph提供了強(qiáng)大的支持,比如,它已經(jīng)被提高到可以支持1萬億邊緣的圖形結(jié)構(gòu)。
基礎(chǔ)設(shè)施項(xiàng)目
最后,但絕對不是最不重要的,基礎(chǔ)設(shè)施項(xiàng)目在我們對開源項(xiàng)目的貢獻(xiàn)中仍然是最為重要的一部分。
HHVM,the HipHop Virtual Machine,是目前為止我們的項(xiàng)目資產(chǎn)中最為顯著并且是追隨人數(shù)最多的項(xiàng)目,并且得到了大量的來自PHP生態(tài)系統(tǒng)的支持。2013年有近4000次提交,并且在性能和第三方php框架的兼容性上有了長足進(jìn)步,這對于社區(qū)的廣泛采用來說是非常重要的。
這個團(tuán)隊(duì)剛剛從封閉中走出來并且在昨天分享了他們最新進(jìn)度的消息。并且我們很激動的看到在持續(xù)不斷的集成測試之后,VM被集成到Travis CI,并且為集成到其他流行的web server加入了FastCGI支持。
我們今年也為許多其他的顯著的基礎(chǔ)設(shè)施項(xiàng)目工作過。對于我們自己的項(xiàng)目,包括pfff,我們的代碼分析工具箱,libPhenom,一個高性能的事件框架,和folly,我們流行的C++類庫。并且我們今年為 Mercurial,LLVM和GNU grep提供了許多顯著的貢獻(xiàn)。
Open Compute項(xiàng)目在2013年繼續(xù)壯大,使用new work on networking hardware,新的社區(qū)和基礎(chǔ)管理,以及全年眾多的hackathons和討論會。Facebook致力于支持項(xiàng)目建設(shè)并且它的目標(biāo)是開發(fā)設(shè)計(jì)用于所有數(shù)據(jù)中心技術(shù)的開源服務(wù)器和數(shù)據(jù)中心 - 并且讓我們期待下個月的Open Compute Summit。
2013年我們的開源項(xiàng)目...
當(dāng)你在使用或者為一個開源項(xiàng)目做出貢獻(xiàn)時,我們知道沒有比看到它停滯不前更糟糕的了:bug 沒有被修復(fù),問題沒有解決,pull requests 被忽略。關(guān)于 Facebook,我們的目標(biāo)是,通過我們的投資組合,保持強(qiáng)有力的社區(qū)參與責(zé)任感。
我們已經(jīng)采取了具體的措施來達(dá)到這個目標(biāo)。例如:我們現(xiàn)在鼓勵我們的工程師團(tuán)隊(duì)在使用或者開發(fā)一個開源項(xiàng)目的時候,首選 Github,Bitbucket 或者 Apache 軟件基金會的項(xiàng)目作為源碼的來源。
我們有一個新的工具鏈,使 repos 和我們內(nèi)部系統(tǒng)同步,同步代碼評審過程,任務(wù)跟蹤等等。同時把我們最近檢測的所有 repos 儀表化,保證他們保持健康的發(fā)展:我們有內(nèi)部的儀表盤來顯示commits 的數(shù)量,pull requests 的數(shù)量和每個團(tuán)隊(duì) issues 的數(shù)量。這給我們提供了一個早期預(yù)警系統(tǒng),提醒社區(qū)中有哪些被我們無意中忽略了。
同時我們很自豪的宣布,我們正在做的 Bountysource 項(xiàng)目幫我們社區(qū)解決了很多問題,其中包括鼓勵大家參與各種開源項(xiàng)目,獎勵那些參與開源項(xiàng)目的開發(fā)者。我們已經(jīng)有了一系列的獎勵計(jì)劃,包括 HHVM 和 D。
就在上個月,我們宣布 Facebook Open Academy 已經(jīng)把開源帶到世界各地大學(xué)的計(jì)算機(jī)科學(xué)課程中。
在 2013 年,我們也同步開始了 "@ Scale" 工程活動的項(xiàng)目,這個項(xiàng)目旨在匯集開發(fā)人員討論和分析各種技術(shù)大規(guī)模實(shí)施面臨的挑戰(zhàn),分享他們的解決方案和相關(guān)的開源項(xiàng)目。今年的活動包括 Analytics @, Mobile @ 和 Data @ Scale,相關(guān)的視頻已經(jīng)放在了我們的 Facebook Developers channel。 敬請期待明年更多的 @ Scale 活動。
最后,歡迎訪問我們新工程的網(wǎng)站 code.facebook.com!我們盡可能讓您更方便的關(guān)注我們所有的活動詳細(xì)信息,在blog posts, events, videos, academic publications 和 open source projects 上都可以找到我們所有的工程項(xiàng)目和活動。訂閱我們的 Facebook Page 和 open source news 可以獲得更多的更新新聞。
...以及未來
Facebook 的著名格言:我們的開源項(xiàng)目仍然是只完成了1%。
通過上面提及的所有主題,我們知道還有很多方面需要我們繼續(xù)努力。我們很慶幸在我們眾多的項(xiàng)目中有強(qiáng)大而熱情的社區(qū)支持,給予我們強(qiáng)烈的責(zé)任感和動力。
不管你們是在移動端,web,數(shù)據(jù)亦或是基礎(chǔ)設(shè)施社區(qū),我們都很期待能繼續(xù)與你們合作,2014年再見!