建立 RFC

熟悉 RFC (留言要求) 程序與標準後,建議您建立提案,讓 Fuchsia Eng Council 進行審查。

如要建立 RFC,您需建立至少包含以下三個檔案的 Gerrit 變更:

建立中繼資料

RFC 的中繼資料定義了許多值,用來填入 RFC 總覽的 RFC 資訊。

如要識別 RFC,您必須編輯 docs/contribution/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,並提供 id0001Fuchsia 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
  • 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 的問題清單。如果您沒有「問題」編號,請將這個值留空:[]

  • 如果是單一問題,請使用 ['問題'] 格式。
  • 如有多個問題,請使用此格式 ['問題 1', ...]
gerrit_change_id必要

異常變更的 id,包含您的 rfc。這些是所在地區變更網址的最終數字。舉例來說,如果變更的網址為 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. 使用文字編輯器編輯檔案時,您需要編輯範本的第一行,該範本包含含有 rfcid 變數的 RFC 的 name。例如,如果您的 name"RFC-NNNN",第一行會如下所示:

    
    {% set rfcid = "RFC-NNNN" %}
    
    
  3. 在 ## 摘要標頭後方,填寫 RFC 的不同部分。

填妥 Markdown 檔案後,即可在目錄中建立 RFC 項目。

建立一個 _toc.yaml 項目

建立 RFC 的中繼資料並建立 Markdown 檔案後,您就可以在 TOC (目錄) 中列出 RFC。

如要新增 TOC 項目:

  1. 編輯 //docs/contribution/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 號碼,因此無論最終狀態為何,您都必須提交每個提案。

收到 Eng Council (工程委員會) 的最終狀態後,請執行下列操作:

  1. 在 RFC 檔案 (.md 副檔名) 中,編輯指派給 RFC 的 name。舉例來說,如果獲派 RFC-9999,第一行程式碼應如下所示:

    
    {% set rfcid = "RFC-9999" %}
    
    
  2. 使用指派的 RFC 號碼重新命名 RFC 檔案 (.md 副檔名)。舉例來說,如果已指派 RFC-9999,請將檔案重新命名為 9999_<filename>.md

  3. //docs/contribution/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/optimize/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。具體來說,講師必須 +2 CL。

您已成功提交 RFC 提案。