建立 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 標題的 ID。

在收到 RFC 名稱之前,請使用 NNNN 做為數字部分,例如 NNNN_file。完成 RFC 審查後,您會收到 RFC 名稱。舉例來說,您可以為 RFC 使用 0001_rfc_process.mdfile,其中 id0001,標題為 Fuchsia Request for Comments (RFC) process

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
  • Identity
  • Kernel
  • Languages and Libraries
  • Media
  • Memory
  • Metrics
  • Netstack
  • Performance
  • Power
  • Recovery
  • Security
  • Software Assembly
  • Software Delivery
  • Storage
  • System
  • Testing
  • Toolchain
  • UI
  • Virtualization
  • Web
  • WLAN
issue必填

https://fxbug.dev/ 中定義追蹤 RFC 的問題清單。 如果您沒有「issue」編號,可以將這個值留空,[]

  • 如要回報單一問題,請使用以下格式 ['issue']。
  • 如果有多個問題,請使用以下格式 ['issue1', ...]
gerrit_change_id必填

包含 RFC 的 gerrit 變更的 id。這些是 gerrit 變更網址的最後幾碼。舉例來說,如果變更的網址為 https://fuchsia-review.googlesource.com/c/fuchsia/+/366393,請使用 366393gerrit_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. 使用文字編輯器編輯檔案時,您需要編輯範本的第一行,其中包含含有 RFC 的 namerfcid 變數。舉例來說,如果 name"RFC-NNNN",第一行會如下所示:

    
    {% set rfcid = "RFC-NNNN" %}
    
    
  3. 在 ## Summary 標題後方,填寫 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 Eng Council 會自動收到 RFC 建立通知。

如要進一步瞭解如何在 Fuchsia 專案中建立變更,請參閱「提供變更」一文。

變更 RFC 提案的狀態

變更完成審查程序後,Fuchsia Eng Council 會通知您提案是否獲得核准。無論提案的最終狀態為何,系統都會指派 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 提案。