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