python-peps/pep-8001/index.html

458 lines
45 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
<title>PEP 8001 Python Governance Voting Process | peps.python.org</title>
<link rel="shortcut icon" href="../_static/py.png">
<link rel="canonical" href="https://peps.python.org/pep-8001/">
<link rel="stylesheet" href="../_static/style.css" type="text/css">
<link rel="stylesheet" href="../_static/mq.css" type="text/css">
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" media="(prefers-color-scheme: light)" id="pyg-light">
<link rel="stylesheet" href="../_static/pygments_dark.css" type="text/css" media="(prefers-color-scheme: dark)" id="pyg-dark">
<link rel="alternate" type="application/rss+xml" title="Latest PEPs" href="https://peps.python.org/peps.rss">
<meta property="og:title" content='PEP 8001 Python Governance Voting Process | peps.python.org'>
<meta property="og:description" content="This PEP outlines the process for how the new model of Python governance is selected, in the wake of Guidos retirement. Once the model is chosen by the procedures outlined here, it will be codified in PEP 13.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://peps.python.org/pep-8001/">
<meta property="og:site_name" content="Python Enhancement Proposals (PEPs)">
<meta property="og:image" content="https://peps.python.org/_static/og-image.png">
<meta property="og:image:alt" content="Python PEPs">
<meta property="og:image:width" content="200">
<meta property="og:image:height" content="200">
<meta name="description" content="This PEP outlines the process for how the new model of Python governance is selected, in the wake of Guidos retirement. Once the model is chosen by the procedures outlined here, it will be codified in PEP 13.">
<meta name="theme-color" content="#3776ab">
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-sun-half" viewBox="0 0 24 24" pointer-events="all">
<title>Following system colour scheme</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="9"></circle>
<path d="M12 3v18m0-12l4.65-4.65M12 14.3l7.37-7.37M12 19.6l8.85-8.85"></path>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24" pointer-events="all">
<title>Selected dark colour scheme</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"></path>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24" pointer-events="all">
<title>Selected light colour scheme</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
</svg>
<script>
document.documentElement.dataset.colour_scheme = localStorage.getItem("colour_scheme") || "auto"
</script>
<section id="pep-page-section">
<header>
<h1>Python Enhancement Proposals</h1>
<ul class="breadcrumbs">
<li><a href="https://www.python.org/" title="The Python Programming Language">Python</a> &raquo; </li>
<li><a href="../pep-0000/">PEP Index</a> &raquo; </li>
<li>PEP 8001</li>
</ul>
<button id="colour-scheme-cycler" onClick="setColourScheme(nextColourScheme())">
<svg aria-hidden="true" class="colour-scheme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
<svg aria-hidden="true" class="colour-scheme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg aria-hidden="true" class="colour-scheme-icon-when-light"><use href="#svg-sun"></use></svg>
<span class="visually-hidden">Toggle light / dark / auto colour theme</span>
</button>
</header>
<article>
<section id="pep-content">
<h1 class="page-title">PEP 8001 Python Governance Voting Process</h1>
<dl class="rfc2822 field-list simple">
<dt class="field-odd">Author<span class="colon">:</span></dt>
<dd class="field-odd">Brett Cannon &lt;brett&#32;&#97;t&#32;python.org&gt;,
Christian Heimes &lt;christian&#32;&#97;t&#32;python.org&gt;,
Donald Stufft &lt;donald&#32;&#97;t&#32;stufft.io&gt;,
Eric Snow &lt;ericsnowcurrently&#32;&#97;t&#32;gmail.com&gt;,
Gregory P. Smith &lt;greg&#32;&#97;t&#32;krypto.org&gt;,
Łukasz Langa &lt;lukasz&#32;&#97;t&#32;python.org&gt;,
Mariatta &lt;mariatta&#32;&#97;t&#32;python.org&gt;,
Nathaniel J. Smith &lt;njs&#32;&#97;t&#32;pobox.com&gt;,
Pablo Galindo Salgado &lt;pablogsal&#32;&#97;t&#32;python.org&gt;,
Raymond Hettinger &lt;python&#32;&#97;t&#32;rcn.com&gt;,
Tal Einat &lt;tal&#32;&#97;t&#32;python.org&gt;,
Tim Peters &lt;tim.peters&#32;&#97;t&#32;gmail.com&gt;,
Zachary Ware &lt;zach&#32;&#97;t&#32;python.org&gt;</dd>
<dt class="field-even">Status<span class="colon">:</span></dt>
<dd class="field-even"><abbr title="Accepted and implementation complete, or no longer active">Final</abbr></dd>
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><abbr title="Normative PEP describing or proposing a change to a Python community process, workflow or governance">Process</abbr></dd>
<dt class="field-even">Topic<span class="colon">:</span></dt>
<dd class="field-even"><a class="reference external" href="../topic/governance/">Governance</a></dd>
<dt class="field-odd">Created<span class="colon">:</span></dt>
<dd class="field-odd">24-Aug-2018</dd>
</dl>
<hr class="docutils" />
<section id="contents">
<details><summary>Table of Contents</summary><ul class="simple">
<li><a class="reference internal" href="#abstract">Abstract</a></li>
<li><a class="reference internal" href="#motivation-and-rationale">Motivation and Rationale</a></li>
<li><a class="reference internal" href="#implementation">Implementation</a><ul>
<li><a class="reference internal" href="#what-are-we-voting-for">What are we voting for?</a></li>
<li><a class="reference internal" href="#who-gets-to-vote">Who gets to vote?</a></li>
<li><a class="reference internal" href="#when-is-the-vote">When is the vote?</a></li>
<li><a class="reference internal" href="#where-is-the-vote">Where is the vote?</a></li>
<li><a class="reference internal" href="#voting-mechanics">Voting mechanics</a></li>
</ul>
</li>
<li><a class="reference internal" href="#questions-and-answers">Questions and Answers</a><ul>
<li><a class="reference internal" href="#why-the-condorcet-method">Why the Condorcet method?</a></li>
<li><a class="reference internal" href="#is-omitting-any-candidate-peps-in-the-ranking-allowed">Is omitting any candidate PEPs in the ranking allowed?</a></li>
<li><a class="reference internal" href="#why-recommend-for-dormant-core-developers-to-not-vote">Why recommend for dormant core developers to not vote?</a></li>
<li><a class="reference internal" href="#why-should-the-vote-be-private">Why should the vote be private?</a></li>
<li><a class="reference internal" href="#why-the-use-of-civs">Why the use of CIVS?</a></li>
<li><a class="reference internal" href="#why-cannot-voters-change-their-vote">Why cannot voters change their vote?</a></li>
<li><a class="reference internal" href="#are-there-any-deficiencies-in-the-condorcet-method">Are there any deficiencies in the Condorcet method?</a></li>
</ul>
</li>
<li><a class="reference internal" href="#references">References</a></li>
<li><a class="reference internal" href="#copyright">Copyright</a></li>
</ul>
</details></section>
<section id="abstract">
<h2><a class="toc-backref" href="#abstract" role="doc-backlink">Abstract</a></h2>
<p>This PEP outlines the process for how the new model of Python governance is
selected, in the wake of <a class="reference external" href="https://mail.python.org/pipermail/python-committers/2018-July/005664.html">Guidos retirement</a>.
Once the model is chosen by the procedures outlined here, it will be codified
in <a class="pep reference internal" href="../pep-0013/" title="PEP 13 Python Language Governance">PEP 13</a>.</p>
</section>
<section id="motivation-and-rationale">
<h2><a class="toc-backref" href="#motivation-and-rationale" role="doc-backlink">Motivation and Rationale</a></h2>
<p>Guidos stepping down from the BDFL role left us with a meta-problem of
having to choose <em>how we will choose</em> how the Python project should be
governed from now on.</p>
<p>This document presents a concrete proposal how this choice can be made.
It summarizes discussion and conclusions of the proceedings of a working
group at the core sprint in Redmond in September 2018 (names of all
attendees are listed as authors). This PEP also summarizes a
<a class="reference external" href="https://discuss.python.org/t/python-governance-electoral-system/290">subsequent thread</a>
that took place on discuss.python.org .</p>
<p>The governance situation should be resolved in a timely fashion.
Ideally that should happen by the end of the 2018 which unblocks
substantial improvements to be merged in time for Python 3.8. At the
latest, the governance situation needs to be resolved by PyCon US 2019 to
avoid a PR crisis.</p>
</section>
<section id="implementation">
<h2><a class="toc-backref" href="#implementation" role="doc-backlink">Implementation</a></h2>
<section id="what-are-we-voting-for">
<h3><a class="toc-backref" href="#what-are-we-voting-for" role="doc-backlink">What are we voting for?</a></h3>
<p>We are voting to choose which governance PEP should be implemented by
the Python project. The list of candidate PEPs is listed in <a class="pep reference internal" href="../pep-8000/" title="PEP 8000 Python Language Governance Proposal Overview">PEP 8000</a>
and consists of all PEPs numbered in the 801X range.</p>
<p>To ensure the vote is legitimate, the aforementioned PEPs must not be
modified during the voting period.</p>
</section>
<section id="who-gets-to-vote">
<h3><a class="toc-backref" href="#who-gets-to-vote" role="doc-backlink">Who gets to vote?</a></h3>
<p>Every CPython core developer is invited to vote. In the interest of
transparency and fairness, we are asking core developers to self-select
based on whether the governance situation will affect them directly.
In other words, we are recommending for inactive core developers <em>who
intend to remain inactive</em> to abstain from voting.</p>
</section>
<section id="when-is-the-vote">
<h3><a class="toc-backref" href="#when-is-the-vote" role="doc-backlink">When is the vote?</a></h3>
<p>November 16th, 2018 to November 30th, 2018 is the official governance
PEP review period. We discourage the PEP authors from making major
substantive changes during this period, although it is expected that
minor tweaks may occur, as the result of this discussion period.</p>
<p>The vote will happen in a 2-week-long window from December 1st, 2018
to December 16th, 2018
(<a class="reference external" href="https://en.wikipedia.org/wiki/Anywhere_on_Earth">Anywhere on Earth</a>).</p>
</section>
<section id="where-is-the-vote">
<h3><a class="toc-backref" href="#where-is-the-vote" role="doc-backlink">Where is the vote?</a></h3>
<p>The vote will happen using a “private” poll on the
<a class="reference external" href="https://civs.cs.cornell.edu/">Condorcet Internet Voting Service</a>. Every committer
will receive an email with a link allowing them to rank the PEPs in their order of
preference.</p>
<p>The election will be supervised by Ee Durbin, The PSF Director of Infrastructure.</p>
<p>The results of the election, including anonymized ballots, will be made public on
December 17th, after the election has closed.</p>
<p>The following settings will be used for the vote in the CIVS system:</p>
<p>Name of the poll: <code class="docutils literal notranslate"><span class="pre">Python</span> <span class="pre">governance</span> <span class="pre">vote</span> <span class="pre">(December</span> <span class="pre">2018)</span></code></p>
<p>Description of the poll:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">This</span> <span class="ow">is</span> <span class="n">the</span> <span class="n">vote</span> <span class="n">to</span> <span class="n">choose</span> <span class="n">how</span> <span class="n">the</span> <span class="n">CPython</span> <span class="n">project</span> <span class="n">will</span> <span class="n">govern</span>
<span class="n">itself</span><span class="p">,</span> <span class="n">now</span> <span class="n">that</span> <span class="n">Guido</span> <span class="n">has</span> <span class="n">announced</span> <span class="n">his</span> <span class="n">retirement</span> <span class="k">as</span> <span class="n">BDFL</span><span class="o">.</span> <span class="n">For</span>
<span class="n">full</span> <span class="n">details</span><span class="p">,</span> <span class="n">see</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8001/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span>
<span class="mi">8001</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;.</span> <span class="n">Many</span> <span class="n">discussions</span> <span class="n">have</span> <span class="n">occurred</span> <span class="n">under</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://discuss.python.org/tags/governance&quot;</span><span class="o">&gt;</span><span class="n">the</span> <span class="s2">&quot;governance&quot;</span>
<span class="n">tag</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="n">on</span> <span class="n">discuss</span><span class="o">.</span><span class="n">python</span><span class="o">.</span><span class="n">org</span><span class="o">.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">All</span> <span class="n">votes</span> <span class="n">must</span> <span class="n">be</span> <span class="n">received</span> <span class="o">&lt;</span><span class="n">b</span><span class="o">&gt;</span><span class="n">by</span> <span class="n">the</span> <span class="n">end</span> <span class="n">of</span> <span class="n">December</span> <span class="mi">16</span><span class="n">th</span><span class="p">,</span> <span class="mi">2018</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://en.wikipedia.org/wiki/Anywhere_on_Earth&quot;</span><span class="o">&gt;</span><span class="n">Anywhere</span> <span class="n">on</span>
<span class="n">Earth</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;/</span><span class="n">b</span><span class="o">&gt;.</span> <span class="n">All</span> <span class="n">CPython</span> <span class="n">core</span> <span class="n">developers</span> <span class="n">are</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/voters&quot;</span><span class="o">&gt;</span><span class="n">eligible</span> <span class="n">to</span> <span class="n">vote</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;.</span>
<span class="n">It</span> <span class="ow">is</span> <span class="n">asked</span> <span class="n">that</span> <span class="n">inactive</span> <span class="n">core</span> <span class="n">developers</span> <span class="o">&lt;</span><span class="n">i</span><span class="o">&gt;</span><span class="n">who</span> <span class="n">intend</span> <span class="n">to</span> <span class="n">remain</span>
<span class="n">inactive</span><span class="o">&lt;/</span><span class="n">i</span><span class="o">&gt;</span> <span class="n">abstain</span> <span class="kn">from</span> <span class="nn">voting.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="n">b</span><span class="o">&gt;</span><span class="n">Note</span><span class="p">:</span> <span class="n">You</span> <span class="n">can</span> <span class="n">only</span> <span class="n">vote</span> <span class="n">once</span><span class="p">,</span> <span class="ow">and</span> <span class="nb">all</span> <span class="n">votes</span> <span class="n">are</span> <span class="n">final</span><span class="o">.&lt;/</span><span class="n">b</span><span class="o">&gt;</span> <span class="n">Once</span>
<span class="n">you</span> <span class="n">click</span> <span class="s2">&quot;Submit ranking&quot;</span><span class="p">,</span> <span class="n">it</span><span class="s1">&#39;s too late to change your mind.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">All</span> <span class="n">ballots</span> <span class="n">will</span> <span class="n">be</span> <span class="n">published</span> <span class="n">at</span> <span class="n">the</span> <span class="n">end</span> <span class="n">of</span> <span class="n">voting</span><span class="p">,</span> <span class="n">but</span> <span class="o">&lt;</span><span class="n">b</span><span class="o">&gt;</span><span class="n">without</span>
<span class="nb">any</span> <span class="n">names</span> <span class="n">attached</span><span class="o">&lt;/</span><span class="n">b</span><span class="o">&gt;.</span> <span class="n">No</span><span class="o">-</span><span class="n">one</span> <span class="n">associated</span> <span class="k">with</span> <span class="n">the</span> <span class="n">Python</span> <span class="n">project</span> <span class="ow">or</span>
<span class="n">the</span> <span class="n">PSF</span> <span class="n">will</span> <span class="n">know</span> <span class="n">how</span> <span class="n">you</span> <span class="n">voted</span><span class="p">,</span> <span class="ow">or</span> <span class="n">even</span> <span class="n">whether</span> <span class="n">you</span> <span class="n">voted</span><span class="o">.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">If</span> <span class="n">you</span> <span class="n">have</span> <span class="nb">any</span> <span class="n">questions</span><span class="p">,</span> <span class="n">you</span> <span class="n">can</span> <span class="n">post</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://discuss.python.org/c/committers&quot;</span><span class="o">&gt;</span><span class="n">the</span> <span class="n">Committers</span>
<span class="n">topic</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">on</span> <span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;mailto:python-committers@python.org&quot;</span><span class="o">&gt;</span><span class="n">the</span>
<span class="n">python</span><span class="o">-</span><span class="n">committers</span> <span class="nb">list</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">,</span> <span class="ow">or</span> <span class="o">&lt;</span><span class="n">a</span>
<span class="n">href</span><span class="o">=</span><span class="s2">&quot;mailto:ee@python.org&quot;</span><span class="o">&gt;</span><span class="n">contact</span> <span class="n">the</span> <span class="n">vote</span> <span class="n">administrator</span>
<span class="n">directly</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="n">h1</span><span class="o">&gt;</span><span class="n">Options</span><span class="o">&lt;/</span><span class="n">h1</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">We</span><span class="s1">&#39;re selecting between seven PEPs, each proposing a different</span>
<span class="n">governance</span> <span class="n">model</span><span class="o">.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">The</span> <span class="n">options</span> <span class="n">below</span> <span class="n">include</span> <span class="n">links</span> <span class="n">to</span> <span class="n">the</span> <span class="n">text</span> <span class="n">of</span> <span class="n">each</span> <span class="n">PEP</span><span class="p">,</span> <span class="k">as</span> <span class="n">well</span>
<span class="k">as</span> <span class="n">their</span> <span class="n">complete</span> <span class="n">change</span> <span class="n">history</span><span class="o">.</span> <span class="n">The</span> <span class="n">text</span> <span class="n">of</span> <span class="n">these</span> <span class="n">PEPs</span> <span class="n">was</span>
<span class="n">frozen</span> <span class="n">on</span> <span class="n">December</span> <span class="mi">1</span><span class="p">,</span> <span class="n">when</span> <span class="n">the</span> <span class="n">vote</span> <span class="n">started</span><span class="o">.</span> <span class="n">But</span> <span class="k">if</span> <span class="n">you</span> <span class="n">looked</span> <span class="n">at</span>
<span class="n">the</span> <span class="n">PEPs</span> <span class="n">before</span> <span class="n">that</span><span class="p">,</span> <span class="n">they</span> <span class="n">might</span> <span class="n">have</span> <span class="n">changed</span><span class="o">.</span> <span class="n">Please</span> <span class="n">take</span> <span class="n">the</span>
<span class="n">time</span> <span class="n">to</span> <span class="n">check</span> <span class="n">the</span> <span class="n">current</span> <span class="n">text</span> <span class="n">of</span> <span class="n">the</span> <span class="n">PEPs</span> <span class="k">if</span> <span class="n">you</span> <span class="n">read</span> <span class="n">an</span> <span class="n">older</span>
<span class="n">draft</span><span class="o">.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">A</span> <span class="s2">&quot;Further discussion&quot;</span> <span class="n">option</span> <span class="ow">is</span> <span class="n">also</span> <span class="n">included</span><span class="o">.</span> <span class="n">It</span> <span class="n">represents</span> <span class="n">the</span>
<span class="n">option</span> <span class="n">of</span> <span class="ow">not</span> <span class="n">making</span> <span class="n">a</span> <span class="n">choice</span> <span class="n">at</span> <span class="nb">all</span> <span class="n">at</span> <span class="n">this</span> <span class="n">time</span><span class="p">,</span> <span class="ow">and</span> <span class="n">continuing</span>
<span class="n">the</span> <span class="n">discussion</span> <span class="n">instead</span><span class="o">.</span> <span class="n">Including</span> <span class="n">this</span> <span class="n">option</span> <span class="n">lets</span> <span class="n">us</span> <span class="n">demonstrate</span>
<span class="n">the</span> <span class="n">core</span> <span class="n">team</span><span class="s1">&#39;s readiness to move forward.</span>
<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span>
<span class="n">If</span> <span class="n">you</span> <span class="n">think</span> <span class="n">a</span> <span class="n">proposal</span> <span class="ow">is</span> <span class="n">a</span> <span class="n">particularly</span> <span class="n">bad</span> <span class="n">idea</span><span class="p">,</span> <span class="n">you</span> <span class="n">can</span>
<span class="n">express</span> <span class="n">that</span> <span class="n">by</span> <span class="n">ranking</span> <span class="n">it</span> <span class="n">below</span> <span class="s2">&quot;Further discussion&quot;</span><span class="o">.</span> <span class="n">If</span> <span class="n">you</span>
<span class="n">think</span> <span class="nb">all</span> <span class="n">of</span> <span class="n">the</span> <span class="n">proposals</span> <span class="n">are</span> <span class="n">better</span> <span class="n">than</span> <span class="n">further</span> <span class="n">discussion</span><span class="p">,</span>
<span class="n">then</span> <span class="n">you</span> <span class="n">should</span> <span class="n">rank</span> <span class="s2">&quot;Further discussion&quot;</span> <span class="n">last</span><span class="o">.</span>
</pre></div>
</div>
<p>Candidates (note: linebreaks are significant here):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8010/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8010</span><span class="p">:</span> <span class="n">The</span> <span class="n">Technical</span> <span class="n">Leader</span> <span class="n">Governance</span> <span class="n">Model</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Warsaw</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8010.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8011/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8011</span><span class="p">:</span> <span class="n">Python</span> <span class="n">Governance</span> <span class="n">Model</span> <span class="n">Lead</span> <span class="n">by</span> <span class="n">Trio</span> <span class="n">of</span> <span class="n">Pythonistas</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Mariatta</span><span class="p">,</span> <span class="n">Warsaw</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8011.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8012/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8012</span><span class="p">:</span> <span class="n">The</span> <span class="n">Community</span> <span class="n">Governance</span> <span class="n">Model</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Langa</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8012.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8013/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8013</span><span class="p">:</span> <span class="n">The</span> <span class="n">External</span> <span class="n">Council</span> <span class="n">Governance</span> <span class="n">Model</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Dower</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8013.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8014/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8014</span><span class="p">:</span> <span class="n">The</span> <span class="n">Commons</span> <span class="n">Governance</span> <span class="n">Model</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Jansen</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8014.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8015/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8015</span><span class="p">:</span> <span class="n">Organization</span> <span class="n">of</span> <span class="n">the</span> <span class="n">Python</span> <span class="n">community</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Stinner</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8015.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://peps.python.org/pep-8016/&quot;</span><span class="o">&gt;</span><span class="n">PEP</span> <span class="mi">8016</span><span class="p">:</span> <span class="n">The</span> <span class="n">Steering</span> <span class="n">Council</span> <span class="n">Model</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span> <span class="p">(</span><span class="n">Smith</span><span class="p">,</span> <span class="n">Stufft</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://github.com/python/peps/commits/main/pep-8016.rst&quot;</span><span class="o">&gt;</span><span class="n">changelog</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;</span><span class="p">)</span>
<span class="n">Further</span> <span class="n">discussion</span>
</pre></div>
</div>
<p>Options:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[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
</pre></div>
</div>
<p>These options will have the effect of:</p>
<ul class="simple">
<li>Making the election “private”, or in other words, invite only.</li>
<li>The results of the election will be released to all voters.</li>
<li>The contents of every ballot will be released to the public, along
with a detailed report going over how the winner was elected.</li>
<li>The detailed ballots will <em>not</em> include any identifying information
and the email addresses of the voters will be thrown away by the CIVS
system as soon as the email with their voting link has been sent.</li>
<li>Voters will <em>not</em> be able to write in new choices, meaning they will
be limited only to the options specified in the election.</li>
<li>Voters will <em>not</em> have the ability to change their vote after casting
a ballot. <a class="reference internal" href="#no-changes" id="id1"><span>[no-changes]</span></a></li>
<li>The default ordering for each ballot will be randomized to remove
any influence that the order of the ballot may have on the election.</li>
<li>Voters will have to rank all choices somehow, but may rank multiple
choices as equal.</li>
</ul>
</section>
<section id="voting-mechanics">
<h3><a class="toc-backref" href="#voting-mechanics" role="doc-backlink">Voting mechanics</a></h3>
<p>The vote will be by ranked ballot. Every voter
orders all candidate PEPs from the most preferred to the least
preferred. The vote will be tallied and a winner chosen using the
<a class="reference external" href="https://en.wikipedia.org/wiki/Condorcet_method">Condorcet method</a>.</p>
<p>Note: each voter can only cast a single vote with no ability to
revise their vote later. <a class="reference internal" href="#no-changes" id="id2"><span>[no-changes]</span></a> If you are not absolutely
sure of your choices, hold off casting your ballot until later in
the voting period. Votes cast on the last day of the election are
just as valid as the ones cast on the first day.</p>
<p>While the CIVS system does not provide an option for a “Pure”
Condorcet election, any Condorcet method will select the “Pure”
Condorcet winner if one exists and otherwise only vary if one
doesnt exist. The CIVS system differentiates between a Condorcet
winner and a non Condorcet winner by stating if the winner was a
Condorcet winner, or if it merely wasnt defeated versus any other
option. So a winner in the CIVS system will only be accepted if
it states it was a Condorcet winner.</p>
<p>In the unlikely case of a tie (or cycle as is possible under the
Condorcet method), a new election will be opened, limited to the
options involved in the tie or cycle, to select a new winner from
amongst the tied options. This new election will be open for a
week, and will be repeated until a single winner is determined.</p>
</section>
</section>
<section id="questions-and-answers">
<h2><a class="toc-backref" href="#questions-and-answers" role="doc-backlink">Questions and Answers</a></h2>
<section id="why-the-condorcet-method">
<h3><a class="toc-backref" href="#why-the-condorcet-method" role="doc-backlink">Why the Condorcet method?</a></h3>
<ol class="arabic simple">
<li>It allows voters to express preference by ranking PEPs</li>
<li>It is <a class="reference external" href="https://en.wikipedia.org/wiki/Consensus_decision-making#Condorcet_consensus">consensus decision-making</a></li>
<li>In a <a class="reference external" href="https://discuss.python.org/t/python-governance-electoral-system/290/26">poll</a>
open to only core developers and run using Approval voting, it was
the clear preference</li>
</ol>
</section>
<section id="is-omitting-any-candidate-peps-in-the-ranking-allowed">
<h3><a class="toc-backref" href="#is-omitting-any-candidate-peps-in-the-ranking-allowed" role="doc-backlink">Is omitting any candidate PEPs in the ranking allowed?</a></h3>
<p>A vote which omits candidates in the ranking is invalid. This is
because such votes are incompatible with the desired properties listed
above, namely:</p>
<ul class="simple">
<li>Making voters consider alternatives, as well as</li>
<li>Doing everything possible to reach a conclusion in a single election.</li>
</ul>
</section>
<section id="why-recommend-for-dormant-core-developers-to-not-vote">
<h3><a class="toc-backref" href="#why-recommend-for-dormant-core-developers-to-not-vote" role="doc-backlink">Why recommend for dormant core developers to not vote?</a></h3>
<p>The choice of the governance model will have far reaching and long-term
consequences for Python and its community. We are inviting core
developers to assess their skin in the game.</p>
<p>Note: this is not an edict and will not be policed. We trust all
members of the core team to act in the best interest of Python.</p>
</section>
<section id="why-should-the-vote-be-private">
<h3><a class="toc-backref" href="#why-should-the-vote-be-private" role="doc-backlink">Why should the vote be private?</a></h3>
<p>When discussing the election system, a number of core developers expressed
concerns with the idea of having public ballots, with at least one core
developer stating that they were planning on abstaining from voting
altogether due to the use of a public ballot. A poll ran on Discourse
identified the overwhelming majority of voters prefer private ballots.
<a class="reference internal" href="#private-vote" id="id3"><span>[private-vote]</span></a></p>
<p>A secret ballot is considered by many to be a requirement for a free and
fair election, allowing members to vote their true preferences without
worry about social pressure or possible fallout for how they may have
voted.</p>
</section>
<section id="why-the-use-of-civs">
<h3><a class="toc-backref" href="#why-the-use-of-civs" role="doc-backlink">Why the use of CIVS?</a></h3>
<p>In the resulting discussion of this PEP, it was determined that core
developers wished to have a secret ballot. <a class="reference internal" href="#private-vote" id="id4"><span>[private-vote]</span></a> Unfortunately
a secret ballot requires either novel cryptography or a trusted party to
anonymize the ballots. Since there is not known to be any existing novel
cryptographic systems for Condorcet ballots, the CIVS system was chosen to
act as a trusted party.</p>
<p>More information about the security and privacy afforded by CIVS, including
how a malicious voter, election supervisor, or CIVS administrator can
influence the election can be found
<a class="reference external" href="https://civs.cs.cornell.edu/sec_priv.html">here</a>.</p>
</section>
<section id="why-cannot-voters-change-their-vote">
<h3><a class="toc-backref" href="#why-cannot-voters-change-their-vote" role="doc-backlink">Why cannot voters change their vote?</a></h3>
<p>CIVS does not allow voters to update their vote and as part of its goal
to prevent the election supervisor from being able to influence the
votes.</p>
</section>
<section id="are-there-any-deficiencies-in-the-condorcet-method">
<h3><a class="toc-backref" href="#are-there-any-deficiencies-in-the-condorcet-method" role="doc-backlink">Are there any deficiencies in the Condorcet method?</a></h3>
<p>There is no perfect voting method. It has been shown by the
<a class="reference external" href="https://en.wikipedia.org/wiki/Gibbard%E2%80%93Satterthwaite_theorem">Gibbard-Satterthwaite theorem</a>
that any single-winner ranked voting method which is not dictatorial
must be susceptible to so-called “tactical voting”. This can lead to
people not voting as they truly believe in order to influence the
outcome.</p>
<p>The Condorcet method also has the possibility of having cycles (known as
the <a class="reference external" href="https://en.wikipedia.org/wiki/Condorcet_paradox">Condorcet paradox</a>).
Due to the fact that the Condorcet method chooses a winner based on whether
they would win against the other options in a 1-on-1 race, there is a
possibility that PEP A &gt; PEP B &gt; PEP C &gt; PEP A (or in terms of the game
rock-paper-scissors, imagine a three-player game where someone played rock,
another played paper, and the last person played scissors; no one wins that
game as everyone is defeated by someone). For one analyzed set of real-world
elections with 21 voters or more, a cycle occurred
<a class="reference external" href="https://www.accuratedemocracy.com/l_cycles.htm">less than 1.5% of the time.</a>.</p>
</section>
</section>
<section id="references">
<h2><a class="toc-backref" href="#references" role="doc-backlink">References</a></h2>
<div role="list" class="citation-list">
<div class="citation" id="no-changes" role="doc-biblioentry">
<dt class="label" id="no-changes">[no-changes]<em> (<a href='#id1'>1</a>, <a href='#id2'>2</a>) </em></dt>
<dd><a class="reference external" href="https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/20">https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/20</a></div>
<div class="citation" id="private-vote" role="doc-biblioentry">
<dt class="label" id="private-vote">[private-vote]<em> (<a href='#id3'>1</a>, <a href='#id4'>2</a>) </em></dt>
<dd><a class="reference external" href="https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/4">https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/4</a></div>
</div>
</section>
<section id="copyright">
<h2><a class="toc-backref" href="#copyright" role="doc-backlink">Copyright</a></h2>
<p>This document has been placed in the public domain.</p>
</section>
</section>
<hr class="docutils" />
<p>Source: <a class="reference external" href="https://github.com/python/peps/blob/main/peps/pep-8001.rst">https://github.com/python/peps/blob/main/peps/pep-8001.rst</a></p>
<p>Last modified: <a class="reference external" href="https://github.com/python/peps/commits/main/peps/pep-8001.rst">2023-10-09 23:43:15 GMT</a></p>
</article>
<nav id="pep-sidebar">
<h2>Contents</h2>
<ul>
<li><a class="reference internal" href="#abstract">Abstract</a></li>
<li><a class="reference internal" href="#motivation-and-rationale">Motivation and Rationale</a></li>
<li><a class="reference internal" href="#implementation">Implementation</a><ul>
<li><a class="reference internal" href="#what-are-we-voting-for">What are we voting for?</a></li>
<li><a class="reference internal" href="#who-gets-to-vote">Who gets to vote?</a></li>
<li><a class="reference internal" href="#when-is-the-vote">When is the vote?</a></li>
<li><a class="reference internal" href="#where-is-the-vote">Where is the vote?</a></li>
<li><a class="reference internal" href="#voting-mechanics">Voting mechanics</a></li>
</ul>
</li>
<li><a class="reference internal" href="#questions-and-answers">Questions and Answers</a><ul>
<li><a class="reference internal" href="#why-the-condorcet-method">Why the Condorcet method?</a></li>
<li><a class="reference internal" href="#is-omitting-any-candidate-peps-in-the-ranking-allowed">Is omitting any candidate PEPs in the ranking allowed?</a></li>
<li><a class="reference internal" href="#why-recommend-for-dormant-core-developers-to-not-vote">Why recommend for dormant core developers to not vote?</a></li>
<li><a class="reference internal" href="#why-should-the-vote-be-private">Why should the vote be private?</a></li>
<li><a class="reference internal" href="#why-the-use-of-civs">Why the use of CIVS?</a></li>
<li><a class="reference internal" href="#why-cannot-voters-change-their-vote">Why cannot voters change their vote?</a></li>
<li><a class="reference internal" href="#are-there-any-deficiencies-in-the-condorcet-method">Are there any deficiencies in the Condorcet method?</a></li>
</ul>
</li>
<li><a class="reference internal" href="#references">References</a></li>
<li><a class="reference internal" href="#copyright">Copyright</a></li>
</ul>
<br>
<a id="source" href="https://github.com/python/peps/blob/main/peps/pep-8001.rst">Page Source (GitHub)</a>
</nav>
</section>
<script src="../_static/colour_scheme.js"></script>
<script src="../_static/wrap_tables.js"></script>
<script src="../_static/sticky_banner.js"></script>
</body>
</html>