NEP 6 — 以不同的錯誤追蹤器取代 Trac#
- 作者:
David Cournapeau, Stefan van der Walt
- 狀態:
延遲
numpy 和 scipy 的一些發布管理員越來越不滿意目前的工作流程,特別是在錯誤追蹤方面。本文件試圖解釋一些有問題的情境、目前的 trac 限制,以及可以如何處理。
情境#
新版本發布#
版本發布的工作流程大致如下:
找出上次版本發布以來的所有已知回歸錯誤,並修復它們
了解自上次版本發布以來報告的所有錯誤
分類回歸錯誤/阻礙問題/等等的錯誤,並將它們分配到相應的藍圖、子套件和維護者。
聯絡子套件維護者
在 scipy 上使用的目前 trac 中,這些任務大多效率很低。
很難追蹤問題。特別是,每次進入 trac,我們都不太清楚哪些是新的,哪些不是。如果你把問題想成電子郵件,目前的情況就像沒有已讀/未讀功能。
批次處理問題:同時更改多個問題的特性很困難,因為唯一可用的 UI 是基於網頁的。對於這種情境,基於命令列的 UI 效率更高。
更廣泛地說,使用目前部署的 trac 產生有用的報告非常笨拙。Trac 0.11 可能會解決這些問題,但它必須比 scipy 網站上實際部署的版本好得多。尋找帶有修補程式的問題、舊修補程式等等,以及製作報告必須比現在更流暢。
子組件維護者#
假設你是 scipy.foo 的維護者,那麼你主要感興趣的是只接收關於 scipy.foo 的錯誤。但一般團隊應該可以輕鬆追蹤你的工作 - casual 使用者(例如,非開發人員)也應該可以輕鬆追蹤一些新功能的開發進度。
程式碼審查,新提交的程式碼#
目標很簡單:盡可能降低門檻,並確保人們知道在每個步驟中該做什麼來貢獻 numpy 或 scipy。
目前,修補程式在 trac 中擱置太久。當然,缺乏時間是一個主要原因;但追蹤新貢獻的過程可以變得更簡單。
應該可以只針對 numpy/scipy 的子集接收審查通知。
對修補程式感興趣的人應該可以追蹤其進展。評論,以及「迷你」時間軸可能很有用,特別是對於大型問題(從程式碼的角度來看是大型的)。
目前 trac 的限制#
注意:trac 指的是目前部署的版本。一些較新的版本可能會解決其中一些問題。
多專案支援:我們有三個 trac 實例,一個用於 scipy,一個用於 numpy,一個用於 scikits。建立帳戶、維護和更新每個帳戶都是維護負擔。沒有人喜歡做這種工作,所以任何可以減輕負擔的事情都是加分項。此外,numpy 的錯誤經常在 scipy trac 上填寫,反之亦然。目前你必須手動處理這些情況。
不是基於網頁 UI 的客戶端。這可以透過 xmlrpc 外掛程式 + 一些客戶端來實現。特別是,對於喜歡 IDE 的人來說,像 http://tracexplorer.devjavu.com/ 這樣的东西可能很有趣。至少有一個人表示他希望盡可能與 Eclipse 整合。
強大的查詢:應該可以快速找到兩個版本之間的 issue、指定日期以來的新 issue、帶有修補程式的 issue、等待審查的 issue 等等。issue 資料必須是可自訂的,因為大多數錯誤追蹤器不支援審查之類的功能,因此我們需要自行處理(透過標籤等等)。
將 issue 標記為已讀/未讀。任何使用者也應該可以「遮罩」 issue 以忽略它們。
ticket 依賴性。根據我的經驗,這對於可以拆分成多個 issue 的大型功能非常有幫助。藍圖只能由 trac 管理員建立,而且它們有點笨重。
可能的候選方案#
更新後的 trac + 外掛程式#
優點
相同的系統
用 Python 寫成,所以如果我們想 hack 它的話就可以。
缺點
Trac 的目標是基礎功能,並透過外掛程式擴展。但大多數外掛程式都已損壞,或未更新。關於哪些外掛程式成熟的資訊不容易取得。
至少 scipy.org 的 trac 很慢,而且需要不斷重新啟動。這簡直無法接受。
Redmine#
優點
支援大多數功能(除了 xmlrpc?)。多專案等等…
(主觀地說):我 (cdavid) 覺得 Redmine 的開箱即用體驗更令人愉快。更多資訊更容易取得、更少的點擊、更流暢。請參閱 https://redmine.dev.org.tw/wiki/redmine/TheyAreUsingRedmine 以取得範例。
從 trac 轉換的腳本(目前還沒有 numpy/scipy 的經驗)。
社群似乎很友善,並且完成了許多功能。
缺點
新系統,較不成熟?
用 Ruby 寫成:由於我們是一個 Python 專案,大多數開發人員都熟悉 Python。
Wiki 整合等等…?
未知
xmlrpc API
效能
維護成本
Roundup#
待辦事項