Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Bug 分級方針

本頁說明了在 Godot 的 GitHub 儲存庫上處理 Issue 與 PR (Pull Request) 的 Bug 分級團隊 (亦稱為 Bugsquad) 的一般工作流程。這個工作流程與 Bugsquad 一起發展,對於下列方針有任何修改建議都歡迎提出。

Issue 管理

GitHub 提供了各種管理 Issue 的功能:

  • 從預先定義的列表中設定一個或多個 Label (標籤)

  • 從預先定義的列表中設定 Milestone (里程碑)

  • 在專案 Dashboard (儀表板) 中持續追蹤 Issue

  • 將 Godot Engine 組織成員中其中一位貢獻者設定為「Assignee (負責人)」

由於 Godot Engine 在 GitHub 上的組織目前還只有有限的貢獻者,因此我們還沒很常用到負責人的功能。歡迎所有貢獻者參與,當遇到相關問題時在 Issue 上提出並與其他開發人員討論是解決問題最好的方法。。

目前我們也還沒使用到 Project Dashboard (專案儀表板) 功能。

我們會儘量給 Issue 與 PR 上加上 Label (必要的時候也會加上 Milestone)。

Label (標齊)

在 Godot 儲存庫中目前有設定下列 Label:

分類:

  • Archived: 封存。可能是與其他 Issue 重複或無效的 Issue。這種 Issue 也會被 Close (關閉)。

  • Breaks compat:用於描述需要破壞已有專案相容性才能修復的內容。

  • Bug: 代表某東西沒有正常運作。

  • Cherrypick:用於描述合併入 master 分支後還可以移植回穩定分支的內容。

  • Confirmed: 已確認。由至少一位除了回報 Bug 的人以外的開發者確認 (通常用於 Bug 回報)。設定該 Label 是要讓其他開發人員在要處理 Issue 時知道那些 Issue 目前仍可重現。因此,在註解中寫上能復現該 Issue 的平台與 Godot 版本或 Commit 是好習慣。當某個開發人員過了一年之後回來看這個 Issue,則 Confirmed Label 可能不再適用。

  • *Crash:*用於描述導致引擎當機的問題。這個標籤僅適用於“硬”當機,卡死不算。

  • Discussion: 討論。該 Issue 尚未取得共識,需要進一步討論以確認對於該議題確切該怎麼處理。

  • Documentation: 說明文件。與說明文件有關的 Issue。通常是要求要改進 API 說明文件。有關 ReadTheDocs 說明文件的 Issue 應開在 godot-docs 儲存庫內。

  • Enhancement: 改進。對現有功能的改進建議。

  • Feature proposal:用於描述實作新功能的願望。請注意 Godot 主倉庫不再接受功能請求。請換用 godot-proposals

  • For PR meeting:該問題需要在拉取請求會議中進行討論。會議是公開的,在 `Godot 貢獻者聊天 <https://chat.godotengine.org/>`_中舉行。

  • Junior job: 初階工作。我們 假設 該 Issue 很容易修正,因此對於想熟悉原始碼的初級貢獻者是再適合不過的工作了。

  • *High priority:*該問題非常重要,可能導致人們無法發行他們的專案或造成資料丟失。

  • Needs testing: 需要測試。該 Issue/PR 無法完整被測試,並需要進一步測試。這可能表示該 Issue 需要在不同的硬體或軟體設定上測試,甚至是測試所需要的重現步驟不一定的情況。

  • Needs rebase: 需要 Rebase。該 Issue 需要進行 Git Rebase 才能合併。

  • Performance: 直接影響引擎或編輯器性能的問題。也可用於改善性能或增加低端友好選項的拉取請求。不應與 Usability 可用性結合在一起。

  • GDScript: 與 GDScript 有關。

  • Regression: 在沒有表現出該錯誤的穩定版本發行之後,該錯誤出現。

  • Salvageable: 由於設計問題或合併衝突,該拉動請求不能被合併,其作者也不再活躍。然而,它仍然可以被一個外部貢獻者拾取,以使其達到可合併狀態。為此,您需要基於原始拉取請求打開一個新的拉取請求。

  • Tracker: 追蹤用。用來跟進其他 Issue 的 Issue (如所有與外掛系統有關的 Issue)。

  • Usability: 可用性。直接影響使用者可用性的 Issue。

這些分類用來對 Issue 進行一般性的分級。當有必要是這些 Label 也可能會組合使用,如某個用於提升可用性的 Issue 可以同時被標上 EnhancementUsability。某個未達共識或描述不夠精確的功能請求會同時被標上 Feature proposalDiscussion

主題:

  • 2D: 涉及 2D 特定問題。應該與下面的某個標籤組合使用,而不應該與 3D 組合。

  • 3D: 涉及 3D 特定問題。應該與下面的某個標籤組合使用,而不應該與 2D 組合。

  • Editor: 與編輯器有關的 Issue (主要為 UI)。

  • Assetlib: 與素材庫有關的 Issue。

  • Audio: 與音訊功能有關的 Issue (不論低階或高階)。

  • Buildsystem: 與建置有關的 Issue,可能與 SCons 建置系統或其他特定編譯器有關。

  • Codestyle:與程式碼庫所使用的程式設計風格有關。

  • Core: 任何與核心引擎有關的 Issue。如果是足夠大的主題,可能會進一步被拆分成多個 Issue。

  • Mono: 與 C# / Mono 繫結有關。

  • Editor: 與編輯器有關的 Issue (主要為 UI)。

  • GDScript: 與 GDScript 有關。

  • GDExtension:與本機擴充的 GDExtension 系統相關。

  • GDScript: 與 GDScript 有關。

  • Mono: 與 C# / Mono 繫結有關。

  • Import:與資源匯入系統有關。

  • GDScript: 與 GDScript 有關。

  • 多人遊戲:涉及多人遊戲(進階網路)系統。

  • Navigation:與導覽系統(包括 A* 和導覽網格)有關。

  • Network: 與網路有關。

  • 粒子著色器

  • Physics: 與物理引擎有關 (2D/3D)。

  • Plugin: 與撰寫外掛時遇到的問題有關。

  • Porting: 與某些特定平台有關。

  • Rendering: 與 2D、3D 渲染引擎有關。

  • Shaders:與 Godot 著色器語言或視覺化著色器有關。

  • Network: 與網路有關。

  • Thirdparty:與 Godot 所使用的協力廠商庫有關。

  • XR:與增強現實(AR)或虛擬實境(VR)有關。

Issue 通常只會對應到一個主題,雖然很難想像會有 Issue 同時符合兩個主題。主要的概念是希望每個主題背後都有專門的貢獻者團隊,這樣這些團隊就能各自專注於標上該主題標籤的 Issue。

平台:

Android, iOS, Linux, macOS, Web, Windows

預設情況下,我們都假設某個 Issue 適用於所有平台。但如果使用了其中一個平台的 Label,則表示剛才這個假設不適用 (也就是如這個 Bug 是在 Android 或 Linux 上才會出現的,那麼就加上這兩個平台)。

說明文件修改記錄

在這份文件之外,你可能也會想看看 Godot 的 demo 專案

  • Archived: 封存。可能是與其他 Issue 重複或無效的 Issue。這種 Issue 也會被 Close (關閉)。

  • Bug:現有頁面中的錯誤資訊。請勿對*缺失*資訊使用。

  • Cherrypick:用於描述合併入 master 分支後還可以移植回穩定分支的內容。

  • 依賴項:描述更新相依性檔案的拉取請求。

  • Discussion: 討論。該 Issue 尚未取得共識,需要進一步討論以確認對於該議題確切該怎麼處理。

  • Enhancememnt:為現有頁面加入新資訊。

  • Junior job: 初階工作。我們 假設 該 Issue 很容易修正,因此對於想熟悉原始碼的初級貢獻者是再適合不過的工作了。

  • Needs rebase: 需要 Rebase。該 Issue 需要進行 Git Rebase 才能合併。

  • Python:更新 Python 程式碼的拉取請求。

  • Salvageable: 由於設計問題或合併衝突,該拉動請求不能被合併,其作者也不再活躍。然而,它仍然可以被一個外部貢獻者拾取,以使其達到可合併狀態。為此,您需要基於原始拉取請求打開一個新的拉取請求。

  • Tracker: 追蹤用。用來跟進其他 Issue 的 Issue (如所有與外掛系統有關的 Issue)。

相機:

  • 關於:與檔案的「關於」部分和其他一般文章相關的問題和 PR。

  • Class reference:類參考的問題,非文件頁面。

  • 社區:與檔案的社區部分相關的問題和 PR。

  • 貢獻:與檔案的貢獻/開發部分相關的問題和 PR。

  • 入門:與檔案的入門部分相關的問題和 PR。

  • 手冊:與檔案的手冊/教學部分相關的問題和 PR。

常數

  • 圖片:涉及文章中過時或不正確圖像的問題和 PR。

  • 新頁面:與為新功能或未記錄功能建立新檔案頁面相關的問題和 PR 。

  • Organization:這個問題涉及移動頁面或者重新組織內容。

  • 校對:與校對檔案相關的問題和 PR。

  • 重定向:涉及移動內容和在後端新增重定向規則的問題和 PR。

  • 網站:與新增網站功能和修復錯誤相關的問題,無論是在前端或後端,

主題:

可用主題描述與主儲存庫中的主題相同的內容。

Milestone (里程碑)

Milestone (里程碑) 對應到現有 Godot 藍圖中已計劃的未來版本。當有 Issue 符合這個藍圖中的計劃,則應該列在相應的 Milestone 中。如果是不對應任何目前藍圖的 Issue,就應該保持沒有 Milestone 的狀態。依照經驗法則,如果 Issue 涉及在 Milestone 中的新功能、任何絕對不該在未來穩定版更新中出現的 Bug、或是任何 Juan 馬上就想處理的東西,就該對應到相關 Milestone :)

不管 Issue 設定了什麼 Milestone,都歡迎貢獻者自由選擇 Issue 處理。若是某個不緊急且沒設定 Milestone 的 Bug 也依然歡迎處理。