创建 RFC

熟悉 RFC(评论请求)流程和标准后,您可能需要创建提案,以供 Fuchsia Eng Council 审核。

如需创建 RFC,您需要创建至少包含以下三个文件的 Gerrit 更改:

创建元数据

RFC 的元数据定义了许多用于填充 RFC 概览的 RFC 信息的值。

为了标识您的 RFC,您需要修改 docs/contribute/governance/rfcs/_rfcs.yaml 以包含有关您的 RFC 的信息。

对于 RFC,您需要提供以下信息:

参考文档

RFC 元数据
name必需

定义 RFC 名称。首次创建 RFC 时,您应使用 RFC-NNNN。在您的 RFC 批准或拒绝后,Fuchsia Eng Council 会为您分配一个唯一的名称。

title必需

为您的 RFC 定义标题。此标题必须简明扼要,并使用几个字词解释您的 RFC。

short_description必需

为您的 RFC 定义简短说明。说明必须简短,不应超过几句话。

authors必需

创建 RFC 的作者列表。

  • 对于单个作者,请使用以下格式:["myemail@example.com"]。
  • 如果有多个作者,请使用以下格式:["myemail@example.com", ...]
file必需

定义 RFC 的 Markdown 文件的文件名。其中应包含 RFC name 的数字部分以及基于 RFC 标题的标识符。

在收到 RFC 名称之前,请使用 NNNN 作为数字部分,例如 NNNN_file。您的 RFC 审核后,您将收到一个 RFC 名称。例如,对于 id0001 且标题为 Fuchsia Request for Comments (RFC) process 的 RFC,您可以使用 file0001_rfc_process.md 的类。

area必需

定义您的 RFC 影响的区域列表。

  • 对于单个区域,请使用以下格式 `['area']`。
  • 对于多个区域,请使用此格式 `['area1', ...]`。

有效区域

有效区域
  • Bluetooth
  • Build
  • Component Framework
  • Developer
  • Devices
  • Diagnostics
  • Driver SDK
  • Drivers
  • EngProd/Infra
  • Experiences
  • FIDL
  • Firmware
  • Foreign ABI Compatibility
  • General
  • Governance
  • Graphics
  • HCI
  • Identity
  • Kernel
  • Languages and Libraries
  • Media
  • Memory
  • Metrics
  • Netstack
  • Performance
  • Power
  • Recovery
  • Security
  • Sessions
  • Software Assembly
  • Software Delivery
  • Storage
  • System
  • Testing
  • Toolchain
  • View System
  • Virtualization
  • Web
  • WLAN
issue必需

https://fxbug.dev/ 上定义用于跟踪您的 RFC 的问题列表。 如果您没有“问题”编号,可以将此值留空,即 []

  • 对于单个问题,请使用此格式 ['issue']。
  • 如果有多个问题,请使用以下格式:['issue1', ...]
gerrit_change_id必需

包含您的 rfc 的 gerrit 更改的 id。这些是 Gerrit 更改网址的最后几位数。例如,如果您更改的网址是 https://fuchsia-review.googlesource.com/c/fuchsia/+/366393,请使用 366393 作为 gerrit_change_id

submitted必需

year-month-day 格式指定首次为 RFC 创建变更的日期。

status必需

定义 RFC 的状态。当您首次提交 RFC 时,此值应为 Pending。您的 RFC 审核后,状态将更改为 AcceptedRejected

reviewers获批或遭拒后必须提供

定义来自 Gerrit 更改的 RFC 的审核者。

consulted获批或遭拒后必须提供

已就此 RFC 咨询了相关负责人,但无需对其执行 +1 推荐。

reviewed必需

指定您收到 Fuchsia Eng Council 的决定的日期,即表明您的 RFC 是被接受还是拒绝。

示例

- name: 'RFC-NNNN'
  title: 'zx_channel_iovec_t support for zx_channel_write and zx_channel_call'
  short_description: 'This RFC introduces a new mode to zx_channel_write and zx_channel_call that copies input data from multiple memory regions rather than from a single contiguous buffer.'
  authors: ['bprosnitz@google.com']
  file: '0010_channel_iovec.md'
  area: ['Zircon']
  issue: ['60623']
  gerrit_change_id: ['433621']
  status: ''
  reviewers: []
  submitted: '2020-09-25'
  reviewed: ''

为 RFC 创建元数据后,您就可以使用 RFC 信息编写 Markdown 文件。

创建 Markdown 文件

填写 RFC 元数据和 RFC 的 name 后,您可以为 RFC 创建 Markdown 文件。

如需创建 Markdown 文件,请执行以下操作:

  1. 根据 RFC 模板创建新的 Markdown 文件。必须根据您添加到元数据文件的 file 值命名此文件。

  2. 使用文本编辑器修改文件时,您需要修改模板的第一行,该模板包含的 rfcid 变量为 RFC 的 name。例如,如果您的 name"RFC-NNNN",则第一行如下所示:

    
    {% set rfcid = "RFC-NNNN" %}
    
    
  3. 填写 RFC 摘要标题后面的不同部分。

填写 Markdown 文件后,您就可以在目录中为 RFC 创建一个条目了。

创建 _toc.yaml 条目

为 RFC 创建元数据并创建 Markdown 文件后,您就可以在 TOC(目录)中列出 RFC。

如需添加 TOC 条目,请执行以下操作:

  1. 修改 //docs/contribute/governance/rfcs/_toc.yaml 文件。
  2. 按以下格式在最后一个条目下方添加您的 RFC 条目。

参考文档

   - title: "name: title"
     path: /docs/contribute/governance/rfcs/file.md

示例

- title: "RFC-0001: RFC Process"
  path: /docs/contribute/governance/rfcs/0001_rfc_process.md

其中,nametitlefile 是您在元数据文件中定义的值。

创建 TOC 条目后,您就可以提交 RFC 以供审核了。

将更改送审

修改元数据文件、创建 Markdown 文件并添加 TOC 条目后,您就可以创建更改以供审核了。

变更的提交消息的第一行必须为 [rfc],后跟 RFC 名称。提交消息的正文还可能包含 RFC 的简短说明。例如:

[rfc] zx_channel_iovec_t support for zx_channel_write and zx_channel_call

This RFC introduces a new mode to zx_channel_write and zx_channel_call that
copies input data from multiple memory regions rather than from a single
contiguous buffer.

将您的更改通过电子邮件发送给最初的一组审核者。Fuchsia 工程委员会会自动收到有关 RFC 创建的通知。

如需详细了解如何在 Fuchsia 项目中创建更改,请参阅贡献更改

更改 RFC 提案的状态

您的更改通过审核流程后,Fuchsia 工程委员会会告知您提案是否被接受或拒绝。无论提案的最终状态如何,系统都会为您分配一个 RFC 编号,因此无论最终状态如何,提交每个提案都非常重要。

收到工程委员会的最终资质后,请执行以下操作:

  1. 在 RFC 文件(扩展名为 .md)中,修改为 RFC 分配的 name。例如,如果系统为您分配了 RFC-9999,则第一行应如下所示:

    
    {% set rfcid = "RFC-9999" %}
    
    
  2. 使用分配的 RFC 编号重命名您的 RFC 文件(扩展名为 .md)。例如,如果您获得的任务是 RFC-9999,请将文件重命名为 9999_<filename>.md

  3. //docs/contribute/governance/rfcs/_toc.yaml 中修改 RFC 的 TOC 条目以反映 RFC 编号。例如,如果系统为您分配了 RFC-9999,则您的条目可能如下所示:

    - title: "RFC-9999: My RFC proposal"
      path: /docs/contribute/governance/rfcs/9999_<filename>.md
    
  4. 更新 RFC 提案的元数据。如果您正确填写了初始元数据,则只需更新 docs/contribute/governance/rfcs/_rfcs.yaml 中的以下值。

    • name:使用分配的 RFC 名称。例如 "'RFC-9999'
    • file:使用您在上述步骤中使用的文件名。例如 '9999_<filename>.md'
    • status:使用分配给 RFC 的状态,可以是 'Accepted''Rejected'
    • reviewers:使用所做更改的审核者列表。例如,如果审核者是 abarth@google.com、cpu@google.com 和 vaas@google.com,则使用 ['abarth@google.com', 'cpu@google.com', 'vaas@google.com']
    • Reviewed:使用 RFC 批准或拒绝的日期(年-月-日)。例如,2020 年 3 月 15 日将为 '2020-03-15'

    已接受的 RFC 提案的元数据如下所示:

    - name: 'RFC-0010'
      title: 'zx_channel_iovec_t support for zx_channel_write and zx_channel_call'
      short_description: 'This RFC introduces a new mode to zx_channel_write and zx_channel_call that copies input data from multiple memory regions rather than from a single contiguous buffer.'
      authors: ['bprosnitz@google.com']
      file: '0010_channel_iovec.md'
      area: ['Zircon']
      issue: ['60623']
      gerrit_change_id: ['433621']
      status: 'Accepted'
      reviewers: ['cpu@google.com', 'kulakowski@google.com', 'abarth@google.com', 'pascallouis@google.com']
      submitted: '2020-09-25'
      reviewed: '2020-10-31'
    
  5. 使用 RFC 文件更新,为您的更改上传补丁。

  6. 申请获批后,请与教员一起提交您的 RFC。具体而言,教员必须为 CL +2。

您已成功提交 RFC 提案。