python-peps/pep-8013.rst

250 lines
9.4 KiB
ReStructuredText
Raw Normal View History

PEP: 8013
Title: The External Council Governance Model
Author: Steve Dower <steve.dower@python.org>
Status: Draft
Type: Informational
Content-Type: text/x-rst
Created: 2018-09-14
Abstract
========
This PEP proposes a new model of Python governance based on a Group
of Unbiased Independent Directors of Order (GUIDO) tasked with making
final decisions for the language. It differs from PEP 8010 by
specifically not proposing a central singular leader, and from PEP
8011 by disallowing core committers from being council members. It
describes the size and role of the council, how the initial group of
council members will be chosen, any term limits of the council
members, and how successors will be elected.
It also spends significant time discussing the intended behaviour of
this model. By design, many processes are not specified here but are
left to the people involved. In order to select people who will make
the best decisions, it is important for those involved to understand
the expectations of GUIDO but it is equally important to allow GUIDO
the freedom to adjust process requirements for varying circumstances.
This only works when process is unspecified, but all participants have
similar expectations.
This PEP does *not* name the members of GUIDO. Should this model be
adopted, it will be codified in PEP 13 along with the names of all
officeholders described in this PEP.
Open Discussion Points
======================
Some suggestions in this document are currently weak suggestions, and
are open to change during the discussion period. These include:
* We can change the name of the group. "Council of Auditors" is the
suggested alternative.
* We can change voting procedures, timelines, and tie-breakage rules
The Importance of the Grey Area
===============================
In any actual decision-making process, there is going to be grey area.
This includes unexpected scenarios, and cases where there is no
"correct" answer.
Many process plans attempt to minimise grey area by defining processes
clearly enough that no flexibility is required.
This proposal deliberately goes the other way. The aim is to provide a
robust framework for choosing the best people to handle unexpected
situations, without defining how those people should handle those
situations.
Examples are provided of "good" responses to some situations as an
illustration. The hope is that the "best" people are the best because
they would live up to those examples. The process that is proposed has
been designed to minimise the damage that may be caused when those
people turn out not to be the best.
Grey area is guaranteed to exist. This proposal deliberately embraces
and works within that, rather than attempting to prevent it.
Model Overview
==============
Key people and their functions
------------------------------
The Group of Unbiased Independent Directors of Order (GUIDO) is a
council of varying size, typically two to four people, who are elected
for the duration of a Python release. GUIDO has responsibility for
reviewing controversial decisions in the form of PEPs written by
members of the core development team.
GUIDO may choose to accept a PEP exactly as presented, or may request
clarification or changes. These changes may be of any form and for any
reason. This flexibility is intentional, and allows the process to
change over time as different members are elected to GUIDO. See the
later sections of this document for examples of the kinds of requests
that are expected.
GUIDO only pronounces on PEPs submitted to python-committers. There is
no expectation that GUIDO follows or participates on any other mailing
lists.
The Release Manager (RM) is also permitted the same ability to accept
or request changes on any PEPs that specify the release they are
responsible for. After feature freeze, the RM retains this
responsibility for their release, while GUIDO rotates and begins to
focus on the subsequent release. This is no different from the current
process. The process for selection of a RM is not changed in this
proposal.
Core developers are responsible for electing members of GUIDO, and
have the ability to call a "vote of no confidence" in members of
GUIDO. The details of these votes are discussed below.
Members of GUIDO may choose to resign at any point. If at least two
members of GUIDO remain, they may request a new election to refill the
group. If only one member remains, the election is triggered
automatically.
The intended balance of power is that the core developers elect
members of GUIDO who reflect the direction and have the trust of the
development team, and also have the ability to remove members who do
not honour commitments made prior to election.
Regular decision process
------------------------
Regular decisions continue to be made as at present.
For the sake of clarity, decisions requiring a PEP are always treated
as controversial.
GUIDO may be asked to advise on whether a decision would be better
made using the controversial decision process, but the core
development team is not bound by such advice.
Controversial decision process
------------------------------
Controversial decisions are always written up as PEPs, following the
existing process. The approver (formerly "BDFL-Delegate") is always
GUIDO.
GUIDO will pronounce on PEPs submitted to python-committers with a
request for pronouncement. Any member of GUIDO may request changes to
a PEP for any reason, provided they include some indication of what
additional work is required to meet their expectations. See later
sections for examples of expected reasons.
When all members of GUIDO indicate that they have no concerns with a
PEP, it is formally accepted. When one or more members of GUIDO fail
to respond in a reasonable time, the President of GUIDO may choose to
interpret that as implied approval. Failure of the President to
respond should be handled using a vote of no confidence.
Election terms
--------------
Members of GUIDO are elected for the duration of a release. The
members are elected prior to feature freeze for the previous release,
and hold their position until feature freeze for their release.
Members may seek re-election as many times as they like. There are no
term limits. It is up to the core developers to prevent re-election of
GUIDO members where there is consensus that the individual should not
serve again.
Election voting process
------------------------
The election process for each member of GUIDO proceeds as follows:
* a nomination email is sent to python-committers
* a seconding email is sent
* the nominee is temporarily added to python-committers for the
purpose of introducing themselves and presenting their position
* voting opens two weeks prior to the scheduled feature freeze of the
previous release
* votes are contributed by modifying a document in a private github
repository
* each core developer may add +1 votes for as many candidates as they
like
* after seven days, voting closes
* the nominee with the most votes is elected as President of GUIDO
* the next three nominees with the most votes and also at least 50%
the number of votes received by the President are elected as the
other members of GUIDO
* where ties need to be resolved, the RM may apply one extra vote for
their preferred candidates
* accepted nominees remain on python-committers; others are removed
No-confidence voting process
----------------------------
A vote of no confidence proceeds as follows:
* a vote of no confidence email is sent to python-committers, naming
the affected member of GUIDO, justifying the nomination, and
optionally listing accepted PEPs that the nominator believes should
be reverted
* a seconding email is sent within seven days
* the nominated member of GUIDO is allowed seven days to respond,
after which the nominator or the seconder may withdraw
* if no nominator or seconder is available, no further action is
taken
* voting opens immediately
* each core developer may add a +1 vote (remove the GUIDO member) or
a -1 vote (keep the GUIDO member) by modifying a document in a
private github repository
* after seven days, voting closes
* if +1 votes exceed -1 votes, the GUIDO member is removed from
python-committers and any nominated PEPs are reverted
* if requested by the remaining members of GUIDO, or if only one
member of GUIDO remains, a new election to replace the removed
member may be held following the usual process.
* in the case of removing the President of GUIDO, the candidate
who originally received the second-most votes becomes President
Examples of intended behaviour
==============================
This section describes some examples of the kind of interactions that
we hope to see between GUIDO and the core developers. None of these
are binding descriptions, but are intended to achieve some consensus
on the types of processes we expect. GUIDO candidates may campaign
on the basis of whatever process they prefer, and core developers
should allocate votes on this basis.
Scenario 1 - The Case of the Vague PEP
--------------------------------------
TODO
Scenario 2 - The Case of the Endless Discussion
-----------------------------------------------
TODO
Scenario 3 - The Case of the Unconsidered Users
-----------------------------------------------
TODO
Copyright
=========
This document has been placed in the public domain.
..
Local Variables:
mode: indented-text
indent-tabs-mode: nil
sentence-end-double-space: t
fill-column: 70
coding: utf-8
End: