在线文档教程

What to Expect from Maintainers

What to Expect from Maintainers

因此,您已阅读撰稿人指南,并准备好发送您的第一个拉取请求。也许你已经在React Native中发现了一个问题,并希望与维护人员合作解决问题。以下是您在打开问题或发送拉取请求时可能会发生的情况。

以下内容来自GitHub 的优秀开源指南,并反映了React Native的维护者如何被鼓励处理您的贡献。

处理问题

我们每天都会看到数十个新问题。为了帮助维护者关注可操作的内容,维护者要求贡献者在开始新问题之前做一些工作:

  • 问题应该提供清晰,易于遵循的步骤以及示例代码来重现问题。理想情况下,提供snack

不符合上述标准的问题可以立即关闭,并链接到撰稿人指南。

新版Runbook

您收集了开设新问题所需的所有信息,并且您确信它符合撰稿人指南。一旦你发布了一个问题,这是我们的维护人员在决定如何推进时会考虑的问题:

  • 这是问题的功能要求吗? 某些功能可能不适合核心React Native库。这通常是为案件*新模块是Facebook并没有在生产中使用。在这种情况下,维护人员会解释这应该作为一个单独的模块发布到npm,使用户可以轻松地在他们的项目中引入模块。即使该功能属于核心库,添加它意味着维护它。维护人员会鼓励你提交pull请求或以其他方式发表您的要求坎尼通过发出@facebook-github-bot feature命令,结束这个问题。对于提案和长时间运行的讨论可以有例外,尽管这些应该很少。如果您已经为该项目贡献了足够的时间,那么您可能已经可以访问React Native核心撰稿人 Facebook组,通常会进行这种讨论。

  • 这个问题是否需要帮助?

绝对应该问Stack Overflow而不是GitHub。维护者可能会鼓励您通过发布@facebook-github-bot stack-overflow命令来解决堆栈溢出问题,从而解决问题。随意回答一些堆栈溢出的问题,你会得到代表!

  • 模板发行 用于填写问题?顶部的两个问题作者都回答“是”吗? 否则,维护者会要求您通过发布@facebook-github-bot no-template命令来提供更多信息,以解决问题。

  • 问题是否与现有的公开问题重复?

维护人员将使用该@facebook-github-bot duplicate #123命令将问题标记为问题#123的重复,并将其关闭。

  • 问题是否包含小吃或重现问题的步骤列表? 问题应该相对容易重现。有时候这个问题会影响一个特定的应用程序,但是没有提供最低限度的repro,也许在日志中看到崩溃,作者不确定它来自哪里,也许这个问题是零星的。碰巧,如果维护人员不能轻易地重现问题,就不能合理地期望他们能够修复问题。这些问题可以通过发出@facebook-github-bot needs-repro命令来关闭。如果多个人看起来受到这个问题的影响,特别是在新的React Native发行版被删除之后,可以例外。

  • 旧版本的React Native是否存在问题?

如果是这样,期待被问到这个问题是否可以在最新候选版本中复制。

  • 问题能否可靠地复制? 如果没有,维护者可能会发出@facebook-github-bot cannot-repro命令,并解决问题。

  • 问题是否需要更多信息?

有些问题需要更多信息才能重现。维护人员应该解释需要哪些附加信息,使用@facebook-github-bot label Needs more information命令来标记问题。

“需要更多信息”标签的问题在未经作者回复的情况下已打开超过一周,可以使用@facebook-github-bot no-reply

  • 问题已经在评论中解决了吗? 有时候另一个贡献者已经在评论中提供了一个解决方案。维护人员可以发布@facebook-github-bot answered命令来解决问题。重新开放已解决的问题:有时需要重新打开问题。例如,如果一个问题等待作者关闭,那么作者回复说,这确实是一个错误,你可以评论@facebook-github-bot reopen重新打开它。有效的重复步骤的有缺陷报告是一些最好的问题!维护人员应该感谢作者找到问题,然后解释React Native是一个社区项目,并询问他们是否会提供修补程序转载问题如果经过上述所有检查后问题仍然存在,那么它将转到分流阶段。然后维护人员将执行以下操作:

  • 添加相关标签。例如,如果这是影响Android的问题,请使用该@facebook-github-bot label Android命令。

  • 发表评论说这个问题已被分类。

  • 标记相关人员。

通常可以通过查看CODEOWNERS文件找出哪些人可能与某个特定问题有关。

bot的所有可用命令是什么?

您可以在下面的Facebook GitHub Bot部分找到完整的命令参考。

陈旧的问题

“需要更多信息”状态中的问题可能会在一周后关闭,而且没有作者跟进。过去两个月没有活动的问题可能会定期关闭。如果你的问题以这种方式得到解决,那没有什么个人的。如果您坚信问题应该保持开放,请告诉我们为什么。

只是评论说这个问题依然存在并不是很有说服力(对于关键的发行阻塞问题在两个月内没有任何活动很少发生!)。为了重新解决问题,你可能需要做一些工作:

  • 这个问题是否可以在最新候选版本上复制?用您测试的版本发表评论。

  • 如果是这样,错误报告中是否缺少任何信息?发布包含问题模板所需的所有信息的评论。

  • 是否有解决此问题的拉取请求?发布PR号码的评论,以便我们跟进。

提出一个好案例的几个贡献者可能是重新解决问题所需的一切。

处理拉请求

核心团队将监控拉取请求。当我们得到一个,我们会首先运行一些Facebook特定的集成测试。从这里,我们需要让另一个人签署更改,然后合并请求。对于API更改,我们可能需要修复内部使用,这可能会导致一些延迟。我们将尽最大努力在整个过程中提供更新和反馈。

我们如何优先处理pull请求

我们使用撰稿者Chrome扩展程序来帮助我们了解谁正在发送拉请求。由具有合并PR的历史的贡献者打开的请求更有可能首先被查看。除此之外,我们尝试按时间顺序进行拉取请求。

我们如何审查拉取请求

审阅PR有时需要维护人员花费更多的时间,而不是编写代码。维护人员需要考虑将补丁导入代码库的所有后果。它是否可能引入重大变化?添加新依赖项的性能考虑因素是什么?文档是否需要更新?这属于核心,还是更适合作为第三方软件包?

一旦你打开一个拉取请求,这就是你可以期待维护人员检查它的方式:

  • 拉取请求是否缺少信息? 测试计划是必需的!添加标签'需要修订'和'需要作者的回应'。然后你可以跟进一个响应,如:嗨@作者,感谢您发送拉请求。你能否添加模板中指定的所有信息?这对于人们能够理解和检查您的拉动请求是必需的。

  • 代码风格是否与 风格指南相匹配?

如果没有,链接到风格指南并添加标签'需要修订'。

  • 请求请求是否添加了我们不想添加到核心并维护的全新功能? 要求作者将其发布到单独的npm模块并关闭拉取请求。

  • 请求请求是否同时执行多个不相关的事情?

请作者分割它。

  • 拉请求是否过时并需要重新绑定? 问作者:“你可以重新布置吗?” 并添加标签'需要作者的回应'。

  • 拉请求是否等待作者的回复?

像这些拉请求通常有标签'需要作者的反应'。如果在过去30天内没有回复,请以如下方式回复:

感谢您提出拉取请求,但由于处于非活动状态,我们将其关闭。如果您想要合并您的建议更改,请将您的分支与主人重新绑定并发送新的拉取请求。

  • 拉请求是否过时并等待审核? 查看它或cc可能可以查看的人员。找到合适的人来审查拉取请求有时可能会很棘手。拉取请求可能会同时触摸iOS,Java和JavaScript代码。如果拉取请求一直在等待审阅,您可以通过查看您正在触摸的文件的责任历史来帮助您。是否有任何人似乎在PR所触及的代码库部分有知识?关闭拉取请求有时维护者可能会决定不会接受拉取请求。也许拉出请求超出了该项目的范围,或者这个想法很好,但是实施很差。无论什么原因,当关闭pull请求时,维护人员应该保持对话的友好:

  • 感谢他们的贡献。

  • 解释为什么它不符合项目的范围。

  • 链接到相关文档,如果有的话。

  • 关闭请求。

化解局面

有时候,当维护人员拒绝提出请求或解决问题时,贡献者可能会感到不安并批评您的决定。维护人员将采取措施化解这种情况。

如果贡献者变得敌意或不尊重,他们将被提及到行为准则。否定用户将被阻止,并且不当评论将被删除。

Facebook GitHub机器人

Facebook GitHub Bot允许社区成员执行管理操作,如标记和关闭问题。要访问bot,请按照字母顺序将您的GitHub用户名添加到IssueCommands.txt的第一行,方法是提交Pull Request。

使用Facebook GitHub机器人

可以通过添加以下任何命令作为对问题的独立评论来触发僵尸程序:

@facebook-github-bot no-template

在需要更多信息时使用此功能,特别是如果问题不符合问题模板。机器人将在添加“需要更多信息”标签后关闭该问题。

@facebook-github-bot stack-overflow

标记不属于错误跟踪器的问题,并重定向到堆栈溢出。僵尸程序将在添加“For Stack Overflow”标签后关闭该问题。

@facebook-github-bot needs-repro

提示作者提供可重复的示例或snack。机器人将应用“需要更多信息”标签。

@facebook-github-bot cannot-repro

当问题无法复制时使用此功能,或者是因为它影响特定的应用程序,但没有提供最低限度的复制,或者该问题描述了某些社区成员不太可能复制的偶发事件。僵尸程序会关闭的问题。

@facebook-github-bot duplicate (#0-9+)

将问题标记为重复。需要提供问题编号。僵尸程序会关闭的问题。

Example: @facebook-github-bot duplicate #42

@facebook-github-bot label (.*)

使用此命令可将标签(例如“iOS”或“Android”)添加到问题中。

Example: @facebook-github-bot label Android

@facebook-github-bot feature

当问题描述功能请求时使用此功能,而不是可重现的错误。机器人会将作者指向功能请求跟踪器,添加“功能请求”标签,然后关闭该问题。

@facebook-github-bot expected

当问题描述预期行为的类型时使用它。僵尸程序会关闭的问题。

@facebook-github-bot answered

当一个问题看起来是线程上的某个人已经回答的问题时使用它。僵尸程序会关闭的问题。

@facebook-github-bot close

没有提供特别的解释就关闭一个问题。

@facebook-github-bot reopen

重新打开以前关闭的问题。

@facebook-github-bot bugfix

标记描述可重现错误的问题,并鼓励作者发送拉取请求。机器人将添加“帮助通缉”标签。

@facebook-github-bot no-reply

如果问题需要作者提供更多信息,但他们在一段时间内未添加评论,请使用此选项。僵尸程序会关闭的问题。

@facebook-github-bot icebox

当问题已经打开超过30天而没有任何活动并且没有社区成员自愿参与修复时使用此功能。机器人将在添加“冰箱”标签后关闭该问题。

另外,以下命令可以用于拉取请求:

@facebook-github-bot cla

提醒作者CLA需要签名。

@facebook-github-bot shipit

Flag the PR for merging. If used by a core contributor, the bot will attempt to import the pull request. In general, core contributors are those who have consistently submitted high quality contributions to the project. Access control for this command is configured internally in Facebook, outside of the IssueCommands.txt file mentioned above.

@facebook-github-bot large-pr

Flag PRs that change too many files at once. These PRs are extremely unlikely to be reviewed. The bot will leave a helpful message indicating next steps such as splitting the PR. The bot will close the PR after adding the "Large PR" label.