返回開發人員最新消息

Meta Open Source:2022 年度回顧

2023年1月17日發佈者:Philip Bell

在過去這一年,世界各地很多人都重新與別人建立聯繫以及參與社群互動。Meta 的開放原始碼工作亦有同一番景象,各個協作者、用戶和機構攜手合作,進一步發揮開放原始碼的影響力。

Meta 開放予大眾使用的專案滿足了開發人員的需要,並協助他們克服各種挑戰,包括支援新一代人工智能,以及建構創新且方便用戶的網頁應用程式和體驗。與此同時,開放原始碼社群提供一個渠道讓大家分享技術,令相關人員得以透過協作形式採用這些技術來構建不同事物。

本文會探索 Meta Open Source 在 2022 年的亮眼成果,以及 Meta 如何在這一年協助建立開放原始碼社群。文中亦會涵蓋 Meta 及其工程師所分享的工具和程式碼方面有何最新消息,包括 PyTorch 的重大開發成果、React 18 的發佈,以及推出 Sapling 的原始碼控制用戶端等。

探索以下部分:

轉入基金會:提高開放度、增加協作和擴展接觸範圍

多元化的觀點和貢獻能加強開放原始碼的力量,而 Meta 積極尋求不同的機會,透過與現有不同的基金會合作來達成各種共同目標。在過去這一年,若干 Meta 專案已轉交基金會處理,務求令到這些專案提供的開放原始碼資源變得更大眾化,以及進一步擴展管理體系。

透過新成立的 PyTorch 基金會,PyTorch 人工智能框架於 9 月加入了 Linux 基金會。這個成員包括各業界領袖的委員會旨在於未來逐步拓展規模,並會負責管理外展工作,以及相關技術的業務和產品營銷。

圖像顯示,直至 2022 年,Meta 有 1,034 項進行中而未封箱結案的開放原始碼專案。

Jest 於過去這一年開始轉入 OpenJS 基金會。這個開放原始碼專案是其中一個最廣為使用的 JavaScript 測試框架,而 OpenJS 基金會的目標包括令到這個專案更方便新用戶取用,以及開發新功能。

Meta 向各個基金會捐贈了不同開放原始碼專案,並致力進一步推動這些專案的創新發展。在 2022 年,Meta 與 Presto 基金會加強協作,升級至基金會最高級別的會籍等級。Meta 亦贊助了 PrestoCon Day 活動和此基金會的首個實體大會 PrestoCon

透過開放原始碼外展工作提升影響力

Meta Open Source 團隊成員於 2022 年 10 月齊聚 All Things Open 大會拍攝大合照。

說明文字:Meta 開發人員大使和其他 Meta Open Source 團隊成員於去年 10 月出席 All Things Open 大會。

Meta 開發人員大使和工程師在整年間四出搜索各種能帶來影響的外展機會,並且一邊就著 Meta 所推出的開放原始碼專案分享知識,一邊向社群中的不同專家和機構學習。

探索由 Meta 開發人員大使製作的內容:

開發人員大使和 Meta Open Source 團隊成員代表 Meta Open Source,出席了第 10 屆 All Things Open 大會。在這項活動開始前,工程部門總監 Killian Murphy 分享了自己的想法,說明 Meta 如何使盡渾身解數為開放原始碼貢獻者消除障礙,務求令所有人都能夠使用開放原始碼。Meta 致力訂立高標準,以歡迎任何想使用 Meta 已開放原始碼的技術及為這些技術作出貢獻的人士加入其中。

圖像上寫著:「目前的開放原始碼社群規模為歷來最大。Meta 亦抱持樂觀態度,相信開放原始碼有潛力變得更為包容,繼而進一步協助大家實現各項事情。」工程部門總監 Killian Murphy

Meta Open Source 團隊亦在 All Things Open 大會擺設了攤檔,以提高 Meta 各專案的知名度,並且與有在不同研究及各行各業使用相關技術的開發人員交流。開發人員大使和工程師也有在活動上發言。

探索開發人員大使團隊在 2022 年 All Things Open 大會上的發言:

Meta Linux Kernel 團隊的網誌文章中重點介紹了團隊正在進行的研究和開發項目。其文中亦講解了如何加入 Linux 社群。而更上一級的 Meta Kernel 團隊派出了 11 位成員在 2022 年 Linux Plumbers Conference 大會上演講。您可在活動網站上找到完整的演講清單。此團隊亦推出了 Meet the Developers 系列,邀請曾出席大會的幾位 Meta 工程師探討各種主題,例如 BPF 網絡 hook 的總覽和 Meta 用戶體驗大規模即時修補核心及其他多種主題。

圖像顯示 Meta 在 2022 年發佈了 252 項全新開放原始碼專案和儲存庫。

Meta Linux Kernel 團隊以各種方式支援核心的發展方向,以改善內核在 Meta 的用途,以及提升整體社群的健全狀況。團隊與上游 Linux 核心社群緊密合作,並確保專案的設計以包容上游和登陸上游核心為本。

Meta Open Source 網誌上的 Hasher-Matcher-Actioner Contributor’s Story 重點講述了 MLH Fellowship 實習獎學金得獎者Franklin PhanSamyak Mehta 的工作成果,而 Meta 會繼續與 GitHub 和 Major League Hacking 合作支持此實習獎學金計劃。

Meta Contributor’s Story 系列分享了為開放原始碼作出貢獻的成就與挑戰,以及有助融入社群的最佳操作實例。探索 2022 年的網誌文章:

在開放原始碼社群蓄力推動 VR/AR 的發展

元宇宙旨在建立一個理想之地,讓用戶在此相聚並以全新且創新的方式互相互動。我們需要依靠強大社群的基礎,同時融入多元化意念,方可建立出讓所有人都能好好享受的元宇宙。

開放原始碼社群本身就秉持著「共同建設」的思維模式,因此理所當然地適合作為元宇宙的起點,以協助引領各種將會塑造出元宇宙的重要對話,而開發人員大使也有在對話中分享內容。Navyata Bawa 在 6 月於 Global Women in Tech Network Conference 大會延續《Fostering Inclusivity in VR》(促進 VR 中的包容性)系列,在當中探索了開發人員可以如何在持續發展更多 VR/AR 項目之餘,亦於建構 VR 應用程式時考慮無障礙使用體驗和包容性。

在 Stack Overflow Podcast 的《Here’s what it’s like to develop VR at Meta》(在 Meta 開發 VR 的體驗)這一集當中,開發人員大使經理 Cami Williams 分享了 Reality Labs 可怎樣向 React 社群學習並建立起兩者之間的關係,同時亦提出了一些有助著手開發 VR 的工具和資源。

圖像上寫著:「我們要從內部營造多元文化。不僅單靠用戶與測試玩家,而同時要在開發人員之間做起。只有這樣,我們方可從這些多元化的現實經歷中學習,繼而設計出可準確地代表與顧及廣大受眾的應用程式。」Reality Labs 開發人員大使,Navyata Bawa

Meta 致力更積極投放資源到社群中,以及提供各種工具以利 VR 生態系統內的創作,並因此在 GitHub 發佈了 Quest 示範個案範例。為協助宣傳這些工具,Bawa 為 Oculus 平台 SDK 和 Unity SharedSpaces 範例製作了《Building Your Multiplayer VR Experience》(打造您的多玩家 VR 體驗)系列,以及為 Interaction SDKFirst Hand 範例製作了《Building Intuitive Interactions for VR》(建構直觀的 VR 互動)教學導覽。

《Summer of Open Source: Moving Virtual Reality Forward》(開放原始碼之夏:推動虛擬實境發展)這篇網誌文章講解 Meta 在虛擬實境領域的一些最新創新項目,並且推介了 The Diff 第 14 集與軟件工程師 Eric Le Saux 的訪談。查閱 AR 和 VR 影片播放清單,找出更多與此領域有關的教學導覽、資源及近期與 Meta 開發人員的對談內容。

人工智能/機器學習的進展

對於 PyTorch 和旨在協助研究人員及創作者等所有人一臂之力的 Meta AI 新模型來說,2022 年是重大的一年。以下一些例子說明 Meta 透過哪些方式來促進人工智能模型在訓練、優化及部署方面的發展。

PyTorch 更新項目

獲轉入隸屬於 Linux 基金會的 PyTorch 基金會後,PyTorch 2.0 在 12 月於美國新奧爾良舉行的 PyTorch Conference 大會隆重登場。在大會中分享的數據反映出 PyTorch 及其社群在 2022 年取有著顯著的增長發展:63% 的人工智能研究執行項目都選用了 PyTorch。根據 GitHub 的資料,使用 PyTorch 的 GitHub 儲存庫數量比去年提升了 45%。

PyTorch 2.0 結合了多年來的研究成果以改善其編譯器效能,同時保留用戶熟知和喜愛的 PyTorch 體驗。其更新項目包括透過 torch.compile 提供單行加速功能、百分百回溯相容性,以及全 Python 編譯器。

探索更多由 Meta 開發人員大使和貢獻者準備的 2022 年 PyTorch 內容:

Meta AI 模型創下新的里程碑

模型訓練和優化框架有助建立各種人工智能模型,這些模型可配合真人的技能,以互相補足的方式完成現實世界的任務。這樣的互惠互利在語言翻譯領域中可見一斑。在這類任務中,人工智能模型能夠學習數百種語言,即使是只有極少數人使用的語言亦不例外。在 2022 年,Meta AI 推出了 No Language Left Behind 人工智能模型。這個模型能翻譯 200 種不同語言,翻譯成品的水準無出其右,並設有評估資料集及相應的開放原始碼。這些開放原始碼研發成果有助改進各種模型,協助翻譯重要文件及避免低資源語言消失。

圖像顯示大眾在 2022 年提供了 186,210 個項目到公開的 Meta 儲存庫;當中 159,723 個是由內部提供,26,487 個由外部提供。

CICERO 由 Meta 開放原始碼,是首個能在複雜自然語言策略遊戲《強權外交》(Diplomacy)* 中取得人類水平成績的人工智能代理。開發人員整合了語言模型以及規劃和鞏固策略方面的學習演算法,使 CICERO 有能力推斷玩家的動機並制定相應策略,然後使用語言來達成共識,從而實現共同目標、組成同盟以及協調計劃。有關人工智能和開放原始碼的其他多項事跡未能在此盡述,歡迎前往 Meta 人工智能網誌以查看更多有關人工智能的精彩故事。

探索 Meta AI 在 2022 年取得的其他進展:

*《強權外交》中的一切權利均由孩之寶公司所擁有。

React 18 以及網頁或流動平台的其他更新項目

繼有消息指出 Jest 開始轉入 OpenJS 基金會後,Jest 29 亦於 8 月發佈。此專案在 GitHub 取得的星星總數於 2022 年下半年超越 40,000 粒。除此之外,網頁和流動平台範疇的另一個重大時刻,就是在公開的 React 18 Working Group 支援下 React 18 正式推出。這包括並行呈現的更新項目,以及其他各種功能和支援 API。歡迎查閱 React Docs 測試版的更新成果及發佈版本,包括當中的效果文件快速入門資源。

在 9 月,Meta 的 React Technologies 團隊加入了 React Native Core Contributor Summit 高峰會的核心貢獻者和資料庫維護者行列。高峰會的討論環節探索了 React Native 和 Metro 現有和未來的生態系統,而各位出席者也訂立了不同的積極計劃以改善 React Native 的生態系統。

圖像顯示,Meta 開放原始碼專案在 2022 年一共有 7,353 位貢獻者;當中分別有 3,727 位內部貢獻者和 3,626 位外部貢獻者。

在 Meta 為網頁和流動平台開放原始碼的其他專案中,Js-flipper 這個 NPM 套件可以讓 Flipper 用戶端接觸 JavaScript 應用程式,方便開發人員輕鬆建立新的 Flipper 附加程式或重用現有附加程式;而另一個專案 MemLab 則提供 JavaScript 記憶體測試,有助設定自動化的記憶體流失偵測程序。

最後,Meta 開發人員提出了自己的洞見,分享他們如何運用開放原始碼的網頁和流動平台技術來建構事物,以及為這些技術建設不同東西。有一篇網誌文章調查了 Hermes 錯誤報告,以及該報告如何使應變團隊決定將某項入侵程式編程,並以此運行 1993 年版本的 《毀滅戰士》(Doom) ,而且就是在 Hermes 內運行此遊戲。另一篇網誌文章則介紹了以 Chromium 為基礎的全新網頁檢視功能,其為 Android 版 Facebook 應用程式內瀏覽器用戶帶來了更出色的體驗。

探索 Meet the Developers: Mobile Edition 系列:

開發人員工具:原始碼控制、文件工具及其他進展

Meta 開發人員使用在公司建構的開放原始碼工具來支援其基礎架構。在 Meta,這些工具經常於日常工作中接受測試並經過改良,繼而製作出能應對規模和速度方面之獨特挑戰的開放原始碼專案。

Sapling 團隊在 2022 年推出了與 Git 相容的全新原始碼控制用戶端。Sapling 這個原始碼控制系統兼顧了實用性和規模,而且旨在分享 Meta 開發人員在超過 10 年間調整和改進的內容,從而啟發其他人更深入鑽研此領域的工作,並向開發人員展示原始碼控制系統的潛在未來。Docusaurus 2.0 於 8 月推出,這款效能強勁的靜態網站產生器延伸了其使用 React 的方式,並將網站支援範圍擴展至文件以外。

圖像上寫著:「在 2022 年,Meta Open Source 於 GitHub 獲得了另外 133,854 粒星星,目前贈送星星的總用戶人數已達 1,563,562 位。」

專案的其他更新項目包括全新的 Android 版死結偵測工具、新增了 Cinder 惰性匯入功能,以及新一代 OpenStreetMap 編輯器 RapiD 2.0 的預覽。另一個專案 Hermit 則推出了實用的確定性作業系統,讓開發人員能夠解決不穩定結果測試等問題,以及控制隱性輸入,例如線程排程和產生隨機數字等。

其中一篇內容較為廣泛的已發佈文章分享了各種 Meta 開發人員工具如何互相配合,在開發人員的工作流程中發揮作用,而當中有很多工具都開放了原始碼。這包括 Buck 組建系統等專案、SuperConsole、EdenFS(與 Sapling 緊密整合的檔案系統)、Jest 測試工具框架及其他工具。

探索講解 2022 年開發人員工具的其他文章和發佈內容

資料:Velox、Presto 和 RocksDB 的更新項目

Velox 這個開放原始碼 C++ 資料庫於 2022 年 8 月宣佈推出,為數據引擎的能源節省及效能提升方面帶來前所未有的變革。此資料庫使用原生執行操作,而且目前與多種 Meta 工具整合,變成統一的執行引擎層。

Velox 經過精心設計,能大幅減少程式碼維護次數,並且在各種使用案例中能將效能提升 2 倍至 10 倍。歡迎參閱於 VLDB 2022 發佈的論文《Velox: Meta’s Unified Execution Engine》(Velox:Meta 的統一執行引擎),了解 Velox 日漸擴大的社群,看看其如何創新地重構大數據引擎和數據庫執行資料查詢的方式。

單單在去年,GitHub 上的 Presto 開放原始碼專案就有 21 個發佈版本、獲得了接近 2,000 粒新星星,並有 600 份新的專案副本和 152 位新貢獻者。Presto 基金會在美國加州山景城的電腦歷史博物館舉行了其首個實體活動 PrestoCon。在活動中,Tim Meehan 以技術指導委員會主席身分作出主題演講,並由 Philip Bell 公佈 Presto 來年的發展方向。

在 12 月,RocksDB 團隊重新開始於 Meta 的門洛公園總部舉行年度實體見面會,讓 Meta 工程師和外部協作者聚首一堂,討論各種使用案例、最新的創新項目及對於專案的抱負。

安全性和硬件

安全性和硬件在支援開發人員的工作方面發揮著重要作用。從除錯工具到網絡硬件,Meta 的開放原始碼都有助確保各個系統和程式碼強健、安全而且可靠。

在 2022 年較早時候,有篇貢獻者故事分享了 Pysa 的工作,其中 Pysa 是 Pyre-check 專案下的 Python 靜態分析工具。這則故事重點講述了建設健全的開放原始碼社群如何直接左右 Pysa 等專案的成功;而在這則故事中,程式碼的安全性就是因此而提升。

在硬件方面,我們於 Meta 不同的網絡和資料中心部署了精確時間協定。這種技術讓分散式系統中的時鐘同步設定變得比以往更加準確和精準。在與 Open Compute Project 的合作下,我們就專門支援此協定的硬件和軟件都開放了原始碼,以方便業界採用

在 2022 年,Meta 繼續於 WhatsApp 和 Messenger 等產品進行開放原始碼的工作。其中於 3 月開放了原始碼的程式碼驗證是一款瀏覽器擴充套件,能夠以圖像形式呈現出網頁上的程式碼是否經過竄改或改動,有助開發人員保障 WhatsApp 網頁版和 Messenger 程式碼的完整性。

向開放原始碼社群致謝

在 1,000 多個的 Meta 開放原始碼專案及其於 2022 年的最新動向中,這篇文章只是涵蓋了當中的一小部分。如要探索更多這類開放原始碼專案,請瀏覽 Meta 開放原始碼網站,以及在 FacebookInstagramTwitterLinkedIn 追蹤我們。在此特別鳴謝與 Meta 協作處理開放原始碼專案的貢獻者、用戶、機構及合作夥伴社群。

在 Meta,我們相信開放原始碼能加快世界創新的步伐。我們分享自己的程式碼、堆疊甚至是硬件設計,目標在於推動業界發展,同時讓其他公司和人士有機會使用我們的解決方案,來加快擴大其規模及建構出色的產品。

此文章是與 Meta 開發人員大使 Dmitry Vinnik、Suraj Subramanian 與 Cami Williams 合作撰寫。