Meta 发布 2021 年开源回顾:专注 Rust 语言,一年启动 231 个新项目(rust应用框架)
过去的一年充满了挑战和机遇。这一年中我们坚定地追求着我们的使命,即通过开源技术赋能多元化社区。我们启动了许多令人兴奋的项目,并收到了来自全球开发人员的贡献,推动开源生态系统的发展。在这篇文章中,我们想就 Meta 在 2021 年取得的一些成就和贡献做出感谢并重点介绍一番——如果没有开源社区的支持,这些成就和贡献是不可能实现的。
我们将总结一些关键指标,并详细说明我们的基金会和合作伙伴在过去一年中的工作重点。我们将通过 Meta 开源社交媒体渠道来回顾我们的社区参与情况。最后,我们将按技术领域对我们的开源产品组合做分类,例如开发工具和编程语言、数据和基础设施、移动、Web 和 AI/ML,从而分享我们的产品组合发展状况的快照视图。
Meta 开源成就的数字总结
截至 2021 年底,我们有 837 个活跃的公共项目。在扣除已归档的非活动项目或捐赠给基金会的项目后,这一年总共启动了 231 个新项目。
在过去的一年中,我们还看到了对我们公共项目的 165,163 次提交。这个数字比 2020 年增加了近 20%。在这些提交中,有 23,938 次提交是由未受雇于 Meta 公司的社区成员做出的。Meta 员工做出了剩下的 141,225 次。
我们在 GitHub 上的项目又积累了 133,854 颗星,总数达到 140 万。社区对 Meta 开源项目表现出越来越浓厚的兴趣和热情。
Meta 开源项目都是由像你们这样的开发人员所做的贡献支撑起来的。拉取请求、会议讨论、文档反馈、Facebook 帖子以及其他各种事物,加在一起让我们的项目变得更加美好,并加强了我们社区中的联系。
基金会与合作伙伴
我们相信开源让开发人员以独特的方式在一起努力工作,使我们能够实现共同的目标。我们的使命是通过开源技术赋能多元化社区,我们一直在寻找机会参与能够推进这一使命的基金会和合作伙伴关系。
2021 年初,我们宣布以最高成员级别的身份支持 Rust 基金会,以维持和发展 Rust 开源生态系统和社区。作为基金会的一部分,我们与其他成员合作发布了用于 Rust 语言开发的一系列云计算资源。我们的支持让这一项目持续前进,同时减少了构建和测试语言更改和更新所花费的时间。
我们还领导资助了开放Web文档。我们加入了他们的管理和指导委员会,通过维护良好的 Web 文档来塑造项目并带来社会和经济效益。在我们的赞助帮助下,他们得以招聘全职的开放 Web 文档技术写作人员;我们的支持也让 web 平台文档的未来更加清晰,在 WebXR 上增加了 131 个新页面。
除了这些新的合作伙伴关系,我们也在继续与之前合作的基金会携手共进。作为 Presto基金会的成员(这是我们捐赠给 Linux 基金会的一个项目),我们帮助组织了 PrestoCon 专属日活动,这是将 Presto 社区聚集在一起的一项突出成果。活动结束后,基金会在其 YouTube频道上分享了会谈录音。
作为 Linux 基金会的活跃成员,我们参与的伙伴关系远不止于 Presto。2021 年,Meta 是内核目录的最大贡献者,Meta 开发人员提交了所有更改的 17.6%。我们还将我们的一个名为Ent的开源项目(Go 的一个实体框架)转移到 Linux 基金会下,以帮助其开发工作,并培养使用它的开发人员和公司社区。
2021 年初,我们还与 Linux 基金会合作,为构建可扩展运营商级网络的平台 Magma 建立了行业合作关系,以帮助加速无线网络的部署并提供创新的下一代服务;我们还启动了 Magma Core基金会,其拥有超过 20 名成员。2021 年晚些时候,我们与几家公司合作启动了 eBPF基金会,以帮助重新定义网络连接、安全性、跟踪和可观察性。
社区
开源是被社区定义的。我们希望我们的每个项目都能发展出自己的社区,同时成为欢迎所有人加入的空间。我们以前所未有的丰富途径来分享了我们的开发者计划。
2021 年,我们继续与 Major League Hacking 在 MLH 奖学金计划上合作,该计划旨在托管、指导和支持开发者在开源项目上测试黑客攻击手段。我们相信,投资开源是一种赋能开发人员并使社区更加多样化的方式。为了凸显和分享 MLH 研究员的成功故事,我们发布了一个贡献者故事博客系列。我们将继续在开源博客上分享其他具有类似内容的帖子,希望这能鼓励人们为开源做出贡献,并成为我们不断发展的社区的一部分。
尽管 2021 年的大多数会议和活动都是以虚拟形式举办的,但我们不想错过与社区对话的机会。我们做了几次演讲,鼓励所有人使用开源、为开源做出贡献,并共同努力帮助所有人更轻松地构建伟大的产品。我们介绍了很多故事,诸如“五个项目的故事:对Facebook开源背后动机的反思”“React Native上手:从零到大师”等等。
这一年结束时,我们重新推出了播客“the Diff”,添加了一个视频组件以吸引更多观众。在最新一集中,我们采访了 Meta 开源项目工程经理 Paul O'Shannessy,探讨了大规模启动和管理开源项目的主题。
我们还参加了与 Major League Hacking(MLH)研究员和F8 Refresh Hackathon合作的问答环节。我们分享了很多最佳实践并讨论了一些与踏上开源旅程相关的细节。我们还继续制作了 ELI5(5 岁孩子也能听懂)系列,让社区以易于理解和使用的方式访问一整套主题。
为了继续现代化我们与社区分享项目的方式,我们于 2021 年 6 月推出了一个新网站,该网站由Docusaurus、React和Jest等元开源项目构建。
我们希望这能引导当前和未来的社区成员踏上激动人心的旅程。
Meta 开源产品组合一览
在介绍了有关 Meta 开源、我们的外部合作关系和社区参与的一些指标之后,我们想重点介绍一下我们开源产品组合的各个部分。本节将介绍我们在开发工具、编程语言、数据/基础设施、AR/VR、移动/Web 和 AI/ML 等不同领域的开源贡献。
开发工具
在 Meta,我们希望让工程师变得更有效率和生产力。达成这一目标的一种手段是开发人员生产力工具,我们很乐意与开发人员公开分享这些工具。
最近,我们展望了我们的旗舰构建产品 Buck 的未来。这是一个开源系统,可以使用超过 15 种语言,针对从移动设备到 Web 服务再到 VR 耳机的不同平台做构建。Buck 的下一个版本正在从头开始重构,在其整个技术栈中使用 Rust 来提供非常高的性能并加入扩展能力。下一版 Buck 的多个组件已经开源,其中包括Rust-Starlark和Gazebo,我们预计 2022 年将有更多组件开源。
我们发布了开源文档基础设施工具的下一个版本,Docusaurus 2。该工具于 2021 年进入正式测试版阶段,即将全面发布。
开发工具的世界广阔而辽远。2021 年,我们发布了一个名为 Winterfell 的项目,该项目向所有开发人员提供了密码计算正确性的证明,让开发人员不再需要专业知识和技能来完成这一需求。此后不久,我们开源了一个名为“Below”的工具,它可以“穿越”时间,帮助团队查看和记录历史 Linux 系统数据。
我们相信,对开源项目进行实战测试的最佳方式是在生产环境中使用它。所以我们使用静态分析工具Infer,在编译时捕获争用条件和其他性能故障来帮助重构了 Facebook Lite。
编程语言
Meta 没有一种默认的编程语言。从 Swift 和 Java 等第三方语言,到自主开发的语言 Hack 和 Flow,我们的工程师只会使用最适合他们手头工作的编程语言。
例如,我们发布了HsThrift,将 Thrift 用于与结构化数据通信的简单、与语言无关的协议的优势带到了 Haskell。我们还在 C 开发的库Folly中发布了关于异步堆栈跟踪的一个完整系列,并使用Cinder(Instagram 内部基于 CPython 3.8 开发的以性能为优先的生产版本)帮助 Python 成为一种更高效和高性能的语言。
2021 年,开源团队将大部分精力集中在了一种语言上:Rust。
Rust 正迅速成为Meta和整个开发社区的最爱。我们甚至组建了一个专门的 Rust 团队来发展 Meta 内部的 Rust 开发氛围,鼓励对 Rust 和基于 Rust 的项目的开源贡献,并提高对 Rust 社区的参与度。我们推出了两个系列来展示在 Meta 中使用 Rust 的案例:Meet the Rustaceans分享我们的开发人员在日常工作中使用 Rust 的故事,以及Rust Nibbles,以片段的形式深入探讨特定主题或项目。“对Gazebo的探索”是 Rust Nibbles 系列中的第一个案例。
数据和基础设施
我们有着如此广泛的服务和庞大的用户群,所以规模是我们应对的最大挑战之一。鉴于我们的使命,我们乐意与开源社区分享我们在数据处理和基础设施方面的创新成果。
2021 年 9 月上旬,我们开源了一个用于 Web 规模服务的缓存引擎,称为CacheLib。我们与 Twitter、卡内基梅隆大学、英特尔和其他许多合作伙伴密切合作创建的这个项目,旨在帮助工程团队在众多用例中构建和扩展高性能服务。我们还发布了一个名为CacheBench的新基准测试,让团队可以客观地评估各种生产负载的缓存性能。
在 Meta,我们正在尝试解决许多当代组织正在解决的一些问题,包括与时间和数据相关的问题。我们构建并公开了一个开放计算时间设备,它在现代计时基础设施中发挥着重要作用,使其更加安全、成本更低。
除了这个硬件项目,我们还开源了一个名为Kats的新库,用于分析时间序列数据。该项目是首创的综合性 Python 库,可让用户使用很多经典和高级技术探索时间序列。这种类型的数据对于异常检测、特征提取和分析至关重要,这些工作是电子商务、医药和供应链管理等许多行业的基础部分。
增强现实/虚拟现实
Meta 扩大了在 AR/VR 工作方面的社区影响力。作为该计划的一部分,我们最近推出了共享空间,这是一组 Oculus 多人游戏展示示例,展示了虚幻和 Unity 引擎中的基本多人游戏功能。其中包括 Oculus 社交 API、Oculus 平台身份验证、Photon Realtime、带有 Oculus Spatializer 的 Photon Voice 等等。这个 2021 年的 Connect讲座解释了如何使用这些示例为 Quest 构建和发展多人游戏应用。
在 2021 年 GlobalXR大会上,开发者倡导者 Navyata Bawa 代表 Meta,发表了活动闭幕主题演讲“促进 VR 中的包容性”。演讲涵盖了各种主题,包括发展开放和包容的社区、通用设计、Oculus 虚拟现实检查等。
移动和 Web
我们的一系列应用程序(如 Instagram、Facebook 应用、Oculus 等)共同推动了前端技术的进步,我们很高兴与开源社区分享这些技术。
我们开源了Mariana Trench,该工具可让用户深入分析 Android 和 Java 应用的安全性。考虑到我们 Meta 的开发人员正在处理的数百万行代码,我们需要充分利用自动化来扩展我们的安全测试。我们构建了很多复杂的系统,使我们的安全工程师能够自动审查代码并检测潜在问题,从而摆脱纯手工代码审查流程。我们很高兴看到开源社区发现了 Mariana Trench 的价值,这帮助我们的一些工程师赢得了 2021 年 IEEE 计算机协会网络安全奖。
React Native 正在不断提高移动开发的水平,无论是在 Meta 还是业内其他地方都是如此。8 月下旬,我们发布了 React Native 的多平台愿景,将这一框架引入桌面和虚拟现实平台。团队分享了将 Messenger for Desktop 等应用扩展到新平台的计划,这些应用现在可在 Windows 和 macOS 上使用。React Native 还宣布与 Reality Labs 建立了更密切的合作伙伴关系,以将这一框架引入 VR。
React 社区继续在分享我们在 React 生态系统中的更新,这对于开发和采用新版本的 React 来说非常重要。2021 年初,我们创建了一个公共工作组来帮助开发 React 18,它具有并发支持、自动批处理以减少渲染、用于 Suspense 的服务端渲染等特性。我们还与社区进一步互动,并在ReactConf 2021上分享了社区所做的一些出色工作。我们推出了一个新的 React Docs网站,其设计着重考虑学习体验,以帮助人们更高效地学习 React。
我们还推出了一个新的 React Labs 视频系列来分享 React 团队正在进行的研究和开发内容。作为本系列的一部分,我们就 React 服务器组件和 React 18 的更新进行了几次问答交流。
为了进一步发展 Web 工具链,我们对 Relay 进行了重大改进,这是一个用于在 React 应用程序中获取和管理 GraphQL 数据的 JavaScript 框架。2021 年 3 月,我们推出了 Relay Hooks,这是一种使用React Hooks构建的新的、对开发人员更友好的 Relay API。Relay 的最新迭代旨在显著改善开发体验,具有更好的类型安全性和更大的覆盖范围,并避免了像重获取查询这样容易出错的任务。
人工智能/机器学习
近年来,开放数据集和基准测试一直是人工智能取得进展的关键驱动力。为了促进全球更多语种的开放和协作研究,Meta AI 发布了用于多语言语音研究的数据集、两个用于会话AI语义解析的数据集和用于 AI 翻译的最广泛的多语言语音语料库。
去年,Meta AI 研究人员超越了文本,直接在原始、未注释的音频信号上训练 NLP 模型,使 AI 更具包容性并能够对更广泛的语言进行建模。Meta AI 还拥有开源的Blender Bot 2.0,它可以记住数周和数月的对话,并在回复人们的问题和评论时生成上下文互联网搜索查询。
我们还分享了关于如何教导人工智能通过我们的眼睛(和视角),而不是旁观视角来感知世界的新研究成果,以帮助机器人理解触摸行为;用于训练家庭助理机器人的模拟器是另一个分享成果。
令人兴奋的是,所有这些前沿研究都由流行的开源机器学习库 PyTorch 提供支持。作为 PyTorch 的最大贡献者,Meta 正在继续发展该项目,近 400 名贡献者在去年推出了两个新的 PyTorch 版本(1.8、1.9 和 1.10),改进了对分布式训练、科学计算、边缘计算和推理性能的支持。
为了与开源受众互动,PyTorch 团队举办了生态系统日和开发者日,以让社区成员在线会面、参与机器学习前沿的技术会谈、深入研究 ML 项目并讨论 PyTorch 的最新与最好用的成果。由 Suraj Subramanian 领导的 PyTorch Developer Advocate 团队还推出了 PyTorch Community Voices,这是 YouTube 上的每周实时聊天节目。这个新系列重点介绍外部贡献者,展示了他们基于 PyTorch 的项目,并分享了他们使用 AI 来解决各种问题(包括医疗成像、时间序列的深度学习)和提高开发人员生产力的库。
我们 Meta 开源团队相信开源加速了世界创新的步伐。通过与他人分享我们的研究、代码和设计,我们正在推动行业向前发展,同时帮助其他公司和个人更快地扩展规模并构建出色的产品。
原文链接:https://developers.facebook.com/blog/post/2022/01/24/open-source-2021-year-in-review