Following system colour scheme - Python 增強提案 Selected dark colour scheme - Python 增強提案 Selected light colour scheme - Python 增強提案

Python 增強提案

PEP 8001 – Python 治理投票流程

作者:
Brett Cannon <brett at python.org>, Christian Heimes <christian at python.org>, Donald Stufft <donald at stufft.io>, Eric Snow <ericsnowcurrently at gmail.com>, Gregory P. Smith <greg at krypto.org>, Łukasz Langa <lukasz at python.org>, Mariatta <mariatta at python.org>, Nathaniel J. Smith <njs at pobox.com>, Pablo Galindo Salgado <pablogsal at python.org>, Raymond Hettinger <python at rcn.com>, Tal Einat <tal at python.org>, Tim Peters <tim.peters at gmail.com>, Zachary Ware <zach at python.org>
狀態:
最終版
型別:
流程
主題:
治理
建立日期:
2018年8月24日

目錄

摘要

本 PEP 概述了在 Guido 退休後,如何選擇 Python 治理新模式的過程。一旦按照此處概述的程式選擇了模型,它將被編入 PEP 13

動機與原理

Guido 卸任 BDFL 角色,給我們留下了一個元問題:我們必須選擇 如何選擇 Python 專案從現在開始的治理方式。

本文提出了一個具體的提案,說明如何做出這一選擇。它總結了 2018 年 9 月在雷德蒙德舉行的核心衝刺研討會工作組的討論和結論(所有與會者的姓名均列為作者)。本 PEP 還總結了隨後在 discuss.python.org 上進行的討論帖

治理狀況應及時解決。理想情況下,這應該在 2018 年底前完成,以便及時將實質性改進合併到 Python 3.8 中。最遲,治理狀況需要在 2019 年 PyCon US 之前解決,以避免公關危機。

實施

我們將投票選擇什麼?

我們正在投票選擇 Python 專案應該實施哪個治理 PEP。候選 PEP 列表在 PEP 8000 中列出,包括所有編號在 801X 範圍內的 PEP。

為確保投票合法,上述 PEP 在投票期間不得修改。

誰有投票權?

邀請所有 CPython 核心開發者參與投票。為了透明和公平,我們要求核心開發者根據治理狀況是否直接影響他們來進行自我選擇。換句話說,我們建議 打算保持不活躍狀態的 不活躍核心開發者棄權投票。

何時投票?

2018 年 11 月 16 日至 2018 年 11 月 30 日是官方治理 PEP 審查期。我們不鼓勵 PEP 作者在此期間進行重大的實質性更改,但預計在此討論期後可能會出現小的調整。

投票將於 2018 年 12 月 1 日至 2018 年 12 月 16 日(全球任何地方)的為期兩週的時間視窗進行。

在哪裡投票?

投票將使用 Condorcet 網際網路投票服務上的“私有”投票進行。每位提交者都將收到一封電子郵件,其中包含一個連結,允許他們按偏好順序對 PEP 進行排名。

選舉將由 PSF 基礎設施總監 Ee Durbin 監督。

選舉結果,包括匿名選票,將於 12 月 17 日選舉結束後公佈。

CIVS 系統中將使用以下設定進行投票

投票名稱:Python 治理投票 (2018 12 月)

投票描述

This is the vote to choose how the CPython project will govern
itself, now that Guido has announced his retirement as BDFL. For
full details, see <a
href="https://peps.python.club.tw/pep-8001/">PEP
8001</a>. Many discussions have occurred under <a
href="https://discuss.python.org/tags/governance">the "governance"
tag</a> on discuss.python.org.
<p>
All votes must be received <b>by the end of December 16th, 2018, <a
href="https://en.wikipedia.org/wiki/Anywhere_on_Earth">Anywhere on
Earth</a></b>. All CPython core developers are <a
href="https://github.com/python/voters">eligible to vote</a>.
It is asked that inactive core developers <i>who intend to remain
inactive</i> abstain from voting.
<p>
<b>Note: You can only vote once, and all votes are final.</b> Once
you click "Submit ranking", it's too late to change your mind.
<p>
All ballots will be published at the end of voting, but <b>without
any names attached</b>. No-one associated with the Python project or
the PSF will know how you voted, or even whether you voted.
<p>
If you have any questions, you can post in <a
href="https://discuss.python.org/c/committers">the Committers
topic</a>, on <a href="mailto:python-committers@python.org">the
python-committers list</a>, or <a
href="mailto:ee@python.org">contact the vote administrator
directly</a>.
<p>
<h1>Options</h1>
<p>
We're selecting between seven PEPs, each proposing a different
governance model.
<p>
The options below include links to the text of each PEP, as well
as their complete change history. The text of these PEPs was
frozen on December 1, when the vote started. But if you looked at
the PEPs before that, they might have changed. Please take the
time to check the current text of the PEPs if you read an older
draft.
<p>
A "Further discussion" option is also included. It represents the
option of not making a choice at all at this time, and continuing
the discussion instead. Including this option lets us demonstrate
the core team's readiness to move forward.
<p>
If you think a proposal is a particularly bad idea, you can
express that by ranking it below "Further discussion". If you
think all of the proposals are better than further discussion,
then you should rank "Further discussion" last.

候選人(注意:此處的換行符具有重要意義)

<a href="https://peps.python.club.tw/pep-8010/">PEP 8010: The Technical Leader Governance Model</a> (Warsaw) (<a href="https://github.com/python/peps/commits/main/pep-8010.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8011/">PEP 8011: Python Governance Model Lead by Trio of Pythonistas</a> (Mariatta, Warsaw) (<a href="https://github.com/python/peps/commits/main/pep-8011.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8012/">PEP 8012: The Community Governance Model</a> (Langa) (<a href="https://github.com/python/peps/commits/main/pep-8012.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8013/">PEP 8013: The External Council Governance Model</a> (Dower) (<a href="https://github.com/python/peps/commits/main/pep-8013.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8014/">PEP 8014: The Commons Governance Model</a> (Jansen) (<a href="https://github.com/python/peps/commits/main/pep-8014.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8015/">PEP 8015: Organization of the Python community</a> (Stinner) (<a href="https://github.com/python/peps/commits/main/pep-8015.rst">changelog</a>)
<a href="https://peps.python.club.tw/pep-8016/">PEP 8016: The Steering Council Model</a> (Smith, Stufft) (<a href="https://github.com/python/peps/commits/main/pep-8016.rst">changelog</a>)
Further discussion

選項

[x] Private
[ ] Make this a test poll: read all votes from a file.
[ ] Do not release results to all voters.
[x] Enable detailed ballot reporting.
    [ ] In detailed ballot report, also reveal the identity of the voter with each ballot.
[ ] Allow voters to write in new choices.
[ ] Present choices on voting page in exactly the given order.
[ ] Allow voters to select “no opinion” for some choices.
[ ] Enforce proportional representation

這些選項將產生以下效果

  • 使選舉“私有”,或者換句話說,僅限受邀者。
  • 選舉結果將釋出給所有投票者。
  • 每張選票的內容以及詳細的獲勝者選舉報告將向公眾釋出。
  • 詳細選票將 包含任何識別資訊,投票者的電子郵件地址將在傳送包含投票連結的電子郵件後立即被 CIVS 系統刪除。
  • 投票者將 無法 填寫新的選項,這意味著他們將僅限於選舉中指定的選項。
  • 投票者在投下選票後將 無法 更改他們的投票。[no-changes]
  • 每張選票的預設排序將隨機化,以消除選票順序可能對選舉產生的影響。
  • 投票者必須以某種方式對所有選項進行排名,但可以對多個選項進行同等排名。

投票機制

投票將採用排名選票。每位投票者將所有候選 PEP 從最偏好到最不偏好進行排序。投票將進行計票,並使用 孔多塞方法選出獲勝者。

注意:每位投票者只能投一張票,並且之後無法修改他們的投票。[no-changes] 如果您對自己的選擇不完全確定,請等到投票期後期再投下您的選票。在選舉最後一天投下的選票與在第一天投下的選票同樣有效。

雖然 CIVS 系統沒有提供“純粹”孔多塞選舉的選項,但任何孔多塞方法都將選擇“純粹”孔多塞獲勝者(如果存在),否則只有在不存在時才會有所不同。CIVS 系統透過說明獲勝者是否是孔多塞獲勝者,或者它是否僅僅沒有被任何其他選項擊敗來區分孔多塞獲勝者和非孔多塞獲勝者。因此,CIVS 系統中的獲勝者只有在明確說明是孔多塞獲勝者的情況下才會被接受。

在不太可能出現平局(或孔多塞方法中可能出現的迴圈)的情況下,將重新進行一次選舉,僅限於涉及平局或迴圈的選項,以從平局選項中選出新的獲勝者。這次新的選舉將開放一週,並將重複進行,直到確定唯一的獲勝者為止。

問答

為什麼選擇孔多塞方法?

  1. 它允許投票者透過對 PEP 進行排名來表達偏好
  2. 它是 共識決策
  3. 在僅限核心開發者且使用贊同投票進行的投票中,它顯然是首選。

是否允許在排名中省略任何候選 PEP?

在排名中省略候選人的投票是無效的。這是因為此類投票與上述所需特性不相容,即

  • 讓投票者考慮替代方案,以及
  • 盡一切可能在一次選舉中得出結論。

為什麼建議不活躍的核心開發者不要投票?

治理模式的選擇將對 Python 及其社群產生深遠而長期的影響。我們邀請核心開發者評估他們在這場博弈中的利害關係。

注意:這不是一道指令,也不會受到監督。我們相信核心團隊的所有成員都會以 Python 的最大利益為出發點行事。

為什麼投票應該是私密的?

在討論選舉制度時,一些核心開發者對公開投票的想法表示擔憂,至少有一名核心開發者表示,由於採用公開投票,他們計劃完全棄權。在 Discourse 上進行的一項民意調查顯示,絕大多數投票者更喜歡秘密投票。[private-vote]

許多人認為秘密投票是自由公正選舉的必要條件,它允許成員投票表達他們的真實偏好,而不必擔心社會壓力或他們投票方式可能造成的後果。

為什麼使用 CIVS?

在本次 PEP 的後續討論中,決定核心開發者希望進行秘密投票。[private-vote] 不幸的是,秘密投票需要新穎的密碼學或一個受信任方來匿名選票。由於目前尚無已知的針對孔多塞選票的新穎密碼學系統,因此選擇 CIVS 系統作為受信任方。

有關 CIVS 提供的安全和隱私的更多資訊,包括惡意投票者、選舉監督員或 CIVS 管理員如何影響選舉,可以在此處找到。

為什麼投票者不能改變他們的投票?

CIVS 不允許投票者更新他們的投票,這是其防止選舉監督員影響投票的目標之一。

孔多塞方法有什麼缺陷嗎?

沒有完美的投票方法。吉巴德-薩特斯韋特定理 (Gibbard-Satterthwaite theorem) 已經表明,任何非獨裁的單一獲勝者排名投票方法都容易受到所謂的“策略性投票”的影響。這可能導致人們為了影響結果而不按其真實意願投票。

孔多塞方法也有可能出現迴圈(稱為孔多塞悖論)。由於孔多塞方法根據獲勝者是否能在一對一的競爭中戰勝其他選項來選擇獲勝者,因此存在 PEP A > PEP B > PEP C > PEP A 的可能性(或者以石頭剪刀布遊戲為例,想象一個三人遊戲,一個人出石頭,另一個人出布,最後一個人出剪刀;沒有人贏得這個遊戲,因為每個人都被某人擊敗了)。對於一組包含 21 名或更多投票者的真實世界選舉分析,迴圈發生不到 1.5% 的時間

參考資料


來源: https://github.com/python/peps/blob/main/peps/pep-8001.rst

最後修改: 2025-02-01 08:55:40 GMT