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