Movatterモバイル変換


[0]ホーム

URL:


Following system colour schemeSelected dark colour schemeSelected light colour scheme

Python Enhancement Proposals

PEP 8001 – Python Governance Voting Process

Author:
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>
Status:
Final
Type:
Process
Topic:
Governance
Created:
24-Aug-2018

Table of Contents

Abstract

This PEP outlines the process for how the new model of Python governance isselected, in the wake ofGuido’s retirement.Once the model is chosen by the procedures outlined here, it will be codifiedinPEP 13.

Motivation and Rationale

Guido’s stepping down from the BDFL role left us with a meta-problem ofhaving to choosehow we will choose how the Python project should begoverned from now on.

This document presents a concrete proposal how this choice can be made.It summarizes discussion and conclusions of the proceedings of a workinggroup at the core sprint in Redmond in September 2018 (names of allattendees are listed as authors). This PEP also summarizes asubsequent threadthat took place on discuss.python.org .

The governance situation should be resolved in a timely fashion.Ideally that should happen by the end of the 2018 which unblockssubstantial improvements to be merged in time for Python 3.8. At thelatest, the governance situation needs to be resolved by PyCon US 2019 toavoid a PR crisis.

Implementation

What are we voting for?

We are voting to choose which governance PEP should be implemented bythe Python project. The list of candidate PEPs is listed inPEP 8000and consists of all PEPs numbered in the 801X range.

To ensure the vote is legitimate, the aforementioned PEPs must not bemodified during the voting period.

Who gets to vote?

Every CPython core developer is invited to vote. In the interest oftransparency and fairness, we are asking core developers to self-selectbased on whether the governance situation will affect them directly.In other words, we are recommending for inactive core developerswhointend to remain inactive to abstain from voting.

When is the vote?

November 16th, 2018 to November 30th, 2018 is the official governancePEP review period. We discourage the PEP authors from making majorsubstantive changes during this period, although it is expected thatminor tweaks may occur, as the result of this discussion period.

The vote will happen in a 2-week-long window from December 1st, 2018to December 16th, 2018(Anywhere on Earth).

Where is the vote?

The vote will happen using a “private” poll on theCondorcet Internet Voting Service. Every committerwill receive an email with a link allowing them to rank the PEPs in their order ofpreference.

The election will be supervised by Ee Durbin, The PSF Director of Infrastructure.

The results of the election, including anonymized ballots, will be made public onDecember 17th, after the election has closed.

The following settings will be used for the vote in the CIVS system:

Name of the poll:Pythongovernancevote(December2018)

Description of the poll:

ThisisthevotetochoosehowtheCPythonprojectwillgovernitself,nowthatGuidohasannouncedhisretirementasBDFL.Forfulldetails,see<ahref="https://peps.python.org/pep-8001/">PEP8001</a>.Manydiscussionshaveoccurredunder<ahref="https://discuss.python.org/tags/governance">the"governance"tag</a>ondiscuss.python.org.<p>Allvotesmustbereceived<b>bytheendofDecember16th,2018,<ahref="https://en.wikipedia.org/wiki/Anywhere_on_Earth">AnywhereonEarth</a></b>.AllCPythoncoredevelopersare<ahref="https://github.com/python/voters">eligibletovote</a>.Itisaskedthatinactivecoredevelopers<i>whointendtoremaininactive</i>abstainfromvoting.<p><b>Note:Youcanonlyvoteonce,andallvotesarefinal.</b>Onceyouclick"Submit ranking",it's too late to change your mind.<p>Allballotswillbepublishedattheendofvoting,but<b>withoutanynamesattached</b>.No-oneassociatedwiththePythonprojectorthePSFwillknowhowyouvoted,orevenwhetheryouvoted.<p>Ifyouhaveanyquestions,youcanpostin<ahref="https://discuss.python.org/c/committers">theCommitterstopic</a>,on<ahref="mailto:python-committers@python.org">thepython-committerslist</a>,or<ahref="mailto:ee@python.org">contactthevoteadministratordirectly</a>.<p><h1>Options</h1><p>We're selecting between seven PEPs, each proposing a differentgovernancemodel.<p>TheoptionsbelowincludelinkstothetextofeachPEP,aswellastheircompletechangehistory.ThetextofthesePEPswasfrozenonDecember1,whenthevotestarted.ButifyoulookedatthePEPsbeforethat,theymighthavechanged.PleasetakethetimetocheckthecurrenttextofthePEPsifyoureadanolderdraft.<p>A"Further discussion"optionisalsoincluded.Itrepresentstheoptionofnotmakingachoiceatallatthistime,andcontinuingthediscussioninstead.Includingthisoptionletsusdemonstratethecoreteam's readiness to move forward.<p>Ifyouthinkaproposalisaparticularlybadidea,youcanexpressthatbyrankingitbelow"Further discussion".Ifyouthinkalloftheproposalsarebetterthanfurtherdiscussion,thenyoushouldrank"Further discussion"last.

Candidates (note: linebreaks are significant here):

<ahref="https://peps.python.org/pep-8010/">PEP8010:TheTechnicalLeaderGovernanceModel</a>(Warsaw)(<ahref="https://github.com/python/peps/commits/main/pep-8010.rst">changelog</a>)<ahref="https://peps.python.org/pep-8011/">PEP8011:PythonGovernanceModelLeadbyTrioofPythonistas</a>(Mariatta,Warsaw)(<ahref="https://github.com/python/peps/commits/main/pep-8011.rst">changelog</a>)<ahref="https://peps.python.org/pep-8012/">PEP8012:TheCommunityGovernanceModel</a>(Langa)(<ahref="https://github.com/python/peps/commits/main/pep-8012.rst">changelog</a>)<ahref="https://peps.python.org/pep-8013/">PEP8013:TheExternalCouncilGovernanceModel</a>(Dower)(<ahref="https://github.com/python/peps/commits/main/pep-8013.rst">changelog</a>)<ahref="https://peps.python.org/pep-8014/">PEP8014:TheCommonsGovernanceModel</a>(Jansen)(<ahref="https://github.com/python/peps/commits/main/pep-8014.rst">changelog</a>)<ahref="https://peps.python.org/pep-8015/">PEP8015:OrganizationofthePythoncommunity</a>(Stinner)(<ahref="https://github.com/python/peps/commits/main/pep-8015.rst">changelog</a>)<ahref="https://peps.python.org/pep-8016/">PEP8016:TheSteeringCouncilModel</a>(Smith,Stufft)(<ahref="https://github.com/python/peps/commits/main/pep-8016.rst">changelog</a>)Furtherdiscussion

Options:

[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

These options will have the effect of:

  • Making the election “private”, or in other words, invite only.
  • The results of the election will be released to all voters.
  • The contents of every ballot will be released to the public, alongwith a detailed report going over how the winner was elected.
  • The detailed ballots willnot include any identifying informationand the email addresses of the voters will be thrown away by the CIVSsystem as soon as the email with their voting link has been sent.
  • Voters willnot be able to write in new choices, meaning they willbe limited only to the options specified in the election.
  • Voters willnot have the ability to change their vote after castinga ballot.[no-changes]
  • The default ordering for each ballot will be randomized to removeany influence that the order of the ballot may have on the election.
  • Voters will have to rank all choices somehow, but may rank multiplechoices as equal.

Voting mechanics

The vote will be by ranked ballot. Every voterorders all candidate PEPs from the most preferred to the leastpreferred. The vote will be tallied and a winner chosen using theCondorcet method.

Note: each voter can only cast a single vote with no ability torevise their vote later.[no-changes] If you are not absolutelysure of your choices, hold off casting your ballot until later inthe voting period. Votes cast on the last day of the election arejust as valid as the ones cast on the first day.

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 onedoesn’t exist. The CIVS system differentiates between a Condorcetwinner and a non Condorcet winner by stating if the winner was aCondorcet winner, or if it merely wasn’t defeated versus any otheroption. So a winner in the CIVS system will only be accepted ifit states it was a Condorcet winner.

In the unlikely case of a tie (or cycle as is possible under theCondorcet method), a new election will be opened, limited to theoptions involved in the tie or cycle, to select a new winner fromamongst the tied options. This new election will be open for aweek, and will be repeated until a single winner is determined.

Questions and Answers

Why the Condorcet method?

  1. It allows voters to express preference by ranking PEPs
  2. It isconsensus decision-making
  3. In apollopen to only core developers and run using Approval voting, it wasthe clear preference

Is omitting any candidate PEPs in the ranking allowed?

A vote which omits candidates in the ranking is invalid. This isbecause such votes are incompatible with the desired properties listedabove, namely:

  • Making voters consider alternatives, as well as
  • Doing everything possible to reach a conclusion in a single election.

Why recommend for dormant core developers to not vote?

The choice of the governance model will have far reaching and long-termconsequences for Python and its community. We are inviting coredevelopers to assess their skin in the game.

Note: this is not an edict and will not be policed. We trust allmembers of the core team to act in the best interest of Python.

Why should the vote be private?

When discussing the election system, a number of core developers expressedconcerns with the idea of having public ballots, with at least one coredeveloper stating that they were planning on abstaining from votingaltogether due to the use of a public ballot. A poll ran on Discourseidentified the overwhelming majority of voters prefer private ballots.[private-vote]

A secret ballot is considered by many to be a requirement for a free andfair election, allowing members to vote their true preferences withoutworry about social pressure or possible fallout for how they may havevoted.

Why the use of CIVS?

In the resulting discussion of this PEP, it was determined that coredevelopers wished to have a secret ballot.[private-vote] Unfortunatelya secret ballot requires either novel cryptography or a trusted party toanonymize the ballots. Since there is not known to be any existing novelcryptographic systems for Condorcet ballots, the CIVS system was chosen toact as a trusted party.

More information about the security and privacy afforded by CIVS, includinghow a malicious voter, election supervisor, or CIVS administrator caninfluence the election can be foundhere.

Why cannot voters change their vote?

CIVS does not allow voters to update their vote and as part of its goalto prevent the election supervisor from being able to influence thevotes.

Are there any deficiencies in the Condorcet method?

There is no perfect voting method. It has been shown by theGibbard-Satterthwaite theoremthat any single-winner ranked voting method which is not dictatorialmust be susceptible to so-called “tactical voting”. This can lead topeople not voting as they truly believe in order to influence theoutcome.

The Condorcet method also has the possibility of having cycles (known astheCondorcet paradox).Due to the fact that the Condorcet method chooses a winner based on whetherthey would win against the other options in a 1-on-1 race, there is apossibility that PEP A > PEP B > PEP C > PEP A (or in terms of the gamerock-paper-scissors, imagine a three-player game where someone played rock,another played paper, and the last person played scissors; no one wins thatgame as everyone is defeated by someone). For one analyzed set of real-worldelections with 21 voters or more, a cycle occurredless than 1.5% of the time..

References

[no-changes] (1,2)
https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/20
[private-vote] (1,2)
https://discuss.python.org/t/pep-8001-public-or-private-ballots/374/4

Copyright

This document has been placed in the public domain.


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

Last modified:2025-02-01 08:55:40 GMT


[8]ページ先頭

©2009-2025 Movatter.jp