PEP 8001 – Python 거버넌스 투표 절차
- 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
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
초록
이 PEP는 Guido의 퇴임 이후 새로운 Python 거버넌스 모델을 선정하는 절차를 개요로 설명합니다. 여기에서 설명하는 절차에 따라 모델이 선택되면 PEP 13에 성문화됩니다.
동기와 근거
Guido가 BDFL 역할에서 물러나면서, 이제부터 Python 프로젝트를 어떻게 운영할지 어떻게 선택할지를 선택해야 하는 메타 문제가 남게 되었습니다.
이 문서는 이 선택을 어떻게 수행할 수 있는지에 대한 구체적인 제안을 제시합니다. 2018년 9월 레드먼드에서 열린 핵심 개발자 스프린트의 워킹 그룹 진행 과정에서 논의된 내용과 결론을 요약합니다(모든 참석자의 이름은 저자로 나열되어 있습니다). 이 PEP는 discuss.python.org에서 진행된 후속 스레드도 요약합니다.
거버넌스 상황은 적시에 해결되어야 합니다. 이상적으로는 2018년 말까지 해결되어야 하며, 이를 통해 상당한 개선 사항을 Python 3.8에 맞춰 병합할 수 있게 됩니다. 늦어도 PR 위기를 피하려면 PyCon US 2019까지 거버넌스 상황이 해결되어야 합니다.
구현
무엇에 투표합니까?
Python 프로젝트가 어떤 거버넌스 PEP를 구현해야 하는지 선택하기 위해 투표합니다. 후보 PEP 목록은 PEP 8000에 나열되어 있으며, 801X 범위의 모든 번호가 매겨진 PEP로 구성됩니다.
투표의 정당성을 보장하려면 앞서 언급한 PEP를 투표 기간 동안 수정해서는 안 됩니다.
누가 투표할 수 있습니까?
모든 CPython 핵심 개발자에게 투표가 초대됩니다. 투명성과 공정성을 위해 핵심 개발자에게 거버넌스 상황이 자신에게 직접 영향을 미치는지에 따라 스스로 참여 여부를 결정하도록 요청합니다. 다시 말해, 비활성 상태로 남을 의향이 있는 비활성 핵심 개발자는 투표를 기권할 것을 권고합니다.
투표는 언제 진행됩니까?
2018년 11월 16일부터 2018년 11월 30일까지가 공식 거버넌스 PEP 검토 기간입니다. 이 기간에는 PEP 작성자가 주요한 실질적 변경을 하지 않도록 권고하지만, 이 논의 기간의 결과로 사소한 조정이 발생할 수 있음은 예상됩니다.
투표는 2018년 12월 1일부터 2018년 12월 16일까지 2주간의 기간에 진행됩니다(Anywhere on Earth).
투표는 어디에서 진행됩니까?
투표는 Condorcet Internet Voting Service에서 “비공개” 투표를 사용하여 진행됩니다. 모든 커미터는 PEP를 선호도 순서대로 순위를 매길 수 있는 링크가 포함된 이메일을 받게 됩니다.
선거는 PSF 인프라 책임자인 Ee Durbin이 감독합니다.
익명화된 투표용지를 포함한 선거 결과는 선거가 종료된 후인 12월 17일에 공개됩니다.
CIVS 시스템에서 투표에 다음 설정을 사용합니다.
투표 이름: Python governance vote (December 2018)
설문 설명:
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.org/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.org/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.org/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.org/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.org/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.org/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.org/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.org/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부터 가장 낮은 후보 PEP까지 순서대로 배열합니다. 투표를 집계하고 Condorcet method을 사용하여 당선자를 결정합니다.
참고: 각 유권자는 나중에 투표를 수정할 수 없으며 한 번만 투표할 수 있습니다. [no-changes] 선택지를 확실히 결정하지 못했다면 투표 기간 후반까지 투표용지 제출을 미루십시오. 선거 마지막 날에 제출된 투표도 첫날에 제출된 투표와 마찬가지로 유효합니다.
CIVS 시스템은 “Pure” Condorcet 선거 옵션을 제공하지 않지만, Condorcet 방식은 “Pure” Condorcet 당선자가 존재하는 경우 해당 당선자를 선택하며, 존재하지 않는 경우에만 결과가 달라집니다. CIVS 시스템은 당선자가 Condorcet 당선자인지, 아니면 단지 다른 어떤 선택지에게도 패배하지 않았을 뿐인지를 명시하여 Condorcet 당선자와 비-Condorcet 당선자를 구분합니다. 따라서 CIVS 시스템의 당선자는 자신이 Condorcet 당선자였다는 내용이 명시된 경우에만 인정됩니다.
Condorcet 방식에서 발생할 수 있는 동률(또는 순환)이 발생하는 매우 드문 경우에는, 동률 또는 순환에 관련된 선택지로 제한하여 새로운 선거를 열고 동률을 이룬 선택지 중에서 새로운 당선자를 결정합니다. 이 새로운 선거는 일주일 동안 진행되며, 단일 당선자가 결정될 때까지 반복됩니다.
질문과 답변
Condorcet 방식을 사용하는 이유는 무엇입니까?
- 유권자는 PEP에 순위를 매겨 선호도를 표현할 수 있습니다.
- 이는 consensus decision-making입니다.
- 핵심 개발자만 참여할 수 있고 승인 투표를 사용하여 진행된 poll에서 이는 명백한 선호를 받았습니다.
후보 PEP를 순위에서 누락해도 됩니까?
후보를 순위에서 누락한 투표는 무효입니다. 이는 그러한 투표가 위에 열거된 다음과 같은 바람직한 특성과 양립할 수 없기 때문입니다:
- 유권자가 대안을 고려하도록 하는 것과,
- 단일 선거에서 결론에 도달하기 위해 가능한 모든 일을 합니다.
활동하지 않는 핵심 개발자에게 투표하지 말 것을 권고하는 이유는 무엇입니까?
거버넌스 모델의 선택은 Python과 그 커뮤니티에 광범위하고 장기적인 결과를 가져옵니다. 핵심 개발자 여러분께서 이 사안에 걸린 자신의 이해관계를 평가해 주시기를 요청합니다.
참고: 이는 명령이 아니며 감시하거나 단속하지도 않습니다. 핵심 팀의 모든 구성원이 Python의 최선의 이익을 위해 행동할 것이라고 신뢰합니다.
투표는 왜 비공개여야 합니까?
선거 제도를 논의하는 과정에서 여러 핵심 개발자가 공개 투표용지를 사용하는 방안에 우려를 표명했으며, 적어도 한 명의 핵심 개발자는 공개 투표용지 사용 때문에 투표를 전혀 하지 않을 계획이라고 밝혔습니다. Discourse에서 실시한 설문조사에서는 압도적 다수의 유권자가 비공개 투표용지를 선호한다는 사실이 확인되었습니다. [private-vote]
비밀 투표는 자유롭고 공정한 선거를 위한 요건으로 여겨지는 경우가 많으며, 구성원이 자신이 실제로 선호하는 바에 따라 투표하더라도 사회적 압력이나 자신의 투표 방식으로 인해 발생할 수 있는 후폭풍을 걱정하지 않도록 합니다.
CIVS를 사용하는 이유는 무엇입니까?
이 PEP에 대한 논의의 결과, 핵심 개발자들이 비밀 투표를 원한다는 결론이 내려졌습니다. [private-vote] 안타깝게도 비밀 투표를 실시하려면 새로운 암호 기술이나 투표용지를 익명화할 신뢰할 수 있는 당사자가 필요합니다. 콩도르세 투표용지에 사용할 수 있는 기존의 새로운 암호 시스템이 알려져 있지 않으므로, CIVS 시스템을 신뢰할 수 있는 당사자로 사용하기로 결정했습니다.
악의적인 유권자, 선거 감독자 또는 CIVS 관리자가 선거에 영향을 미칠 수 있는 방법을 비롯하여 CIVS가 제공하는 보안 및 개인정보 보호에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
유권자는 왜 자신의 투표를 변경할 수 없습니까?
CIVS는 유권자가 자신의 투표를 업데이트하는 것을 허용하지 않으며, 이는 선거 감독자가 투표에 영향을 미칠 수 없도록 하려는 목표의 일환입니다.
콩도르세 방식에는 어떤 결함이 있습니까?
완벽한 투표 방식은 없습니다. 독재적이지 않은 모든 단일 승자 순위 투표 방식은 이른바 “전략적 투표”에 취약할 수밖에 없다는 사실이 Gibbard-Satterthwaite 정리에 의해 입증되었습니다. 이로 인해 사람들은 결과에 영향을 미치기 위해 자신이 진정으로 믿는 바에 따라 투표하지 않을 수 있습니다.
콩도르세 방식에서는 순환이 발생할 가능성도 있으며, 이를 콩도르세 역설이라고 합니다. 콩도르세 방식은 1 대 1 대결에서 다른 선택지들을 상대로 승리할 수 있는지를 기준으로 승자를 정하기 때문에, PEP A > PEP B > PEP C > PEP A가 될 가능성이 있습니다(가위바위보 게임으로 설명하면, 세 명이 게임을 하는데 한 사람은 바위를 내고 다른 사람은 보를 내며 마지막 사람은 가위를 냈다고 생각해 보십시오. 모든 사람이 다른 누군가에게 패하므로 아무도 이기지 못합니다). 유권자가 21명 이상인 실제 선거를 분석한 한 집합에서는 순환이 1.5% 미만의 빈도로 발생했습니다..
참고 자료
Copyright
This document has been placed in the public domain.