贡献代码到 Mozilla 代码库

这个页面将助你迈出向 Mozilla 贡献的第一步欢迎你,我们很高兴见到你!:)

需要帮助吗?

 Mozilla 社区是一个开放、包容、友好的大家庭,欢迎您加入到我们中来。如果您碰到任何困难,请在这里寻求帮助 #introduction chat room on irc.mozilla.org ,在这里你人们会帮助你入门。

当你开始贡献之前,着手去开发 Firefox 并且寻找一个适合你自己能力的 bug 可能很有挑战性。我们一直在寻找方法去提升这个过程,使 Mozilla 更加开放,更易于使用和更容易参与进来。如果你对这篇文档有任何问题或者障碍无法解决,请联系 Mike Hoye 的电子邮件 mhoye@mozilla.com ,我们的使命是为每一个新的贡献者解决问题。

对我的技能有什么要求?

Mozilla 是一个庞大的项目,我们相当乐意接受贡献者们运用各种不同技能贡献。

  • 如果您了解 C++,那么您可以为 Firefox 的核心层或者其他的 Mozilla 产品贡献代码;
  • 如果您了解 JavaScript 或者 HTML/CSS,那么您可能对 Firefox 前端贡献代码。
  • 如果您了解 Java,那么我们推荐您进行 Firefox Android 版,Firefox Focus Android 版以及 Firefox Fire TV 版本的开发;
  • 如果您了解 Swift,您可以协助我们开发 Firefox for iOSFirefox Focus iOS 版本;
  • 如果您了解 Python,您可以助力我们的 Web 服务,包括 Firefox 同步和 Firefox 账户
  • 如果您了解 MakeshellPerl 或者 Python,请关注我们的编译系统,发布工程以及自动化
  • 如果您了解 C 语言,那么您可以为 Mozilla 代码库所使用的一系列底层或第三方库贡献代码,比如 NSS, Opus,和 Daala
  • 如果你了解 Rust ,你可以协助开发 Rust 编程语言;专注并行和安全的 Servo 浏览器;或者把大量 Servo 代码增加到 Gecko 引擎的 Quantum 项目
  • 当然,除了编程,还有其他多种途径可以为 Mozilla 做出贡献。如果您希望在设计,服务支持,语言翻译,测试,等其他方面做出贡献,请点击 Mozilla 志愿服务机会

也许您还不了解编程,但是希望开始学习编程?在 Mozilla 开发者网络上有大量资源

步骤 1 - 构建 Firefox 桌面版或 Android

如果你想助力 Firefox,请跟着我们的 构建 Firefox(移动开发者可以浏览 构建 Firefox Android )的整套简单指导来操作。很简单,但可能需要一些时间,因此你或许想要在正在构建的时候下进行下一步。更多构建指南请点这里

对于其他产品(包括社区支持的 Thunderbird 构建版),可以通过快速搜索到,并且你或许不需要构建任何东西就可以参与贡献。

步骤 2 - 找些事情做做

除非你有值得贡献的东西,被标记为“已分配”的 Bug 不太适合作为出发点。已经有别人在修复这种 Bug !

即便没有负责人,礼貌的做法还是先检查这个 Bug 的评论,观察是否有人最近评论他们在着手解决问题。

一旦你发现了值得去贡献的地方,继续深入并加以评论!让提交 Bug 的人、评论者和其他参与者知道你想要致力于修复这个 Bug 。你可能会收到一些额外的信息,甚至可能成为负责人。

修复你无法忍受的地方

如果你想要修复 Firefox,Thunderbird 的某些问题,或者其他你最喜欢的 Mozilla 应用的缺点,这些都是很好的出发点。可以通过以下途径来着手:

对新手,找个我们已发现的 Bug 练手是一个不错的选择。

由于 Bugzilla 中有超过一百万 Bug,让人觉得难以入手,我们创建了这些 Bug 列表使参与进来变得简单。

  • Codetribute - 我们用于找到用于“教学”的 Bug,一些是初次出现的 Bug,一些则困难一些。你的导师会通过 Bug 修复和指导你。
  • Good First Bugs - 是带你进入 Mozilla 生态最好的方法。他们全都是一些很小的修改,有时小到几行代码,但从这个地方入手是学习建立开发环境,浏览 Bugzilla 乃至为 Mozilla 代码库添砖加瓦的良方。
  • Mentored bugs 则是更具挑战的,但是有一个导师来帮你弄懂这个过程。一般来说,是有足够的 Bug 信息来让你开始工作。只要你需要帮助,通过 Bug 中的 IRC 或 email 联系导师。当你完成了修复,他们会帮你把你的代码合并到(主)代码中。
  • 在推特上关注 @StartMozilla ,我们把遍布 Mozilla 的新贡献者通过 Good First Bugs 联系在一起。
  • 访问 firefox-dev.tools - 我们为新贡献者列出了 Firefox 开发者工具存在的 Bug 。
  • Student Projects 是更大的工程,因此可能适合认证的大学生。当然,如果你不是一名学生,你也仍然可以随心修改一个或多个 Bug。我们维护两条分支,一个用于项目已存在的代码另外一个用于实现新应用

使用 Bug 搜索器

Mozilla 社区的成员开发了许多工具。这些工具帮助新开发者找到需要修复的 bug,而不必使用 Bugzilla 的令人困惑的搜索工具。

步骤 3 - 修复 Bug

我们把这些留给你勤劳的双手,当然,我们也提供给你一些资源来帮你完成这些工作。

步骤 4 - 审查您的代码

一旦你完成修复了一个 Bug,就把附上补丁到 Bug并寻求检查。通过点击你附件的 Details 链接,可设置检查标签以标记需要 review。进入在文字页面出现的查阅者的 Bugzilla ID(要么是他们的 email 或者他们提供的唯一名称标识)。添加 Bugzilla ID是非常重要的步骤,否则你的请求会被遗漏。然而,你如何找出到合适的人来做 review 呢?

  • 如果你解决的是一个 mentored bug,那就询问你的督导,他们知道或者很容易找到 review的人。
  • 运行 hg blame 并查看有谁接触了你工作的那些函数-他们将是合适的人选。
  • Bug 本身(注释说明)可能包含一个合适人选来请求做 review。
  • 相似主题是否有相关的 Bugs?如果有的话,之前相似主题的 Bugs 的 reviewer 可能是个好的选择。
  • 我们有一个过时的模块列表,它列出了模块的开发者和工作者,这些人中的某些可能是合适的选择。最差的情况下,就设置模块的拥有者
  • 为 reviewer,如果他们没有时间,就请他们在 Bug 评论里挑选一个合适人选。

Step 4b - 跟踪负责

一旦你申请 review,检阅人员一般会在一到两天时间内给你反馈,review 补丁或者,如果他们把这个 review 添加到工作列表,表示他们会对它进行 review。如果 reviewer 在一段时间内无响应,不要惧于告知下他们。只需要添加一个评论到 Bug,评论一句‘review  ping?’,检查下 Bug 的“Need more information from:” 框内并添加 reviewer 的名字,如果他们在一两天内没有反应,你可以通过#介绍或者#开发的 IRC 频道寻求帮助,或者直接联系 Mike Hoye 。

步骤 5 - 回应代码审查

对于大多数的 contributors - 和长期活跃的 Mozillians 来说 - 你补丁的第一次 review 评价将是 r-,这并不意味着你做了很差的工作,而说明你代码在合并到项目分支前仍有一些工作需要做。你的补丁可能需要做一些修改 - 可能是小的也可能是大部分修改 - 并且你的 reviewer 将给你些下一步工作指导。

这是一个重要的过程,因此不要因此丢掉自信!作为拥有一份长期代码库和数百万使用者,细心和专注帮助 contributors 合并强壮的补丁是 Mozilla 项目的基石。根据你的 reviewer 的说明进行修改;如果你不确定修改,一定要问!把新的补丁再一次附在 Bug 上,并申请同一 reviewer 再一次进行审查。如果他们给你的评论是 r+,这就意味着你的 Bug 被接收到项目 tree 中。

步骤 6 - 确保将代码合并到主代码中

一旦你的补丁得到 r+ 的评论,它就准备使用了。但在合并到项目分支前,你的补丁将需要通过我们的"try server"实现一次成功运行以保障它不会引起非预期的退化。你的督导或者审阅你补丁的人会帮忙完成那些工作,如果你现在还没有 try server 的权限。

一旦你获得一次成功的 try server 运行,你的补丁会被标记可行,并准备通过在 Bug 顶部添加checkin-needed 关键字到“keywords”域提交。一个友好的具有提交权限的 Mozillian 将快速的 push 你的补丁到库中,并更新 Bug。如果你的补丁已经通过 Mozilla's 的自动测试,不久后将会合并到主分支而成为我们 nightly builds 的一部分。

步骤 7 - 重复以上的步骤

非常感谢。你已经修改好你的第一个 Bug,开源 web 由于它而更加强壮。但不要停下来。

回到第三步,要做的还很多。你的督导可以推荐一个新的 Bug 给你来解决,或者你可以自己找一个你感兴趣的。既然你已经修复了你第一个 Bug,你应该收到 level 1 的访问库权限,因此你可以 push 到 try server 并得到你修改内容在多平台自动运行反馈结果。在修复一系列 Bugs之后,你会获得 level 3 的权限,也就是说你可以在得到 r+ 的评分后,自己 push 代码到分支。

更多信息

我们正改进这个页面信息以面向项目新手,很快,我们将集成这些页面的信息,不过,在那之前你可能会发现现在的形式很有趣。