创建 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 名称。例如: 您可以使用 file 0001_rfc_process.md(表示 RFC,其中包含一个 第 id 张,共 0001 张;标题为 Fuchsia Request for Comments (RFC) process

area必需

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

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

有效区域

有效区域 <ph type="x-smartling-placeholder">
    </ph>
  • 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, 使用的 gerrit_change_id366393

submitted必需

year-month-day 格式。

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 创建元数据后,您就可以开始编写了 一个 Markdown 文件,其中包含您的 RFC。

创建 Markdown 文件

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

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

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

  2. 使用文本编辑器编辑文件时,您需要编辑文件的第一行 模板的代码,其中包含 rfcid 变量,且该变量的 name RFC。例如,如果您的 name"RFC-NNNN",则第一行类似于 以下:

    
    {% set rfcid = "RFC-NNNN" %}
    
  3. 填写您 RFC 的不同部分, ## Summary 标题。

填写完 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 文件并添加目录后 接下来,您可以创建一项更改以供审核了。

更改的提交消息的第一行必须是 [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 Eng Council 会通知您提案是被接受还是被拒绝。无论 提案的最终状态,您将分配到一个 RFC 编号,该编号为 无论最终状态如何,都需要提交每个提案

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

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

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

  3. 请在以下位置编辑 RFC 的 TOC 条目: //docs/contribute/governance/rfcs/_toc.yaml 以反映 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 提案。