Go Wiki: 處理問題

本文件解釋了我們在 Go 專案的問題跟蹤器 中如何處理問題分類和排程。

問題狀態

任何問題都必須處於以下狀態之一。專案貢獻者會移動問題從一種狀態到另一種狀態。這些明確的狀態背後的意圖是描述將問題解決到最終狀態所需的(最低)後續步驟。問題可以按任何順序在狀態之間移動,具體取決於特定問題的需求。

  • 問題已提交。
  • 格式可能不正確(標題等)。
  • 要從此狀態轉換,需要有人清理問題報告,並可選擇性地抄送可能最適合調查或修復問題的人。

需要調查

  • 格式正確。
    • 標題具有路徑字首。
    • 正文描述了問題。
  • 有一個里程碑。
    • 如果問題不重要,可以將里程碑設定為 Backlog。否則,將其設定為下一個即將釋出的版本。
  • 具有 NeedsInvestigation 標籤。
    • 如果調查者正在等待某人(例如,問題報告者)提供更多資訊,也可能具有 WaitingForInfo 標籤。
  • 要從此狀態轉換,需要有人檢查問題並確認它是有效的且不是現有問題的重複。

需要決策

  • 問題是真實的,但我們不確定該採取什麼行動。
    • 可以在 Go 1 中解決該問題。
    • 在做出修復之前,需要獲得專家、貢獻者和/或社群的反饋。
    • 請注意,大多數問題永遠不會轉換到此狀態,因為大多數情況下,決策都是顯而易見的“是的,應該修復”。
  • 有一個里程碑。
  • 具有 NeedsDecision 標籤。
    • 可能具有 WaitingForInfo 標籤。
    • 可能具有 Blocked 標籤,如果進展取決於另一個問題的解決或 Go 未來版本的釋出。應附帶評論解釋阻塞原因。
    • 不得具有 Go2 標籤。(這些問題將單獨處理。)
  • 要從此狀態轉換,需要有人決定如何解決該問題。
    • 如果決策很複雜,該問題可以被賦予一個 Proposal 標籤。該問題在此狀態下保持,直到提案流程完成,如果被批准,則移至 NeedsFix

需要修復

  • 解決方法已知,但工作尚未完成。
  • 有一個里程碑。
  • 具有 NeedsFix 標籤。
    • 可能具有 BlockedWaitingForInfo 標籤。
  • 要從此狀態轉換,需要有人完成修復問題的工作。

修復待定

  • 有一個修復該錯誤的 CL,尚未提交,但已透過 TryBots。
  • 不應具有 BlockedWaitingForInfo 標籤。

已修復

  • 問題已解決。不再需要進一步關注。
  • 問題已關閉。

提案

  • 有關提案流程,請參閱下文。

問題會根據需要從一種狀態轉移到另一種狀態。例如,貢獻者可以提交一個問題,將其分配給自己,並立即應用 NeedsFix 標籤。或者,一個問題可以從 NeedsDecision 轉移到 NeedsFix,但隨著複雜性的出現,之後又會移回 NeedsDecision

問題可以在任何時候關閉,並附帶評論說明關閉原因(“已修復…”,“重複…”,“按預期工作”等)。

在任何狀態下(New 除外),問題都可以分配給某人。未分配的問題被視為任何人都可以處理。

里程碑

里程碑描述了問題解決的時間表。

  • Go1.x.y

    計劃在 1.x.y 版本中修復。

  • Go1.x.y,帶有 release-blocker 標籤

    必須在 1.x.y 版本中修復,或明確推遲到更高版本。

  • 提案

    是一個提案,與特定版本無關。

  • 待辦事項

    有人計劃處理它,但尚未分配給任何版本里程碑。

  • 未計劃

    將來可能會修復,但目前沒有人計劃這樣做。

  • 未釋出

    不包含在釋出中或釋出不需要。

  • Gccgo

    針對 gccgo 問題。

可以使用額外的里程碑來管理特定的專案工作。

“Soon”標籤獨立於里程碑使用,表示問題具有時效性。

Proposals

對語言或標準庫 API 的更改需要透過 提案流程。在問題跟蹤器中,提案通常會帶有 Proposal 標籤並處於 Proposal 里程碑。

一項提議了與庫的向後不相容的更改的提案將帶有 v2 標籤,這意味著它只能在包的 v2 版本(或遙遠的未來,v3 版本)可用時被採納。

一項提議了語言更改的提案應帶有 LanguageChange 標籤。小的語言更改作為常規提案流程的一部分進行處理。較大的語言更改由語言審查流程處理;這些問題應帶有 LanguageChangeReview 標籤。


此內容是 Go Wiki 的一部分。