“拥有”一个开源项目意味着什么?随着 browser-compat-data 项目(“BCD”),MDN(Mozilla 开发者网络)社区和我最近有机会找到了答案。
在 2017 年,MDN Web 文档团队邀请我参与一个被描述为规模较小但不断增长的项目(之前在 Hacks 上)。这个小项目有一个宏大的目标:提供关于不同浏览器支持哪些 Web 平台功能的详细可靠的结构化数据。听起来很雄心勃勃,但我的部分很窄:将 MDN 上手写的 HTML 兼容性表格转换为结构化的 JSON 数据。
作为一名技术作家和顾问,这是一个不寻常的项目。通常,我会查看数据和代码,并使用它们为人们撰写文字。对于 BCD,我从相反的方向工作:阅读人们写的东西并将其转换为机器可以理解的结构化数据。但我认为我对参与一个影响力很大的开源项目感到最兴奋,这是我以前从未做过的事情。
此外,该项目激发了我对秩序和整洁的渴望。在那时,大多数兼容性表格看起来像这样
在它们不一致的状态下,无法批量更新,也无法在不修改 MDN 上成千上万个页面的情况下重新设计。相反,我们努力将表格中的数据解放到一个结构化、经过验证的 JSON 格式,我们可以发布到 npm 包中。通过这种改变,新的表格可以生成,其他项目也可以使用这些数据。
从那时起,该项目已经发展壮大。如果说有一个转折点,那就是巴黎的“黑客在 MDN”活动,我们在 2018 年初在那里会面,迁移更多表格,构建新工具,并玩弄数据。在过去的一年半时间里,我们取得了如此多的成就,包括用闪亮的新 BCD 派生表格替换 MDN 上最后一个遗留表格,并看到我们的数据被用于Visual Studio Code中。
构建一个经久不衰的项目
如果没有数百名加入该项目的新贡献者的帮助,我们不可能将 BCD 打造成现在的模样。但随之而来的是一些挑战。我的职责从将数据复制到存储库中转变为审查他人的贡献,了解模式的设计,以及对支持工具进行黑客攻击。我不得不学习很多关于如何成为新老贡献者的贴心、有益的向导。但项目的规模扩大也对项目整体提出了新的要求。
Florian Scholz,项目的负责人,开始回答一个对项目长期可持续性至关重要的关键问题:我们如何确保贡献者不仅仅是输入者,而是真正成为项目的一部分?为了回答这个问题,Florian 撰写并帮助我们采纳了一份治理文件,该文件定义了任何贡献者(不仅仅是 MDN 员工)如何成为项目的所有者。
受 JS 基金会的技术咨询委员会、ESLint 项目和其他项目的启发,BCD 的治理文件概述了贡献者如何成为提交者(称为同行)、项目负责人(称为所有者)如何做出重要决策,以及如何成为所有者。这不是关于投票和议事规则的呆板规则手册;它体现了该项目成为社区主导项目的雄心壮志。
自从采用治理文件以来,BCD 添加了来自 Mozilla 之外的新的同行,反映了该项目如何发展成为一个跨浏览器社区。例如,Joe Medley,Google 的一名技术作家,加入了我们,帮助添加和确认有关 Google Chrome 的数据。我们还添加了一位新的所有者:我。
说实话,变化并不大:同行和所有者仍然审查拉取请求、仍然研究并添加新数据、仍然回答关于 BCD 的很多问题,和以前一样。但有了治理文件,我们知道预期是什么,以及我们可以做些什么来指导其他人走向项目所有权的旅程,就像我经历的那样。知道随着项目的增长,其领导层也会随之增长,这令人放心。
更多内容即将推出
我们在过去的一年里取得了很多成就,但我们最好的工作还在后面。在 2019 年,我们有一个雄心勃勃的目标:为所有 Web 平台功能获取 Firefox、Internet Explorer、Edge、Chrome、Safari、移动 Safari 和移动 Chrome 100% 的真实数据。这意味着要获取有关我们的数据集中任何功能是否被每个浏览器支持以及如果支持,它在哪个版本中首次出现的数据。如果我们实现了我们的目标,BCD 将成为 Web 开发者的无与伦比的资源。
但我们无法单独实现这个目标。我们需要通过测试和研究功能、更新数据、验证拉取请求等等来填补空白。我们希望您加入我们。