返回开发者新闻

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 工程师探讨各种主题,例如 Meta 的 BPF 网络 hook 概览和用户体验规模化的内核即时修补及其他多种主题。

图上显示 Meta 在 2022 年新发布了 252 项开源项目和资源库。

Meta Linux Kernel 团队采用多种方式支持内核的发展方向,这些方式可改善内核在 Meta 的用途,以及促进庞大社群的良好运行。团队与上游 Linux 内核社群紧密合作,并确保项目的设计以包含上游内核和登陆上游内核为本。

在 Meta Open Source 博客上,Hasher-Matcher-Actioner 共享伙伴案例重点讲述了 MLH Fellowship 得奖者Franklin PhanSamyak Mehta 的工作成果,而且 Meta 继续与 GitHub 和 Major League Hacking 合作以支持该奖学金计划。

Meta 共享伙伴案例系列分享了开发者在为开源代码作出贡献的过程中,达成的成就与遇到的挑战,以及融入社群的最佳实践。探索 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 Platform SDK 和 Unity SharedSpaces 示例制作了《Building Your Multiplayer VR Experience》(打造您的多玩家 VR 体验),还为 Interaction SDKFirst Hand 示例制作了《Building Intuitive Interactions for VR》(构建符合直觉的 VR 互动)教程。

博文《开源之夏:推动虚拟现实向前发展》讲解了 Meta 在 VR 领域的一些最新创新项目,并精选了 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 年向公开 Meta 库提供了 186,210 个项目;当中 159,723 个为内部提供,26,487 个为外部提供。

Meta 开放了 CICERO 中的源代码,CICERO 是首个能在复杂自然语言策略游戏《强权外交》*中取得堪比人类成绩的人工智能体。开发者整合了语言模型和规划及增强学习演算法,使 CICERO 有能力推断玩家的动机并制定相应策略,然后使用语言来达成共识,从而实现共同目标、组成同盟以及协调计划。我们在此处介绍的内容仅为诸多人工智能和开源内容的冰山一角,您可前往 Meta 人工智能博客,查看更多有关人工智能的精彩案例。

探索 Meta AI 在 2022 年取得的其他突破:

*《强权外交》中的一切权利均由孩之宝公司所有。

React 18 及网页或移动设备的其他动态更新

继有新闻指出 Jest 开始转入 OpenJS 基金会后,Jest 29 亦于 8 月发布。该项目在 GitHub 取得的星星总数于 2022 年下半年超过 40,000 颗。对于网页和移动设备,另一个重要时刻就是 React 18 的正式推出,而公开的 React 18 工作组会支持此版本。React 18 内含针对并行呈现的更新,以及其他各种功能和支持 API。查看测试版 React 文档的更新成果及版本,包括特效文档快速入门

在 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 漏洞报告,以及该报告如何引领响应团队编写可利用程序, 成功Hermes 内运行 1993 年版本的《毁灭战士》。另一篇博文则介绍了以 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 的动态更新

开源 C++ 资源库 Velox 于 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 不同网络和数据中心部署了精确时间协议。这种技术让分布式系统中的时钟同步设置变得比以往更加准确和精准。在开放计算项目的协助下,专门支持协议的硬件和软件都开放了源代码,以便业界采用

在 2022 年,Meta 继续在 WhatsApp 和 Messenger 等产品中进行开源工作。代码验证于 3 月开放了源代码,这一浏览器扩展程序能够以可视化形式呈现网页上的代码是否经过篡改或修改,从而使开发者能够保障 WhatsApp 网页版和 Messenger 代码的完整性。

向开源社群致谢

本文仅涵盖了 1,000 多个 Meta 开源项目中的一小部分及其于 2022 年的最新动态更新。如要探索更多这类开源项目,请浏览 Meta Open Source 网站,并在 FacebookInstagramTwitterLinkedIn 上关注我们。在此特别感谢与 Meta 合作处理开源项目的共享伙伴、用户、组织及合作伙伴社群。

在 Meta,我们相信开源能加快世界创新的步伐。我们分享自己的代码、堆栈乃至硬件设计,旨在推动业界发展,同时让其他公司和个人得以使用我们的解决方案,来加快扩大规模及打造出色的产品。

本文是与 Meta 开发者外协推广人员 Dmitry Vinnik、Suraj Subramanian 与 Cami Williams 合作撰写。