Plaza 新闻汇总

Servo 项目复兴:2023-2024 年回顾与展望

正如许多人所知,Igalia 于 2023 年 1 月接手了 Servo 项目的维护工作。

我们一直在努力使该项目重获新生,本文总结了我们迄今为止取得的成就。

**一些历史背景**

(如果您已经了解 Servo 项目,可以跳过此部分。)

Servo 是 Mozilla 于 2012 年创建的一个实验性浏览器引擎。

从一开始,它就与 Rust 语言一起开发,作为 Mozilla 开发的新语言的展示案例。

Servo 一直致力于成为一个高性能且安全的 Web 渲染引擎,因为这些也是 Rust 语言的主要特性。

多年来,Mozilla 一直是 Servo 开发的主要推动力,三星等其他一些公司也参与了合作。

Servo 的一些组件(如 Stylo 和 WebRender)已于 2017 年被采用并用于 Firefox 版本中,并且至今仍在使用。

2020 年,Mozilla 解散了整个 Servo 团队,该项目转移到了 Linux 基金会。

尽管最初对该项目有一些兴趣,但在 2020 年底,该项目几乎没有任何活跃的工作,2021 年和 2022 年的情况也没有好转。

在那个时候,许多人认为 Servo 项目已被放弃。

**2023 年:Igalia 接手 Servo 的维护**

2023 年发生了变化,Igalia 获得了外部资金来开展 Servo 工作并使项目重新启动。

我们在 Mozilla 时期就有过参与 Servo 开发的经验,并且在其他 Web 渲染引擎方面也有丰富的经验。

为了探索新的市场并培养稳定的社区,Servo 项目于 2023 年 9 月加入了 Linux 基金会欧洲分会,现在是那里最活跃的项目之一。

LF Europe 是一个为 Servo 项目提供支持的组织,并为我们在多个活动中展示 Servo 提供了机会。

在过去的两年里,Igalia 始终有一个由大约五名工程师组成的团队全职致力于 Servo 项目。

我们负责项目的维护、沟通、社区治理以及很大一部分的开发工作。

我们也一直在寻找可能对 Servo 项目感兴趣的新合作伙伴和组织,并可以投入资源或资金来推动项目向前发展。

**成就**

对于像 Servo 这样的项目来说,两年时间并不长,我们对在这个时期取得的成就感到非常自豪。

以下是一些亮点,包括来自 Igalia 和更广泛的 Servo 社区的贡献:

* **维护:**通用项目维护、工具、文档、社区和治理工作。

投入了大量工作来升级 Servo 的依赖项,特别是大型依赖项(SpiderMonkey、Stylo 和 WebRender)。

Servo 的 CI 和工具也得到了改进。

我们现在有一本 Servo 书籍,Servo 社区一直在发展壮大,技术指导委员会 (TSC) 每个月都会定期举行会议。

* **沟通:**项目已经恢复生机,我们希望全世界都知道这一点,因此我们一直在发布每月的博文、每周在社交媒体上更新信息,并在多个活动中进行会议演讲和展台展示。

该项目比以往任何时候都更受欢迎,我们的 GitHub 星标数量一直在增长。

* **布局引擎:**Servo 拥有两个布局引擎:它最初的引擎和一个大约在 2020 年开始的新引擎,新引擎更严格地遵循规范,但还处于非常早期的阶段。

经过一番分析,我们决定使用新的布局引擎并开始在其上实现浮动、表格、Flexbox、字体、从右到左等功能。

我们现在通过了 140 万个子测试(在发布本文时为 1,401,889 个)的 Web 平台测试。

而且,在我们今天运行的测试中,我们的总体通过率已从 2023 年 4 月的 40.8% 上升到 62.0%(+21.2)。📈

* **新平台:**Servo 过去支持 Linux、macOS 和 Windows。

现在仍然如此,但我们还增加了对 Android 和 OpenHarmony 的支持,这有助于我们接触到各种移动设备。📱

* **嵌入式实验:**我们一直在与 Tauri 的开发人员合作,使 Servo 更易于嵌入,并创建了使用 Servo 作为 WRY 中 Web 引擎的第一个原型。

我们的社区也尝试将 Servo 集成到其他项目中,包括 Blitz、Qt WebView 和 Verso。

* **Outreachy:**Outreachy 是一个实习计划,旨在通过开源软件让来自弱势群体的个人进入我们的行业,我们于 2024 年重新加入了该计划。

我们在 5 月份一期的实习生 @eerii 使 DevTools 支持重新回到了 Servo。

当然,不可能概括在这么长的时间里,这么多人共同努力取得这些出色成果的所有工作。

非常感谢所有为该项目做出贡献的人!🙏

**一些数据**

虽然很难列出我们所有的成就,但我们可以看看一些统计数据。

数字总是很难从中得出结论,但我们一直在查看 Servo 主存储库中自 2018 年以来合并的 PR 数量,以了解该项目的发展情况。

* **PR:**合并的 PR 的总数。

我们现在做得比 2018-2019 年多。

* **贡献者:**每月平均贡献者人数。

我们正接近 2018-2019 年的数字,看起来不错。

* **贡献者 ≥ 10:**每月合并超过 10 个 PR 的平均贡献者人数。

在这种情况下,我们已经拥有比 2018-2019 年更多的数字。

为了澄清,这些数字不包括来自机器人的 PR(dependabot 和 Servo WPT Sync)。

我们参与 Outreachy 也产生了显著的影响。

在每个为期一个月的贡献期内,我们都会迎来大量新参与者为项目做出贡献。

今年,我们参加了 5 月份和 12 月份的两期,在 2024 年 3 月和 10 月的统计数据中可以清楚地看到这些贡献期:

无论如何,总的来说,我们认为这些数字证实了该项目已恢复生机,并且社区正在发展壮大并积极参与该项目。

我们对此感到非常高兴。

**捐赠**

今年年初,我们建立了 Servo Open Collective 和 GitHub Sponsors,许多个人和组织自那时起一直向该项目捐款。

我们在 TSC 中透明地决定如何使用这笔资金,到目前为止,我们已将其用于支付项目的基础设施成本,例如自托管运行器以加快 CI 时间。

我们非常感谢所有向该项目捐款的人,到目前为止,来自 500 多位捐赠者的捐款总额超过 24,500 美元。

谢谢!🙏

**关于未来**

Servo 拥有巨大的潜力。

有几件事使它成为一个非常特殊的项目:

* **独立:**Servo 在 Linux 基金会欧洲分会的管理下,采用了开放的治理模式,我们认为这对整个开放 Web 生态系统非常重要。

* **高性能:**Servo 是唯一一个使用并行布局来渲染 Web 内容的 Web 渲染引擎。

尽管 Servo 还没有比其他已投入生产的 Web 引擎快,但我们正在探索利用具有多个内核的现代 CPU 来渲染 Web 内容的新方法。

* **安全:**Servo 使用 Rust 编写,它通过设计避免了许多安全漏洞,例如内存安全错误。

其他类型的无保障性(如并发错误)在 Rust 中也更容易管理。

当然,该项目也面临一些挑战:

* **实验性:**Servo 仍处于实验阶段,还不是一个可投入生产的产品。

我们仍然缺少一些对 Web 内容很重要的功能。

* **竞争:**主要的 Web 渲染引擎背后都有庞大的团队,致力于使它们变得更好、更快、更完整。

赶上它们是一项非常复杂的任务。

* **资金:**对于任何开源项目来说,这都是一个关键问题,Servo 在这一点上也不例外。

我们需要来自公共和私营部门的组织与我们共同努力,并在项目周围培养一个健康的生态系统。

为了以积极的基调结束,我们也有一些关键的机会:

* **单一 Web 应用:**Servo 可能会在嵌入式场景中渲染特定的 Web 应用方面表现出色,其中 HTML 和 CSS 功能是预先知道的。

* **UI 框架:**Rust 生态系统中的 UI 框架可以开始使用 Servo 作为 Web 引擎来渲染其内容。

* **Web 引擎:**Servo 可以成为任何 Rust 应用程序的默认 Web 引擎。

* **Web 浏览器:**将来,我们可以发展到能够开发一个功能齐全的 Web 浏览器。

Servo 的未来,与许多其他开源项目一样,仍然不确定。

我们将看看未来几年会发生什么,但我们希望看到 Servo 项目能够持续发展。

Servo 是一个庞大的项目。

为了维持其生命并取得进步,我们需要持续的资金,其规模必须大于众筹通常所能实现的规模。

如果您有兴趣为该项目做出贡献或赞助特定功能的开发,请联系我们:[email protected] 或 igalia.com/contact。

让我们希望我们可以一起走这条路,并在未来几年继续致力于 Servo 的发展。🤞

PS:特别感谢我的同事 Delan Azabani 校对和编辑这篇博文。🙏

原文地址
2025-01-08 12:21:40