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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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.pythonlang.cn/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 系统中的获胜者只有在明确说明是孔多塞获胜者的情况下才会被接受。
在不太可能出现平局(或孔多塞方法中可能出现的循环)的情况下,将重新进行一次选举,仅限于涉及平局或循环的选项,以从平局选项中选出新的获胜者。这次新的选举将开放一周,并将重复进行,直到确定唯一的获胜者为止。
问答
为什么选择孔多塞方法?
是否允许在排名中省略任何候选 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