Fedora 提出統一流程,棄用上千 Python 2 軟體包更可控
Fedora 社群正在討論棄用 Python 2 軟體包的統一流程。
Python 2 將於 2020 年 1 月 1 日正式退休,官方不再提供維護,當前倒計時不斷縮短,但 Fedora 中還有一千多個軟體包依賴於 Python 2,一旦失去 Python 2 上游支援,那麼系統中的這些遺留軟體包的維護問題將變得很嚴峻,甚至根本無從下手。
為了解決這個問題,儘早去掉對 Python 2 的依賴,把基於 Python 2 的軟體包都移除是最佳選擇。但是實際操作起來會比較麻煩,並且可能對系統造成破壞性變更,於是 Fedora 的幾位開發者提交了一項棄用 Python 2 軟體包的統一流程提案,希望移除 Python 2 軟體包更具可控性,讓 Python 2 退休的影響降低。
該提案具體分情況描述了幾個流程,主要涉及到針對 Python 2 subpackage(子包)、module(模組) 與 requirement(執行環境依賴)等幾個方面的處理:
- 通過類似於孤立的過程,Python 2 子包可以很容易棄用。
- 沒有其它功能的 Python 2 模組將被刪除。
- 非必要的環境依賴將被刪除。
- Fedora 社群將收集資訊以幫助“專案管理”。
- 將從系統中刪除不可安裝的 Python 2 包。
具體來看,
棄用 Python 2 子包
如果維護者不再希望維護專案的 Python 2 部分(例如 python2- * 子包),那麼對整個包進行孤立/退役會很容易,而如果不是整體打包棄用,想採用以下兩種方式,那麼很麻煩:
- 只刪除 Python 2 部分,這可能會破壞依賴包。
- 將 Python 2 部分拆分為一個單獨的元件,這需要通過正式稽核。
此提案引入以下正式流程,將會更加容易棄用 Python 2 部分:
- 維護者不打包 Python 2 部分,但必須為其他人提供選擇。
- 在拆分之前,必須對 Python 2 部分進行條件化(主要是為了幫助其他人找到它們)。
- 一些具有拆分出的 Python 2 部分的包不進行稽核。
- 如果有任何東西取決於 Python 2 部分,那麼在它們被刪除之前進行相關宣告。
- 有 3 周時間等待回覆電子郵件。(孤立和退休一個包之間的正常時間是 6 周。)
移除模組
只提供 Python 2 可匯入模組的包/子包將被刪除,除非有其它包依賴於它們。
移除環境依賴
如果一個環境依賴(包括 Requires 和 BuildRequires)是僅支援 Python 2 的,並且對軟體包的功能和質量幾乎沒有影響,那麼它將被刪除。比如:
- 很少使用的功能的測試,比如一個 BuildRequire 一個框架但只是測試與該框架的整合。
- 非必要的只用於測試的功能,比如用於分散式多程序測試的測試 runner 外掛。
- 效能增強。
- Linter 和程式碼樣式檢查器。
- 程式碼和內容生成器。
在可能的情況下將嘗試切換到這些依賴項的 Python 3 版本,而不是直接將其刪除。
此提案如果獲得批准,那麼將對 Fedora 31 生效,作者指出,此提案只是更加可控版本的對 Python 2 包進行孤立,對此提案中的流程有不同看法的開發者,可以有以下幾種選擇:
- 向 Python SIG 提出反對意見。
- 提交對些提案的修改建議。
- 現在接管 Python 2。
- 表示有興趣維護 Python 2,或者忽略此提案。
完整提案: https://fedoraproject.org/wiki/Changes/F31_Mass_Python_2_Package_Removal