Skip to content

PEP 772: Updates based on DPO thread and author discussion w/PSF representatives #4466

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 43 additions & 26 deletions peps/pep-0772.rst
Original file line number Diff line number Diff line change
Expand Up @@ -198,21 +198,22 @@ Election of the Packaging Council
A Packaging Council election consists of the following phases:

* **Phase 1**: Packaging Council Electors are determined by opt-in self-selection of the `PSF voting
members <voting-members>`_. The PSF voting membership is informed that Packaging Council ballots
will be available, and any PSF voting member can request a ballot. The PSF may choose to solicit
members`_. The PSF voting membership is informed that Packaging Council ballots will be
available, and any PSF voting member can request a ballot. The PSF may choose to solicit
participation for both the PSF Board elections and Packaging Council elections at the same time.
Packaging Council Electors retain their voting rights for the entire year, and may exercise such
rights for other community-wide votes that may occur during that year.

* **Phase 2**: Packaging Council Electors may nominate any individual for the Council election, including
themselves. Nominees do not need to be PSF members, but nominations must include information
themselves. Nominees must themselves be PSF voting members, and nominations must include information
about the nominee's relevant affiliations.

* **Phase 3**: Each Elector receives a ballot consisting of all eligible nominees, which Electors
use to cast their vote for the Packaging Council. They can assign zero to five stars to each
candidate. Voting is performed anonymously. The outcome of the vote is determined using the `STAR
voting system`_, modified to use the `Multi-winner Bloc STAR`_ approach. If a tie occurs, it may
be resolved by mutual agreement among the candidates, or else the winner will be chosen at random.
use to cast their vote for the Packaging Council. The mechanics of the election (i.e. the
software used to conduct the election, the algorithm used to determine the outcome of the vote,
etc.) are conducted by the PSF, in accordance with the `PSF bylaws`_ and its regular Board
election procedures. If a tie occurs, it may be resolved by mutual agreement among the
candidates, or else the winner will be chosen at random.

Each phase will last two weeks.

Expand Down Expand Up @@ -243,6 +244,10 @@ original cohort.
Each Council member's term will be two years, from when their elections are
finalized until the next elections for their cohort are finalized.

As Packaging Council elections will generally align with the timing of PSF Board elections, any
members elected in an "off cycle" Council election (such as the initial Council election) will
similarly serve until the next regular election for their cohort.

.. _whole-council:

Only for elections of the entire Packaging Council (such as the initial Council election), the two
Expand Down Expand Up @@ -285,7 +290,7 @@ packaging development could itself be harmful and erode trust.

PSF staff members are not permitted to serve as members of the Packaging Council.

Currently serving Steering Council members are not permitted to concurrently serve as members of the Packaging
Serving Steering Council members are not permitted to concurrently serve as members of the Packaging
Council.

In a Council election, if more than two of the top five vote-getters work for the same employer, then only the
Expand All @@ -294,9 +299,18 @@ elevated in the vote rank. This process is repeated until a valid Packaging Cou
process a full Council cannot be formed, disqualified vote-getters are re-qualified in the rank order of their
vote tally until a full Council can be formed.

If fewer than five members are to be elected, an analogous procedure is applied in order to
guarantee that no more than two members of the entire Packaging Council work for the same employer.

During a Packaging Council term, if changing circumstances cause this rule to be broken (for instance, due to
a Council member changing employment), then one or more Council members must resign to remedy the issue, and
the resulting vacancies can then be filled as `normal <vacancy>`_.
the resulting vacancies can then be filled as :ref:`normal <vacancy>`.

Code of Conduct
---------------

All Packaging Council Electors and Packaging Council members are subject to, and must abide by the
PSF `Code of Conduct`_, its enforcement procedures, and its remedies for adjudicated violations.

.. _electors:

Expand All @@ -311,10 +325,13 @@ Responsibilities
Packaging Council Electors participate in formal votes to elect the Packaging Council.

The eligibility of Packaging Council Electors is equivalent to the Article IV, section 4.2 voting
membership defined in the `PSF Bylaws <https://www.python.org/psf/bylaws/>`_. Should those bylaws
change in the future, the eligibility of Packaging Council Electors will similarly change to match.
As with PSF voting membership, Packaging Council Electors must affirm their intention to vote in
Packaging Council elections every year.
membership defined in the `PSF bylaws`_. Should those bylaws change in the future, the eligibility
of Packaging Council Electors will similarly change to match. Packaging Council Electors must
affirm their intention to vote in Packaging Council elections in a manner and process similar to PSF
Board voting membership affirmations.

PSF voting members may opt-out (annually or indefinitely) from Packaging Council elections
independently of their choice to vote in PSF Board elections.

.. _process:

Expand All @@ -336,8 +353,8 @@ thirds of Electors express a lack of confidence, then the vote succeeds.
There are two forms of no-confidence votes: those targeting a single member, and those targeting the Council
as a whole. The initial call for a no-confidence vote must specify which type is intended. If a single-member
vote succeeds, then that member is removed from the Council and the resulting vacancy can be handled by the
`normal process <vacancy>`_. If a whole-Council vote succeeds, the Council is dissolved and a new Council
election is triggered immediately, using the rules for `whole Council <whole-council>`_ elections.
:ref:`normal process <vacancy>`. If a whole-Council vote succeeds, the Council is dissolved and a new Council
election is triggered immediately, using the rules for :ref:`whole Council <whole-council>` elections.

-----------------------
Changing the governance
Expand All @@ -358,10 +375,8 @@ Steering Council's elections. This PEP uses a cohort-based model, derived from
the PSF Board's elections which enables continuity of members across a changing
Council.

There is a trade-off between continuity of the Council and full reshuffles. This PEP
takes the position that continuity will be more valuable for the Python
Packaging domain, especially combined with the vote of no confidence, automatic
removal of inactive voters, and regular elections.
There is a trade-off between continuity of the Council and full reshuffles. This PEP takes the
position that continuity will be more valuable for the Python Packaging ecosystem.

-------------------------------
Term limits for council members
Expand Down Expand Up @@ -390,11 +405,12 @@ on that work without paying any membership fee.
Approval voting in the election
-------------------------------

An earlier non-public draft of this PEP used an approval voting process, which aligned with what :pep:`13`
stated at the time of writing. The Python core team has changed their governance to use Bloc STAR and this PEP
was updated to align with that for the same reasons as the core team's move to Bloc STAR: it better captures
voter intention in the results. It is also expected that the same election machinery can be used for both
elections.
An earlier non-public draft of this PEP used an approval voting process, which aligned with what
:pep:`13` stated at the time of writing. The Python core team has changed their governance to use
Bloc STAR, and this PEP was temporarily changed to use the same mechanism. However, since Packaging
Council elections will now be concurrent with PSF Board elections, with the same voting constituency
(i.e. PSF voting membership), and administered by the same returns officer, this PEP was updated to
align Packaging Council elections with PSF Board elections.

------------------------------------------------------------------
Disallow multiple people from the same organization on the council
Expand Down Expand Up @@ -482,5 +498,6 @@ packaging user experience.
.. _virtualenv: https://packaging.python.org/en/latest/key_projects/#virtualenv
.. _Packaging Workgroup: https://wiki.python.org/psf/PackagingWG
.. _User Success Workgroup: https://github.com/psf/user-success-wg/
.. _STAR voting system: https://www.starvoting.org/
.. _Multi-winner Bloc STAR: https://www.starvoting.org/multi_winner
.. _PSF bylaws: https://www.python.org/psf/bylaws/
.. _Code of Conduct: https://policies.python.org/python.org/code-of-conduct/
.. _PSF voting members: https://www.python.org/psf/membership/