Python之父退位后,會(huì)有新任終身仁慈獨(dú)裁者嗎?怎么產(chǎn)生?
隨著 Python 之父 Guido van Rossum 逐步卸任 BDFL,Python(CPython)的未來之路牽動(dòng)了萬千開發(fā)者的心。沒了首領(lǐng),Python 今后的發(fā)展會(huì)怎么樣?社區(qū)將如何運(yùn)作?誰來領(lǐng)導(dǎo) Python 這門語言和社區(qū)呢?這些問題不得不解決,而用什么樣的方式解決,這就需要先由社區(qū)討論并最終決定。目前,Python 社區(qū)共提出了 7 種治理方案,分別是 PEP 8010、PEP 8011、PEP 8012、PEP 8013、PEP 8014、PEP 8015 與 PEP 8016。這些提案都匯總在 PEP 8000 之下,其中最終勝出者,將決定 Python 未來的發(fā)展方向和方式。
日前,Python 的核心開發(fā)者之一、PEP-8015 的作者 Victor Stinner 對(duì)這 7 種治理提案做了對(duì)比分析,本文引用他的分析為讀者提供一個(gè)較為全面的視圖。
背景知識(shí)
先簡單了解一下背景知識(shí),便于后文理解。
- PEP:全稱是 Python Enhancement Proposals,Python 增強(qiáng)提案,現(xiàn)在數(shù)量將近 500 個(gè),涵蓋 Python 功能實(shí)現(xiàn)、規(guī)范與周邊信息等各種內(nèi)容。本文出現(xiàn)的 7 個(gè)提案,全是針對(duì)新的治理模式,后續(xù)還可能新增這方面的提案。若想加深理解 PEP,并找到哪些提案是必讀的,可以另外查閱相關(guān)文獻(xiàn)。
- PSF:全稱是 Python Software Foundation,Python 軟件基金會(huì),非營利組織,其使命是促進(jìn) Python 社區(qū)發(fā)展,負(fù)責(zé)舉辦各種社區(qū)活動(dòng),例如開發(fā) Python 的核心發(fā)行版、管理知識(shí)產(chǎn)權(quán)、舉辦開發(fā)者大會(huì)(如 PyCon)、促進(jìn)多元與國際化,以及募集發(fā)展基金等。
- BDFL:全稱是 Benevolent Dictator For Life,終身仁慈獨(dú)裁者,該位置被賦予絕對(duì)的最終決策權(quán),曾特指 Guido van Rossum。2018 年 7 月 12 日,Guido 宣布不再擔(dān)任 BDFL。本文的全部 PEP 都是圍繞如何選出新的 BDFL 以及配套的社區(qū)治理方案,該詞不再有特指意義。
- CoP:全稱是 The Council of Pythonistas,Pythonistas 委員會(huì),為 Guido 提供參謀意見的智囊團(tuán)。
目前 Python 社區(qū)的 PEP 流程是這樣的:提案人確定 PEP 的選題方向,提案人負(fù)責(zé)收集與整合來自整個(gè)社區(qū)的反饋。然后,相關(guān)領(lǐng)域的專家們匯總?cè)坑懻?,并開啟為期 14 天的最終評(píng)審,其評(píng)審結(jié)果不再需要社區(qū)性的投票。如果一個(gè) PEP 很有爭議,任何專家成員都可發(fā)起動(dòng)議來拒絕通過它,這需要超過 2/3 的票數(shù)。
7 種方案一覽
- PEP 8010:技術(shù)領(lǐng)導(dǎo)人治理模式
維持現(xiàn)狀
- 提案人: Barry Warsaw
- PEP 8011:三巨頭治理模式
類似現(xiàn)狀,但三人決策
- 提案人:Mariatta Wijaya、Barry Warsaw
- PEP 8012:社區(qū)治理模式
沒有核心決策人
- 提案人: Łukasz Langa
- PEP 8013:外部治理模式
非核心監(jiān)督
- 提案人:Steve Dower
- PEP 8014:大眾治理模式
核心監(jiān)督
- 提案人:Jack Jansen
- PEP 8015:Python 社區(qū)的組織模式
將多數(shù)決策交給團(tuán)隊(duì)
- 提案人:Victor Stinner
- PEP 8016:指導(dǎo)委員會(huì)模式
引導(dǎo)治理的迭代
- 提案人:Nathaniel J. Smith、Donald Stufft
區(qū)別對(duì)比
Victor Stinner 總結(jié)了 7 個(gè) PEP 的主要區(qū)別,同時(shí)他建議在給這些治理提案投票時(shí),不要以它們的完整性來評(píng)判,而要聚焦其關(guān)于決策過程的部分,即誰能拍板做決策,以及怎么做?他希望那些還不夠完整的 PEP 可以吸收其它 PEP 的精華,并逐漸完善自身。
總的來看,在這些 PEP 中,除了 PEP-8012 和 PEP-8014,其它的都設(shè)有一個(gè)***決策層,一般的形式包括指導(dǎo)委員會(huì)、理事會(huì)、三巨頭、Guido 等。
- PEP 8011、8012 和 8015 定義了明確會(huì)參與決策過程的工作組/專家/Python 團(tuán)隊(duì),這可以視為第二級(jí)的決策層。
- PEP 8014 允許任意 Python 使用者參與投票,PEP 8013 將核心開發(fā)者排除在決策委員會(huì)之外。除了這兩個(gè)特例,其它 PEP 中的決策過程都強(qiáng)依賴于核心開發(fā)者,候選人必須是核心開發(fā)者,或者只有核心開發(fā)者才可以投票。
- PEP 8010、8012、8013、8014、8015 和 8016 都提出了不信任投票,也就是彈劾機(jī)制,可將任期內(nèi)的當(dāng)權(quán)者趕下臺(tái)。Victor 認(rèn)為沒有這一項(xiàng)是不明智的。
- PEP 8015 和 8016 嚴(yán)格限定了在委員會(huì)里,只允許少于 50% 的成員是企業(yè)(5 人委員會(huì)里最多有 2 個(gè)),而其它 PEP 不設(shè)限制。
- PEP 8010、8011 和 8014 幾乎只關(guān)注于定義***決策層,而 PEP 8015 和 8016 還關(guān)注到核心開發(fā)者的選舉/淘汰、如何更新治理提案等。
- PEP 8011、8014 和 8015 提到了決策層成員的多樣性,比如女性開發(fā)者是否能有一席之地,像 PEP-8011 就指出“盡全力去接納弱勢群體”,但卻沒有提到如何去促進(jìn)多樣性的詳細(xì)規(guī)則。
下邊具體拆解出各個(gè)治理方案的各項(xiàng)對(duì)比:
***決策層
- PEP 8012 明確地避免它
- PEP 8014 有一個(gè)長老會(huì),負(fù)責(zé)決定如何及何時(shí)批準(zhǔn) PEP,該決定基于對(duì)所有 Python 使用者開放的投票
- 其它 PEP ***決策層的形式為技術(shù)領(lǐng)導(dǎo)人、三巨頭、理事會(huì)、指導(dǎo)委員會(huì)等。
成員人數(shù)
- PEP 8010:4,包括 1 名領(lǐng)導(dǎo)人和理事會(huì) 3 人
- PEP 8011:3 (三巨頭) + 工作組
- PEP 8012:無領(lǐng)導(dǎo),專家團(tuán)隊(duì)自治
- PEP 8013:2-4 ,含 1 名主席
- PEP 8014:5-10 (理事會(huì))
- PEP 8015:5 (委員會(huì)) + Python 團(tuán)隊(duì)
- PEP 8016:5 (委員會(huì)) ,或者再加其它團(tuán)隊(duì)/多委員會(huì)/代表等,據(jù)需求而定
候選人的條件要求
- PEP 8010:核心開發(fā)者
- PEP 8011:核心開發(fā)者、 PSF 的投票成員、三巨頭、盡全力去接納弱勢群體
- PEP 8012:N/A
- PEP 8013:決不能是核心開發(fā)者
- PEP 8014:不要求是核心開發(fā)者、***是多元化的委員會(huì)、成員應(yīng)了解 Python 與 Python 社區(qū)
- PEP 8015:核心開發(fā)者、 最多 2 名企業(yè)成員
- PEP 8016:由核心開發(fā)者提名、 最多 2 名企業(yè)成員
選舉:誰投票,怎么投?
- PEP 8010:核心開發(fā)者
- PEP 8011:active 狀態(tài)的核心開發(fā)者
- PEP 8012:N/A
- PEP 8013:核心開發(fā)者,當(dāng)出現(xiàn)平局時(shí),主席可再投一票
- PEP 8014:投票對(duì)所有 Python 使用者開放
- PEP 8015:核心開發(fā)者,若平局則進(jìn)行二次投票,若二次投票還是平局,則由 PSF 董事會(huì) 選擇
- PEP 8016:核心開發(fā)者,若出現(xiàn)平局,可由候選人協(xié)商解決,否則隨機(jī)選擇
任期長度與限制
- PEP 8010:領(lǐng)導(dǎo)人任期 4.5 年,經(jīng)歷 3 個(gè) Python 版本;委員會(huì) 3 年一屆
- PEP 8011:5 年
- PEP 8012:N/A
- PEP 8013:1 個(gè) Python 版本,可連任
- PEP 8014:認(rèn)為理事會(huì)的權(quán)力純粹是程序性的,***是讓成員的服務(wù)時(shí)間長一點(diǎn)。但是又表示如果可以定期更新理事會(huì)也挺好
- PEP 8015:3 年,輪換選舉,每年更換 1/3,可連任
- PEP 8016:1 個(gè) Python 版本,可連任
不信任投票
- PEP 8010:可用于彈劾領(lǐng)導(dǎo)人,理事會(huì)一致決定時(shí)發(fā)起,由全體核心開發(fā)者進(jìn)行多數(shù)決議,但未明確多數(shù)決議的閾值
- PEP 8011:N/A
- PEP 8012:N/A
- PEP 8013:投票需要大于 2/3 票數(shù),針對(duì)單個(gè)理事會(huì)成員
- PEP 8014:1 名長老,或者 10 名核心開發(fā)者的團(tuán)體,或者 PSF 投票成員,可以申請(qǐng)即時(shí)生效的投票,針對(duì)整個(gè)理事會(huì)
- PEP 8015:N/A
- PEP 8016:投票需要 2/3 票數(shù),針對(duì)單個(gè)成員或整個(gè)委員會(huì)
團(tuán)隊(duì)/專家的任免
- PEP 8010:對(duì)單個(gè) PEP,Guido 與 CoP 協(xié)商確定專家人選
- PEP 8011:3-5 人組成的工作組給三巨頭提建議,不需要是核心開發(fā)者
- PEP 8012:專家自組織成特定興趣領(lǐng)域的子團(tuán)隊(duì),這避免了大多數(shù)投票和委員會(huì)設(shè)計(jì)。解散某個(gè)專家團(tuán)隊(duì)時(shí),需要大于 2/3 票數(shù)
- PEP 8013:N/A
- PEP 8014:N/A
- PEP 8015:自組織式的 Python 團(tuán)隊(duì),委員會(huì)可允許他們批準(zhǔn)自己的 PEP 打包團(tuán)隊(duì)(Packaging Team),要求核心開發(fā)者和貢獻(xiàn)者
- PEP 8016:N/A
PEP 流程
- PEP 8010:PEP 代表,Guido 是 PEP 決策的最終權(quán)威
- PEP 8011:三巨頭和(或)工作組?Victor 也不確定
- PEP 8012:遵照現(xiàn)行的 PEP 流程,提案人確定 PEP 的選題方向,提案人負(fù)責(zé)收集與整合來自整個(gè)社區(qū)的反饋。然后,相關(guān)領(lǐng)域的專家們匯總?cè)坑懻摚㈤_啟為期 14 天的最終評(píng)審,其評(píng)審結(jié)果不再需要社區(qū)性的投票。如果一個(gè) PEP 很有爭議,任何專家成員都可發(fā)起動(dòng)議來拒絕通過它(需 2/3 票數(shù))
- PEP 8013:如果理事會(huì)不否決,PEP 自動(dòng)被批準(zhǔn)
- PEP 8014:投票對(duì)所有 Python 使用者開放,而不僅僅是核心開發(fā)者。理事會(huì)會(huì)決定投票結(jié)果是否采用。一般投票,票數(shù)高者獲勝,根據(jù)投票結(jié)果理事會(huì)是應(yīng)該直接作出決定的,但是如果落后方此時(shí)進(jìn)行申訴,而理事會(huì)有所動(dòng)搖,那么此時(shí)已經(jīng)獲得多數(shù)票的一方需要做出論證。理事會(huì)最終會(huì)做出決定
- PEP 8015:委員會(huì)在 PEP 代表(一般來自 Python 團(tuán)隊(duì))之間做選擇,或者交給核心開發(fā)者投票,需大于 2/3 票數(shù)
- PEP 8016:理事會(huì)在必要時(shí)可直接地批準(zhǔn)/否決 PEP,但***是設(shè)置流程來避免這樣做決策,例如,將決策權(quán)委派給團(tuán)隊(duì)或者 BDFL 代表
核心開發(fā)者考核
晉升
- PEP 8010:N/A
- PEP 8011:N/A
- PEP 8012:核心開發(fā)者投票,要求全員投票通過,每個(gè) -1 都算作否決權(quán)
- PEP 8013:核心開發(fā)者投票,要求全員投票通過,每個(gè) -1 都算作否決權(quán)
- PEP 8014:N/A
- PEP 8015:核心開發(fā)者投票,需 2/3 票數(shù)
- PEP 8016:核心開發(fā)者投票,需 2/3 票數(shù),理事會(huì)有否決權(quán)
淘汰
- PEP 8010:N/A
- PEP 8011:N/A
- PEP 8012:不信任投票,需大于 2/3 票數(shù)
- PEP 8013:N/A
- PEP 8014:N/A
- PEP 8015:實(shí)施工作組臨時(shí)禁令,移除核心開發(fā)者身份
- PEP 8016:指導(dǎo)委員會(huì)投票,需大于 4/5 票數(shù)。此外處于“inactive”狀態(tài)的成員也會(huì)失去特權(quán),直到他們?cè)俅巫優(yōu)?ldquo;active”狀態(tài)
更新治理模式
- PEP 8010:N/A
- PEP 8011:N/A
- PEP 8012:N/A
- PEP 8013:N/A
- PEP 8014:N/A
- PEP 8015:委交給核心開發(fā)者,需 4/5 票數(shù)
- PEP 8016:委交給核心開發(fā)者,需 2/3 票數(shù)
行為守則
- PEP 8010:行為守則管制所有互動(dòng)與討論
- PEP 8011:三巨頭需遵守 PSF 的行為守則
- PEP 8012:依靠現(xiàn)有的 PSF 行為工作組,這在 PEP 中命名為“版主(Moderators)”
- PEP 8013:N/A
- PEP 8014:N/A
- PEP 8015:依靠現(xiàn)有的 PSF 行為工作組
- PEP 8016:指導(dǎo)委員會(huì)被鼓勵(lì)去設(shè)立 CoC 的流程,同時(shí)細(xì)節(jié)可以靈活制定
參考:Comparison of the 7 governance PEPs
作者介紹
豌豆花下貓,關(guān)注 Python 技術(shù)、數(shù)據(jù)科學(xué)和深度學(xué)習(xí)領(lǐng)域。個(gè)人公眾號(hào):Python貓。