PEP 407 – 新的釋出週期和引入長期支援版本
- 作者:
- Antoine Pitrou <solipsis at pitrou.net>, Georg Brandl <georg at python.org>, Barry Warsaw <barry at python.org>
- 狀態:
- 推遲
- 型別:
- 流程
- 建立日期:
- 2012年1月12日
- 釋出歷史:
- 2012年1月17日
摘要
為開源專案找到一個釋出週期是一個微妙的練習,需要管理相互矛盾的約束:開發人員人力、釋出管理志願者的可用性、使用者和第三方打包人員的維護便利性、新功能(和行為更改)的快速可用性、在不引入新功能或行為更改的情況下提供錯誤修復的可用性。
當前的釋出週期偏於保守。它適用於那些重視穩定性而非響應性的人。本PEP試圖透過引入長期支援版本的概念,在保持Python已成為標誌的穩定性的同時,提供更流暢的功能釋出。
範圍
本PEP不嘗試更改2.7分支的維護週期或釋出方案。只考慮3.x版本。
提案
在擬議的方案下,將有兩種功能版本(有時稱為“次要版本”,例如3.2或3.3):普通功能版本和長期支援(LTS)版本。
普通功能版本將獲得零個或最多一個錯誤修復版本;後者僅在需要修復關鍵問題時。這些分支的安全修復處理需要決定。
LTS版本將獲得常規錯誤修復版本,直到下一個LTS版本釋出。然後它們將進入安全修復模式,直至釋出經理酌情決定的終止日期。
週期性
每X個月釋出一個新功能版本。我們初步建議X = 6個月。
LTS版本將是N個功能版本中的一個。我們初步建議N = 4。
按照這些數字,一個新的LTS版本將每24個月釋出一次,並在接下來的24個月內獲得支援,直到下一個LTS版本。這與今天的每個功能版本18個月的錯誤修復週期略有相似。
預釋出版本
更頻繁的功能釋出意味著每次釋出中破壞性更改的數量更少。因此,預釋出版本(alpha和beta)的數量可以大大減少。在常規情況下,兩個alpha版本和一個beta版本可能就足夠了。釋出候選版本的數量,一如既往,取決於最終釋出前最後時刻修復的數量。
影響
對開發週期的影響
更多的功能釋出可能意味著開發和釋出管理團隊面臨更大的壓力。這透過減少預釋出版本的數量在數量上得到緩解;並透過減少破壞性更改的數量(意味著更小的潛在破壞)在質量上得到緩解。較短的功能凍結期(從第一個beta版本到最終釋出)更容易接受。在功能凍結前匆忙新增功能的現象也應該大大減少。
對錯誤修復週期的影響
根據擬議的數字,對錯誤修復的影響應該最小。同時開放進行錯誤修復維護的分支數量將保持不變(直到2.x終止,然後是一個)。
對工作流程的影響
新功能的工作流程將相同:開發人員只會將它們提交到default分支。
錯誤修復的工作流程將略有更新:開發人員會將錯誤修復提交到當前的LTS分支(例如3.3),然後將它們合併到default。
如果某個非LTS版本需要一些關鍵修復,可以從當前LTS分支移植到非LTS分支,就像今天將修復從3.x移植到2.7一樣。
對社群的影響
重視穩定性的人可以只同步LTS版本,根據擬議的數字,這將提供相似的支援週期(無論是在持續時間還是穩定性方面)。
重視響應性和訪問新功能(不冒安裝alpha版本或Mercurial快照的風險)的人將從新的釋出週期中獲得比當前更大的價值。
希望貢獻新功能或改進的人將更有動力這樣做,因為他們知道自己的貢獻將更快地提供給普通使用者。此外,較短的功能凍結期使得與功能貢獻者互動變得不那麼繁瑣。
討論
這些是應在討論期間解決的開放問題
- 決定X(功能釋出之間的月數)和N(每個LTS釋出的功能釋出數),如上所述。
- 對於給定的X和N值,非LTS版本不進行錯誤修復釋出的策略是否可行?
- 安全修復的策略是什麼?
- 限制新語法和類似更改(即,PEP 3003禁止的所有內容)僅限於LTS版本?
- 對Linux發行版等打包者有何影響?
- 釋出版本號或其他識別和營銷材料將如何向用戶明確哪些版本是普通功能版本,哪些是LTS版本?我們如何管理使用者期望?
- 更快的釋出週期是否意味著我們有一天會達到3.10及以上版本?有些人表達了一種預設的期望,即版本號總是適合一個十進位制數字。
在做出最終決定之前,進行社群投票或調查以收集更廣泛的Python社群的意見將很有價值。
版權
本文件已置於公共領域。
來源:https://github.com/python/peps/blob/main/peps/pep-0407.rst