TensorFlow RFC 流程
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
TensorFlow 的每一项新功能都从征求意见 (RFC) 开始。
RFC 是描述需求与解决需求的建议更改的文档。具体来说,RFC 将:
TensorFlow 征求意见 (RFC) 的目的是通过从利益相关者和专家那里获得反馈,并广泛地交流设计变更,从而促进 TensorFlow 社区成员积极地参与开发工作。
如何提交 RFC
在提交 RFC 之前,请与项目贡献者和维护者讨论您的目标,并尽早获得反馈。请使用有关项目的开发者邮寄名单(developers@tensorflow.org 或相关 SIG 的名单)。
起草您的 RFC。
- 阅读设计审核标准
- 遵循 RFC 模板。
- 将您的 RFC 文件命名为
YYYYMMDD-descriptive-name.md
,其中 YYYYMMDD
是提交日期,而 descriptive-name
与您的 RFC 标题相关。(例如,如果您的 RFC 标题为 Parallel Widgets API,则可以使用文件名 20180531-parallel-widgets.md
)。
- 如果要提交图像或其他辅助文件,请创建格式为
YYYYMMDD-descriptive-name
的目录来存储这些文件。
编写 RFC 草稿后,请先征求维护者和贡献者的反馈,然后再提交。
不需要编写实现代码,但它有助于设计讨论。
招募发起人。
- 发起人必须是项目的维护者。
- 请先在 RFC 中注明发起人,然后再发布 PR。
您可以在没有发起人的情况下发布 RFC,但是如果在发布 PR 的一个月内仍然没有发起人,则该 PR 将被关闭。
将您的 RFC 作为拉取请求提交到 tensorflow/community/rfcs。
使用 Markdown,在拉取请求的评论中包含头表和目标部分的内容。有关示例,请参见此示例 RFC。包括共同作者、审查者和发起人的 GitHub 句柄。
在 PR 的顶部,标识评论的期限。期限应为自 PR 发布起至少两周。
通过开发者邮寄名单向开发者发送简要说明、PR 链接和审查请求。请遵循此示例所示电子邮件的格式。
发起人将在 RFC PR 发布后的两周内请求召开审查委员会会议。如果讨论过程积极踊跃地提出了问题,请等到问题解决后再进行审查。审查会议的目的是解决小问题;应提前在重大问题上取得共识。
会议可以批准或拒绝 RFC,也可以待更改后重新审查。批准的 RFC 将合并到 community/rfcs 中, 而 RFC 被拒的 PR 则会被关闭。
RFC 参与者
RFC 流程涉及到许多人员:
RFC 作者 - 编写 RFC 并致力于在整个流程中倡导 RFC 的一名或多名社区成员
RFC 发起人 - 发起 RFC 并在 RFC 审查过程中提供支持的维护者
审查委员会 - 一组负责建议是否采纳 RFC 的维护者
任何社区成员都可以通过提供有关 RFC 是否满足其需求的反馈来参与该流程。
RFC 发起人
发起人是负责确保 RFC 流程获得最佳结果的项目维护者。职责包括:
- 倡导拟议的设计。
- 引导 RFC 符合现有的设计和样式惯例。
- 引导审查委员会达成富有成效的共识。
- 当审查委员会请求更改时,确保更改得到妥善实施并寻求委员会成员的后续批准。
- 当 RFC 经批准待实现时:
- 确保建议的实现方法符合设计。
- 与相关方进行协调以成功落实实现方案。
RFC 审查委员会
审查委员会在协商一致的基础上决定批准、拒绝还是请求更改。责任包括:
- 确保考虑到公众反馈的实质性内容。
- 添加其会议记录作为 PR 评论。
- 提供其做出决定的理由。
审查委员会的人员构成可能会因每个项目特定的治理方式和领导而异。对于核心 TensorFlow,委员会将由在相关领域具有专业知识的 TensorFlow 项目贡献者组成。
社区成员和 RFC 流程
RFC 的目的是确保 TensorFlow 的新变更能够很好地表示和传达社区的想法。社区成员有责任参与他们对其结果感兴趣的 RFC 的审查工作。
对 RFC 感兴趣的社区成员应:
- 尽早提供反馈,以留出足够的考虑时间。
- 先通读 RFC,然后再提供反馈。
- 以文明且具有建设性的方式提供反馈。
实现新功能
RFC 一经批准,即可开始实现 RFC。
如果您正在编写用于实现 RFC 的新代码:
- 确保您了解 RFC 中批准的功能和设计。在开始工作之前,提出问题并讨论方法。
- 新功能必须包括新的单元测试,以验证该功能是否按预期工作。建议在编写代码之前先编写这些测试。
- 遵循 TensorFlow 代码样式指南
- 添加或更新相关的 API 文档。在新文档中引用 RFC。
- 遵循您正在贡献的项目仓库内的
CONTRIBUTING.md
文件所列的任何其他准则。
- 先运行单元测试,然后再提交代码。
- 与 RFC 发起人合作以成功落实新代码。
保持高标准
我们鼓励和感谢每一位贡献者的贡献,但也同时有意地保持着较高的 RFC 接受门槛。在以下任何一个阶段,新功能都可能会被拒绝或要求重大修改:
- 相关邮寄名单的初始设计对话。
- 未能招募到发起人。
- 反馈阶段存在重大异议。
- 在设计审查期间未能达成共识。
- 在实现过程中出现问题(例如:无法实现向后兼容性、在维护方面存在疑虑)。
如果流程运行得当,则 RFC 失败情况应发生在早期而非后期。RFC 经批准不能作为承诺实现的保证,并且是否接受建议的 RFC 实现仍受常规代码审查流程的约束。
如果您对此流程有任何疑问,请随时通过开发者邮寄名单提问,或在 tensorflow/community 中提交问题。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2022-06-07。
[null,null,["最后更新时间 (UTC):2022-06-07。"],[],[],null,["# The TensorFlow RFC process\n\n\u003cbr /\u003e\n\nEvery new TensorFlow feature begins life as a Request for Comment (RFC).\n\nAn RFC is a document that describes a requirement and the proposed changes that\nwill solve it. Specifically, the RFC will:\n\n- Be formatted according to the [RFC template](https://github.com/tensorflow/community/blob/master/rfcs/yyyymmdd-rfc-template.md).\n- Be submitted as a pull request to the [community/rfcs](https://github.com/tensorflow/community/tree/master/rfcs) directory.\n- Be subject to discussion and a review meeting prior to acceptance.\n\nThe purpose of a TensorFlow Request for Comments (RFC) is to engage the\nTensorFlow community in development, by getting feedback from stakeholders and\nexperts, and communicating design changes broadly.\n\nHow to submit an RFC\n--------------------\n\n1. Before submitting an RFC, discuss your aims with project contributors and\n maintainers and get early feedback. Use the developer mailing list for the\n project concerned (developers@tensorflow.org, or the list for the relevant\n SIG).\n\n2. Draft your RFC.\n\n - Read the [design review criteria](https://github.com/tensorflow/community/blob/master/governance/design-reviews.md)\n - Follow the [RFC template](https://github.com/tensorflow/community/blob/master/rfcs/yyyymmdd-rfc-template.md).\n - Name your RFC file `YYYYMMDD-descriptive-name.md`, where `YYYYMMDD` is the date of submission, and `descriptive-name` relates to the title of your RFC. (For instance, if your RFC is titled *Parallel Widgets API* , you might use the filename `20180531-parallel-widgets.md`.\n - If you have images or other auxiliary files, create a directory of the form `YYYYMMDD-descriptive-name` in which to store those files.\n\n After writing the RFC draft, get feedback from maintainers and contributors\n before submitting it.\n\n Writing implementation code is not a requirement, but it may help design\n discussions.\n3. Recruit a sponsor.\n\n - A sponsor must be a maintainer of the project.\n - Identify the sponsor in the RFC, before posting the PR.\n\n You *may* post an RFC without a sponsor, but if within a month of posting\n the PR there is still no sponsor, it will be closed.\n4. Submit your RFC as a pull request to\n [tensorflow/community/rfcs](https://github.com/tensorflow/community/tree/master/rfcs).\n\n Include the header table and the contents of the *Objective* section in the\n comment of your pull request, using Markdown. For an example, please see\n [this example RFC](https://github.com/tensorflow/community/pull/5). Include\n the GitHub handles of co-authors, reviewers, and sponsors.\n\n At the top of the PR identify how long the comment period will be. This\n should be a *minimum of two weeks* from posting the PR.\n5. Email the developer mailing list with a brief description, a link to the PR\n and a request for review. Follow the format of previous mailings, as you can\n see in\n [this example](https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/PIChGLLnpTE).\n\n6. The sponsor will request a review committee meeting, no sooner than two\n weeks after the RFC PR is posted. If discussion is lively, wait until it has\n settled before going to review. The goal of the review meeting is to resolve\n minor issues; consensus should be reached on major issues beforehand.\n\n7. The meeting may approve the RFC, reject it, or require changes before it can\n be considered again. Approved RFCs will be merged into\n [community/rfcs](https://github.com/tensorflow/community/tree/master/rfcs),\n and rejected RFCs will have their PRs closed.\n\nRFC participants\n----------------\n\nMany people are involved in the RFC process:\n\n- **RFC author** --- one or more community members who write an RFC and are\n committed to championing it through the process\n\n- **RFC sponsor** --- a maintainer who sponsors the RFC and will shepherd it\n through the RFC review process\n\n- **review committee** --- a group of maintainers who have the responsibility of\n recommending the adoption of the RFC\n\n- Any **community member** may help by providing feedback on whether the RFC\n will meet their needs.\n\n### RFC sponsors\n\nA sponsor is a project maintainer responsible for ensuring the best possible\noutcome of the RFC process. This includes:\n\n- Advocating for the proposed design.\n- Guiding the RFC to adhere to existing design and style conventions.\n- Guiding the review committee to come to a productive consensus.\n- If changes are requested by the review committee, ensure these are made and seek subsequent approval from the committee members.\n- If the RFC moves to implementation:\n - Ensuring proposed implementation adheres to the design.\n - Coordinate with appropriate parties to successfully land implementation.\n\n### RFC review committees\n\nThe review committee decides on a consensus basis whether to approve, reject, or\nrequest changes. They are responsible for:\n\n- Ensuring that substantive items of public feedback have been accounted for.\n- Adding their meeting notes as comments to the PR.\n- Providing reasons for their decisions.\n\nThe constitution of a review committee may change according to the particular\ngovernance style and leadership of each project. For core TensorFlow, the\ncommittee will consist of contributors to the TensorFlow project who have\nexpertise in the domain area concerned.\n\n### Community members and the RFC process\n\nThe purpose of RFCs is to ensure the community is well represented and served by\nnew changes to TensorFlow. It is the responsibility of community members to\nparticipate in reviewing RFCs where they have an interest in the outcome.\n\nCommunity members who are interested in an RFC should:\n\n- **Provide feedback** as soon as possible to allow adequate time for consideration.\n- **Read RFCs** thoroughly before providing feedback.\n- Be **civil and constructive**.\n\nImplementing new features\n-------------------------\n\nOnce an RFC has been approved, implementation can begin.\n\nIf you are working on new code to implement an RFC:\n\n- Make sure you understand the feature and the design approved in the RFC. Ask questions and discuss the approach before beginning work.\n- New features must include new unit tests that verify the feature works as expected. It's a good idea to write these tests before writing the code.\n- Follow the [TensorFlow Code Style Guide](#tensorflow_code_style_guide)\n- Add or update relevant API documentation. Reference the RFC in the new documentation.\n- Follow any other guidelines laid out in the `CONTRIBUTING.md` file in the project repo you're contributing to.\n- Run unit tests before submitting your code.\n- Work with the RFC sponsor to successfully land the new code.\n\nKeeping the bar high\n--------------------\n\nWhile we encourage and celebrate every contributor, the bar for RFC acceptance\nis kept intentionally high. A new feature may be rejected or need significant\nrevision at any one of these stages:\n\n- Initial design conversations on the relevant mailing list.\n- Failure to recruit a sponsor.\n- Critical objections during the feedback phase.\n- Failure to achieve consensus during the design review.\n- Concerns raised during implementation (for example: inability to achieve backwards compatibility, concerns about maintenance).\n\nIf this process is functioning well, RFCs are expected to fail in the earlier,\nrather than later, stages. An approved RFC is no guarantee of a commitment to\nimplement, and acceptance of a proposed RFC implementation is still subject to\nthe usual code review process.\n\nIf you have any questions about this process, feel free to ask on the developers\nmailing list or file an issue in\n[tensorflow/community](https://github.com/tensorflow/community/tree/master/rfcs)."]]