設計文件

回報問題 查看原始碼 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

如果您打算新增、變更或移除面向使用者的功能,或是對 Bazel 進行重大架構變更,則必須撰寫設計文件並經過審查,才能提交變更。

以下列舉一些重大變更:

  • 新增或刪除原生建構規則
  • 原生規則的破壞性變更
  • 變更原生建構規則語意,影響更多 超過一項規則
  • Bazel 的規則定義 API 異動
  • Bazel 用來連線至其他系統的 API 有所異動
  • Starlark 語言、語意或 API 的變更
  • 可能會對 Bazel 效能或記憶體用量造成全面性影響的變更 (無論是好是壞)
  • 大量使用的內部 API 變更
  • 標記和指令列介面變更。

設計審查的原因

撰寫設計文件時,您可以與其他 Bazel 開發人員協調,並向 Bazel 核心團隊尋求指引。舉例來說,如果提案新增、移除或修改 BUILD、WORKSPACE 或 bzl 檔案中可用的任何函式或物件,請將 Starlark 團隊設為審查者。我們會在提交前審查設計文件,原因如下:

  • Bazel 是一個非常複雜的系統,看似無害的本機變更可能會對整體產生重大影響。
  • 團隊收到許多使用者要求的功能要求;一律需要 評估時,不只評估技術可行性,也重視 或是提出其他功能要求
  • Bazel 功能往往是由核心團隊以外的人員實作; 這些貢獻者在 Bazel 專業知識的程度上各有不同
  • Bazel 團隊本身擁有不同程度的專業知識,沒有任何一位團隊成員能完全瞭解 Bazel 的每個層面。
  • Bazel 的異動必須考量回溯相容性,避免中斷 並輸入變更內容

Bazel 的設計審查政策有助於盡可能提高以下情況:

  • 所有功能要求都會先接受以基準級審查。
  • 也就是我們的設計原則 可能無法執行

為協助您踏出第一步,請參閱 Bazel Ideas Repository。 設計仍在開發中,因此實作細節可能會隨著時間和意見回饋而變更。發布的設計文件會擷取初始設計 而不會在設計過程中持續做出變更。請務必參閱說明文件,瞭解目前的 Bazel 功能。

貢獻者工作流程

身為貢獻者,您可以撰寫設計文件、傳送提取要求,以及 為您的提案請求審查人員

撰寫設計文件

所有設計文件都必須具有包含以下內容的標頭:

  • 作者
  • 上次重大變更的日期
  • 審查員清單,包括一位 (且僅一位) 主審審查員
  • 目前狀態 (草稿審查中已核准已拒絕正在執行已執行)
  • 討論串連結 (將於公告後新增)

您可以將文件設為可供所有人閱讀的 Google 文件,也可以使用 Markdown 編寫文件。請參閱下方 Markdown 與 Google 文件比較

如果提案對使用者的影響不可見,就必須提供部分 對回溯相容性的影響 以及視需要推出發布計畫

建立提取要求

建立提取要求 (PR) 來將文件加入 在提交要求中加入 Markdown 檔案或文件連結。

盡可能選擇主要審查者,並將其他審查者設為副本收件人。如果您未選擇主要審查者,Bazel 維護者會為您的 PR 指派一位審查者。

建立公關後,審查人員可以在 審查。舉例來說,待開發客戶審查人員可以建議其他評論者,或是 找出遺漏的資訊待開發客戶審查者在核准 PR 時核准 我們認為審查程序可以啟動這不表示提案是完美的 或核准後放送這表示提案所包含的資訊 即可開始討論

宣布新提案

傳送公告給 bazel-dev 代表 PR 已提交

您可以複製其他群組 (例如 bazel-discuss 取得 Bazel 使用者的意見回饋)。

與審查人員進行多次討論

任何有興趣的使用者都能對您的提案加註。嘗試回答問題、說明提案內容,並解決疑慮。

應在公告討論串中進行討論。如果提案內容位於 Google 文件中,可以改用註解 (請注意,匿名註解是允許的)。

更新狀態

在迭代完成後,建立新的 PR 來更新提案狀態。將 PR 傳送給同一位主要審查人員,並將其他審查人員設為副本。

如要正式接受提案,待開發客戶審查人員會在下列時間點過後核准 PR 確保其他審查員同意我們的決定。

首次發布公告和核准提案之間,必須至少相隔 1 週。這樣一來,使用者就能有足夠的時間閱讀文件,並表達自己的疑慮。

導入作業可以在接受提案前開始進行,例如 概念驗證或實驗不過,您無法提交變更 以免審查完成

選擇待開發客戶審查者

待開發客戶審查人員必須是下列領域的專家:

  • 充分瞭解相關子系統
  • 客觀且能提供建設性的意見
  • 可在整個審查期間使用,以主導審查程序

建議您查看聯絡人的各種團隊標籤

Markdown 與 Google 文件

由於兩種系統都接受評估,請找出最適合您的方式。

使用 Google 文件的優點:

  • 這類活動適合腦力激盪,因為操作簡單。
  • 協作式編輯。
  • 快速疊代。
  • 輕鬆提出修改建議。

使用 Markdown 檔案的好處:

  • 乾淨用於連結的網址。
  • 明確記錄修訂版本。
  • 請勿忘記在發布連結前設定存取權。
  • 輕鬆透過搜尋引擎搜尋資料。
  • 未來可靠:純文字不受任何特定工具的限制,也不需要網際網路連線。
  • 即使作者不再身邊,您也可以更新這些條款。
  • 這些資料可以自動處理 (更新/偵測無效連結、擷取作者清單等)。

您可以選擇先在 Google 文件中進行疊代作業,然後轉換成 的 Markdown。

使用 Google 文件

為保持一致性,請使用 Bazel 設計文件範本。 其中包含必要的標頭,並與其他 Bazel 相關文件建立視覺一致性。如要這麼做,請依序點選「檔案」>「建立副本」,或點選這個連結來建立設計文件範本的副本

如要讓所有人都能閱讀你的文件,請依序點選「分享」>「進階」>「變更」,然後選擇「開啟 - 任何知道連結的使用者」。如果你允許在文件中加註 任何人都可以匿名留言,即使沒有 Google 帳戶也不例外。

使用 Markdown

文件會儲存在 GitHub 上,並使用 GitHub 的 Markdown 格式 (規格)。

建立 PR 即可更新現有文件。文件審查人員應審查重大變更。三重變更 (例如錯字、格式) 則可由所有人核准

審查者工作流程

審查者的留言、審查和核准設計文件。

一般審查者責任

您負責審查設計文件、視需要要求提供額外資訊,以及核准通過審查程序的設計。

收到新提案時

  1. 快速查看這份文件。
  2. 如果缺少重要資訊,或設計不符合專案目標,請在評論中指出。
  3. 建議其他審查者。
  4. 當 PR 準備就緒時,請予以核准。

在審查期間

  1. 與設計作者對話,討論有問題或需要說明的問題。
  2. 如有需要,請邀請非審查者提供意見,他們應會瞭解設計內容。
  3. 決定作者必須回覆哪些留言,才能獲得核准。
  4. 如果您對提案目前的狀態感到滿意,請在討論串中寫下「LGTM」(Looks Good To Me)。

請按照這個程序處理所有設計審查要求。如果設計並未列入設計索引,請勿核准會影響 Bazel 的設計。

待開發客戶審查人員的責任

您必須自行負責在實作時做出 / 不做決定 以及尚待設計的設計初衷如果無法執行此操作,請找出適當的代理人 (將 PR 重新指派給代理人),或將錯誤重新指派給 Bazel 管理員,以便進一步處理。

在審查期間

  1. 確保註解和設計反覆程序能繼續執行 建構出建構元件
  2. 在獲得核准前,請務必解決其他審查人員提出的疑慮。

所有審查者核准後

  1. 請確保您發布公告後至少有 1 週 郵寄清單。
  2. 請確認 PR 更新了狀態。
  3. 核准提案作者傳送的 PR。

拒絕設計

  1. 確認 PR 作者會傳送 PR;或是傳送 PR 給他們
  2. PR 會更新文件的狀態。
  3. 在文件中新增註解,說明為何無法以目前狀態核准設計,並概略說明後續步驟 (例如「重新檢查無效的假設並重新提交」)。