如何为 Firefox 贡献代码

整个过程可能有点长,并且可能需要时间才能正确设置。如果在任何时候遇到困难,请不要犹豫,在 https://chat.mozilla.org#introduction 频道提问。此外,以下是一些礼仪提示,以便在寻求帮助时有所帮助

  • 请不要先询问是否可以提问,请直接提出你的问题并提供相关的上下文,有人会在有时间时提供帮助。

  • 使用面向公众的渠道提出你的问题,而不是直接发送消息给个人。

    • 其他人可以从你的问题中学习,并且由于 #introduction 频道中有很多人,因此你的问题更有可能得到快速解答。

  • 你的问题可能不会立即得到解答,这是正常的!如果在一小时左右后仍未收到反馈,可以随时重新发布问题。

    • 有时消息会被忽略或通知会在其他事情中丢失,因此在这种情况下重新发布问题是正常的。

  • 请搜索相关频道的最近滚动记录,查看你的问题是否已被提出和/或解答。

    • 大多数设置问题之前都遇到过,因此很有可能你的问题最近已被解答。

我们通过编写补丁、测试补丁并将它们推送到“树”(我们用于 Mozilla-Central 中所有代码的术语)来更改 Firefox。让我们开始吧。

请参阅 Firefox 贡献者快速参考 获取简单的清单。

寻找工作内容

列为“已分配”的错误通常不是一个好的起点,除非你确定你有值得贡献的内容。其他人已经在处理它了!
即使没有分配人,礼貌地检查一下是否有人最近评论说他们正在查看修复该问题。
一旦你找到要处理的内容,请继续发表评论!让错误提交者、审阅者和组件所有者知道你想要处理该错误。你可能会收到一些额外的信息,也许还会被指定为负责人。

查找我们已识别为适合新贡献者的错误。

Bugzilla 中有数百万个错误报告,因此可能难以知道从哪里开始,因此我们创建了这些错误类别,以便更容易参与其中

  • Codetribute - 我们的网站,用于查找有指导的错误,有些是良好的第一个错误,有些稍微难一些。你的导师将帮助你指导错误修复以及提交和落地过程。

  • 良好的第一个错误 - 是进入 Mozilla 生态系统的最佳方式。它们都与微小的更改有关,有时只有几行,但它们是了解如何设置你的开发环境、浏览 Bugzilla 以及为 Mozilla 代码库做出贡献的好方法。

  • 学生项目 - 是更大的项目,例如可能适合大学学生获得学分。当然,如果你不是学生,也可以随意修复这些错误之一。我们维护两个列表:一个用于基于现有代码库的项目 项目

修复该错误

如果你想修复关于 Firefox、Thunderbird 或你其他喜欢的 Mozilla 应用程序的特定错误,这可能是一个很好的起点。有多种方法可以做到这一点

修复你的错误

我们将其交由你处理。以下是一些其他资源以帮助你

获取代码审查

修复错误后,你可以进入代码审查阶段。

Mozilla 使用 Phabricator 进行代码审查。

应该找谁进行审查?

  • 如果你有一个指导的错误:询问你的导师。他们会提供帮助,或者很容易找到合适的人。可能是他们自己!

  • 在该文件上运行 {hg, git} blame 并查找触碰你正在处理的函数的人。他们也是不错的选择。运行 {hg, git} log 并查找定期审查的人也可能是一种解决方案。

  • 错误本身可能包含明确指示最适合进行审查的人员的信息

  • 是否有关于类似主题的相关错误?这些错误的审阅者可能是另一个不错的选择

  • 我们有一个 模块列表,其中列出了模块的同行和所有者。其中一些将是优秀的审阅者。在最坏的情况下,将模块所有者设置为审阅者,并在评论中要求他们选择更合适的人员

请仅选择一位审阅者。

跟进和回复

请求审查后,审阅者通常会在 一两天内回复,审查补丁或说明他们何时能够审查,这可能是由于积压的工作造成的。如果你在这段时间内没有收到回复,请自然地与他们联系:在错误中添加一条评论,内容为“审查 ping?”,选中“需要更多信息来自”框,并添加审阅者的姓名。如果他们在一两天内没有回复,你可以在 Matrix 上的 #introduction:mozilla.org#developers:mozilla.org 频道寻求帮助。

如果进展不顺利,也不要犹豫,联系你的导师。

对于大多数新贡献者,甚至对于长期贡献的 Mozillian 来说,他们补丁的第一次审查将是“请求更改”(或 Bugzilla 中的“r-”)。这并不意味着你做得不好。在将代码合并到树中之前,还需要做更多工作。你的补丁可能需要一些更改——可能是小更改,也可能是大更改——并且你的审阅者会为你提供一些关于接下来需要做什么的指导。

这是一个重要的流程,所以不要气馁!凭借我们长期存在的代码库以及数亿用户,帮助贡献者提供优质补丁的关怀和关注是 Mozilla 项目的基石。进行审阅者要求的任何更改;如果你不确定如何操作,请务必提问!将你的新补丁再次推送到 Phabricator 并请求同一审阅者进一步审查。如果他们接受了你的更改,则表示你的补丁可以落地到树中!

将代码集成到 Firefox 中

一旦你的补丁被接受,它就可以投入使用了。在将其合并到树中之前,你的补丁需要通过我们的 Try 服务器 进行成功的运行,确保没有意外的回归。如果你还没有 Try 服务器访问权限,你的导师或审查你的补丁的人员将能够提供帮助。

请审阅者为你落地补丁。有关更多详细信息,请参阅 在代码库中推动更改

重复以上步骤!

谢谢。你已经修复了你的第一个错误,开放网络因此变得更加强大。但不要就此止步。

返回步骤 3,因为还有很多事情要做。你的导师可能会建议你处理一个新的错误,或者 找到一个你感兴趣的错误。现在你已经修复了第一个错误,你应该请求对存储库的 1 级访问权限,以便推送到 Try 服务器并在多个平台上获取有关更改的自动化反馈。修复一定数量的错误后,你应该请求 3 级访问权限,以便在代码经过审查后自行落地。

更多信息

我们正在改进此页面上的信息,以便项目的新手更容易上手。我们很快就会将这些页面中的一些信息整合进来,但在那之前,你可能会发现它们目前的格式很有趣