Python啟用新的管理模式
2018年12月18
早在10月底,當我們研究Python管理問題時(這個問題是由於Guido van Rossum辭職而產生的),大部分問題似乎都將在11月底進行投票後塵埃落定。在截至到12月1日的兩周內,選民將對6項Python增強提案(PEPs)進行排名並投票;排序複選投票(原文:instant-runoff voting)將決定誰是獲勝者。但在此期間,很多情況都發生了變化;投票期限、獲勝者判定機制和需要考慮的PEP數量都各不相同。但投票最終在12月16日結束,並已宣布獲勝者;11月初提交的PEP 8016(「管理理事會模式」)直衝榜首,一舉奪魁。
就在我們發布上一篇文章的前後,Python 提交者討論平台上啟動了一個新話題,來討論各種投票系統的優缺點。排序複選投票(原文:instant-runoff voting)不受歡迎;有人擔心它不能真正代表選民的意願,就像2009年Vermont州Burlington市的市長選舉一樣。事實上,它是在核心開發人員短時間親自對話後以命令的形式宣布的自己強加的最後期限,而不是在討論平台上或python提交者郵件列表上長時間討論後解決的,這也可能是一個因素。正如Nathaniel J. Smith所說:
我對所有這些關於如何確定最後期限的花言巧語特別擔心,每個人都必須排隊。我也想儘快完成!但試圖像這樣壓倒其他核心開發者,並像一些核心開發者那樣通過純粹的法令來解決這樣的分歧,是一個非常不健康的先例。我覺得我們中的一些人對「確保我們看起來可以一起工作,一起做決定,一起舉行合法的投票」這件事非常關心,但這恰恰削弱了我們一起工作,一起做決定,一起舉行合法投票的能力。
Donald Stufft對許多不同的投票系統及其優缺點進行了長篇總結。沒有人對使用「多數票表決」(也稱為「得票多者勝」)感興趣,但對其他可能性的看法則不同。最終,PEP 8001(「Python管理投票流程」)被更改為使用Condorcet原則(是指當存在2個以上的候選者時,只有一種辦法能嚴格而真實地反映多數成員的願望,這就是對候選者進行成對比較,若存在某個候選者,他能按過半數規則擊敗其他所有候選人,則他被稱為Condorcet候選人,應由該候選者當選。)來確定獲勝者。在Condorcet原則下,平局或循環都有可能(儘管可能性不大),這將導致在平局選項中必須進行重新投票。Condorcet原則已經被Debian和其他項目使用多年,這也是大家對該方法形成共識的部分原因。
獲勝者
最終,採用Condorcet原則進行了選舉,選舉結果很明確,沒有任何異議。正如Tim Peters——選舉方法討論中眾多活躍開發者之一——指出:「不僅會有一個不折不扣的Condorcet (打敗所有人)獲勝者,即使我們把此獲勝者移除,在剩下 的七個參選者中還是會有一個不折不扣 Condorcet獲勝者 ——以此類推,一直到『進一步討論』」。考慮到選民人數相當少,只有94人,而實際投票的人數只有62人,結果可能會更加混亂。
在選舉中落選較晚的人顯然是贏家,這也許並不奇怪。Smith和Stufft起草了PEP;它可能受益於對其他pep的討論以及一路上對它們所做的更改。這一點也不影響將其設計成無趣、簡單和靈活的明確初衷。
與大多數其他提案一樣,PEP 8016創建了一個理事會。在其他PEP中提出了不同的規模,但是PEP 8016的管理理事會由核心團隊選出的5人組成。核心團隊的定義與當今的核心開發人員或提交者在某種程度上不同。該PEP明確指出,「開發人員」以外的角色可以勝任核心團隊。成為團隊的一員只需要獲得現有成員三分之二的票數即可,而不需要管理理事會的表決。
在PEP中沒有很好地規定否決權,這是討論過程中的一個問題。根據Smith的說法,這個想法來自Django管理文檔,它對該PEP有很大的影響。人們希望它永遠不會被使用,「但在替代方案更糟的情況下,可能就需要使用否決權」。當然還是有一個保留方案,比如發現需要移除核心團隊成員時,理事會四個成員的絕對多數可以進行投票表決。
指導理事會
理事會被賦予「對項目作出決定的廣泛授權」的權力,但目標是它儘可能少使用這種權力;它的目的是廣泛地授權。PEP指出,理事會應該尋求共識,而不是發號施令,它應該定義一個標準的PEP決策過程,這個決策過程(希望如此)很少需要理事會投票來解決。然而,它是影響語言發展的決定的「終審法院」。但理事會不能改變管理PEP,這隻能通過核心團隊三分之二的投票來實現。
指導理事會的任務集中在Python和CPython實現的質量和穩定性等方面,並確保對項目做出貢獻的途徑是容易的,這樣就會有更多的人對項目發展做出貢獻。除此之外,維護核心團隊和Python軟體基金會(PSF)之間的關係是另一個難題。指導理事會成員的服務周期是單個Python特性版本的長度;每一個版本發布後,將選出一個新的理事會。候選人必須由核心團隊成員提名;「批准投票」權將用於選擇新的理事會。每個核心團隊成員可以匿名投票給0到5名候選人;總票數最高的五名候選人將擔任新一屆理事會的成員,遇到票數相等時,由票數相等的候選人進行協商或隨機選擇決定。
還有一些利益衝突規則:「儘管我們相信理事會成員的行為符合Python的最佳利益,而不是他們自己或他們的僱主的利益,任何一家公司主導Python開發的出現都會損害其自身利益,並削弱其信任度。」因此,同一家公司的理事會成員不得超過兩名;如果該公司有第三個人當選,他們將被取消資格,得票第二高的人將被提拔。如果在理事會任期內出現以下情況(例如更換僱主或收購公司),必須有足夠多的理事會成員辭職,以確保理事會的組成。理事會的空缺(由於此原因或任何其他原因)將由理事會投票填補。
如果核心團隊對理事會不滿,可以進行不信任投票。核心團隊成員可以要求進行這樣的投票;如果有任何其他成員支持該呼籲,將舉行投票。投票可以針對理事會的一個成員,也可以針對整個理事會。如果有三分之二的核心團隊成員投了反對票,該理事會成員或整個理事會將被免職。在後一種情況下,新的理事會選舉將立即舉行。
其他一些PEP具體規定了一些事情,例如PEP將如何敲定或對任職於理事會的人員設置了各種限制。Victor Stinner對這七個提議的總結很好地概括了它們之間的共同點和不同點。許多在高度層面上完全相似,大多數明顯地在理事會的規模上有所不同,當然還有一些其他實質性的差別。PEP 8010(「技術領導者管理模式」)或多或少保留了「仁慈的獨裁者」模式,而PEP 8012(「社區管理模型」)沒有中央權威,兩者都是異類。有趣的是,8012在投票中排名第二,而8010是最不受歡迎的管理選項之一。
另一個選舉
接下來是理事會選舉。有兩個階段,每個階段將持續兩周;首先是提名期,然後是實際投票。Van Rossum並沒有像有些人想的那樣置身事,外甩手不管;他積极參与一些有關管理選舉的議程,並率先開始組織理事會選舉。他要求在新年之後開始選舉過程,給人們一些時間在假期放鬆。Smith表示同意。他指出,從1月6日開始選舉將導致從1月20日開始實際投票以及2月3日進行理事會選舉,這沒有任何影響。
總的來說,自從Van Rossum下台以來,這個過程進行得相當順利,並且將在7月份正式採用新的管理模式。理事會似乎有很多不錯的候選人,其中許多人積极參与了管理討論。第一屆新理事會將有很多事情進行決定,包括PEP審批過程,但它並沒有那麼多時間來做這些。與通常的18個月周期不同,該理事會的任期將縮短,直到Python 3.8發布,目前預定於2019年10月發布。在此之後當選的理事會將會有整整18個月的任期,當然,除非發布周期縮短。觀看此次選舉將非常有趣;再一次,敬請期待。
英文原文:https://lwn.net/SubscriberLink/775105/5db16cfe82e78dc3/
譯者:野生大熊貓


TAG:Python部落 |