PEP 13 – Python 語言治理
- 作者:
- The Python core team and community
- 狀態:
- 作用中
- 類型:
- 流程
- 主題:
- 治理
- 建立日期:
- 2018-12-16
摘要
本 PEP 定義了 Python 的正式治理流程,並記錄了其隨時間的演變過程。目前,治理工作是以指導委員會為核心。委員會擁有廣泛的權力,但他們致力於將這些權力的行使降至最低。
當前指導委員會
2025 年任期指導委員會成員包含:
- Barry Warsaw
- Donghee Na
- Emily Morehouse
- Gregory P. Smith
- Pablo Galindo Salgado
根據 PEP 8106 中記錄的投票結果。
核心團隊成員名單詳見私有倉庫 https://github.com/python/voters/,該名單透過 https://devguide.python.org/developers/ 公開分享。
規範
指導委員會
組成
指導委員會為一個 5 人委員會。
授權範圍
指導委員會應致力於:
- 維護 Python 語言與 CPython 解釋器的品質與穩定性,
- 使貢獻過程盡可能地親近、包容且永續,
- 正式化並維護核心團隊與 PSF(Python 軟體基金會)之間的關係,
- 為 PEP 建立合適的決策流程,
- 在採取正式行動前,尋求貢獻者與核心團隊之間的共識,
- 在所有其他途徑皆無效的情況下,作為「最終上訴法院」進行裁決。
權力
委員會擁有對專案決策的廣泛權力。例如,他們可以:
- 接受或拒絕 PEP
- 強制執行或更新專案的行為準則
- 與 PSF 合作管理任何專案資產
- 將部分權力委託給其他小組或流程
然而,除非透過本 PEP 指定的機制,否則他們無法修改本 PEP,也無法影響核心團隊的成員構成。
委員會應尋求盡可能減少行使這些權力的方法。比起投票,尋求共識更好。比起對個別 PEP 進行裁決,定義標準的 PEP 決策流程(例如,採納 801x 系列中的其他 PEP)更好。建立行為準則委員會比對個別案件進行裁決更好。以此類推。
為了行使權力,委員會需進行投票。每位委員會成員必須投票或明確表示棄權。在特定投票中存在利益衝突的成員必須棄權。投票通過需要非棄權委員會成員的絕對多數支持。
委員會的審議與投票應盡可能公開進行。
委員會選舉
委員會選舉分為兩個階段:
- 第一階段:候選人宣佈其服務意願。候選人必須由一名核心團隊成員提名。允許自薦。
- 第二階段:每位核心團隊成員可以為每位候選人分配 0 到 5 顆星。投票以匿名方式進行。投票結果使用 STAR 投票系統決定,並修改為使用 多勝選者區塊 STAR (Multi-winner Bloc STAR) 方法。若出現平手,可由候選人之間協商解決,否則將由隨機方式選出獲勝者。
每個階段持續一至兩週,由即將卸任的委員會酌情決定。首次選舉時,兩個階段各持續兩週。
選舉流程由即將卸任的指導委員會提名的一名選務官員管理。首次選舉時,選務官員將由 PSF 執行董事提名。
委員會應理想地反映 Python 貢獻者與使用者的多樣性,並鼓勵核心團隊成員據此投票。
任期
新委員會在每次功能版本發布後進行選舉。每屆委員會的任期從選舉結果最終確定時開始,直到下一屆委員會任期開始為止。任期無限制。
職缺
委員會成員可隨時辭職。
在常規任期內若出現職位空缺,委員會可投票任命替補人員完成剩餘任期。
若某位委員會成員失聯一個月或更久,委員會其餘成員可投票更換該成員。
利益衝突
雖然我們相信委員會成員會以 Python 而非個人或其雇主的最佳利益行事,但單一公司主導 Python 開發的現象本身可能有害並損害信任。為了避免任何利益衝突的嫌疑,委員會中最多僅能有 2 名成員來自同一雇主。
在委員會選舉中,若前 5 名得票者中有 3 人來自同一雇主,則其中排名最低者將失去資格,並由第 6 名候選人遞補進入前 5 名;此過程重複進行直到形成合法的委員會為止。
在任期內,若因情況變化導致此規則被打破(例如委員會成員更換工作),則必須有一名或多名成員辭職以解決問題,隨後產生的空缺可按正常程序填補。
移除核心團隊成員
在特殊情況下,可能需要違背意願地將某人從核心團隊中移除。(例如:嚴重且持續違反行為準則。)這可以透過指導委員會投票達成,但與其他指導委員會投票不同,這需要至少三分之二的多數支持。若 5 名成員參與投票,代表 3:2 的票數不足以通過,必須至少有 4:1 的票數支持方能成功。此外,這是指導委員會唯一不可委託的權力,且在不信任投票進行期間不得行使此權力。
若被移除的核心團隊成員同時也是指導委員會成員,則他們也將被移除出指導委員會。
不信任投票
在特殊情況下,核心團隊可以透過不信任投票移除在職的委員會成員,或整個委員會。
不信任投票由核心團隊成員在合適的專案通訊管道公開提出發起,並在該提案提出一週內由另一位核心團隊成員附議即觸發。
投票持續兩週。核心團隊成員進行贊成或反對投票。若至少三分之二的投票者表示不信任,則投票成功。
不信任投票有兩種形式:針對單一成員,以及針對整個委員會。發起不信任投票時必須明確指定類型。若針對單一成員的投票成功,則該成員被移除,其空缺按通常方式處理。若針對整個委員會的投票成功,委員會即解散並立即觸發新委員會選舉。
核心團隊
職責
核心團隊是由一群管理 Python 的受信任志工組成。他們承擔了達成專案目標所需的多種角色,特別是那些需要高度信任的角色。他們做出形塑專案未來的決策。
核心團隊成員被期望作為社區的榜樣與專案的守護者,代表社區及所有依賴 Python 的人行事。
在極少數需要介入的情況下,他們會在線上討論或官方 Python 活動中進行干預。
他們對 Python 專案基礎設施擁有權限,包括 Python 專案官網本身、Python GitHub 組織與倉庫、錯誤追蹤系統、郵件列表、IRC 頻道等。
特權
核心團隊成員可參與正式投票,通常用於提名新成員及選舉指導委員會。
成員資格
Python 核心團隊成員展現出:
- 對 Python 專案哲學的深刻理解
- 長期且建設性與有助益的貢獻紀錄
- 對專案目標有顯著貢獻,不限形式
- 願意投入時間改進 Python 的意願
隨著專案成熟,貢獻不僅限於程式碼。以下是一份不完整的貢獻領域列表,考慮加入核心團隊時可參考,無特定順序:
- 進行社區管理與推廣
- 在郵件列表與 IRC 提供支援
- 分類處理問題單(Triaging tickets)
- 撰寫修補程式(程式碼、文件或測試)
- 審查修補程式(程式碼、文件或測試)
- 參與設計決策
- 提供特定領域的專業知識(安全、國際化等)
- 管理持續整合基礎設施
- 管理伺服器(網站、追蹤系統、文件等)
- 維護相關專案(替代解釋器、核心基礎設施如套件管理等)
- 建立視覺設計
核心團隊成員資格是對與 Python 專案哲學與目標一致且持續、有價值之努力的認可。
此資格透過核心團隊投票獲得至少三分之二的支持票,且投票開放一週且未被指導委員會否決而授予。
附註
devguide 提供了一個 建議範本 供此類投票使用。
核心團隊成員時刻尋找有前途的貢獻者,教導他們專案管理方式,並在他們準備好時提交其名字供核心團隊投票。
核心團隊成員資格沒有時間限制。然而,為了讓大眾對維護 Python 的人數有合理的認識,鼓勵停止貢獻的核心團隊成員宣告自己為「非活躍(inactive)」。對於兩年內未做出任何實質貢獻的人員,可能會被要求將自己轉入此類別;若未回應,則會被強制轉入。為了記錄與尊重他們的貢獻,非活躍成員將繼續與活躍核心成員一同列出;若他們稍後恢復貢獻,可隨時切換回活躍狀態。然而,當處於非活躍狀態時,他們將失去投票、提名指導委員會等活躍特權,以及提交權限。
初始活躍核心團隊成員包含目前在 GitHub 上「Python core」團隊 中列出的所有人(僅核心成員可存取),初始非活躍成員則包含所有過去曾有提交權限的其他人。
修改本文檔
本文檔的修改需要核心團隊投票中至少三分之二的絕對多數,投票應開放兩週。
更新說明區塊以及「當前指導委員會」和「委員會選舉歷史」章節中的當前資訊無需投票。
歷史
本文檔的建立
Python 專案由 Guido van Rossum 發起,他擔任「終身仁慈獨裁者」(BDFL) 直至 2018 年 7 月 卸任 為止。
經討論後,提出了多項新治理模式的方案,核心開發者進行了投票決策。整體流程描述於 PEP 8000 與 PEP 8001,其他專案的審視研究則執行於 PEP 8002,各項提案則寫入 801x 系列 PEP 中。最終 PEP 8016 中的提案被 選定 為新的治理模型,並用於建立本 PEP 的初始版本。8000 系列 PEP 作為歷史參考予以保留(特別是 PEP 8016 包含額外的基本原理與當時討論的連結),但本 PEP 現為官方參考,並將遵循本文所述規則演進。
委員會選舉歷史
修訂歷史
- 2019-04-17:增加了核心開發者投票長度及本文檔修改相關規定。
- 2024-12-10:採用「多勝選者區塊 STAR」投票進行委員會選舉。
- 2024-12-10:為不信任投票的附議增加了為期一週的截止期限。
致謝
本 PEP 起始於 PEP 8016,由 Nathaniel J. Smith 與 Donald Stufft 撰寫,基於 Aymeric Augustin 撰寫的 Django 治理文件,並納入了許多其他人的反饋與協助。
版權
此文件已歸入公有領域 (public domain)。
原始碼:https://github.com/python/peps/blob/main/peps/pep-0013.rst
最後修改時間:2025-02-01 08:55:40 GMT