正如许多人所知,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 校对和编辑这篇博文。🙏