Skip to content

PEP 772: Updates based on conversations at PyCon #4429

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 20 commits into
base: main
Choose a base branch
from
Open
Changes from 7 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
93 changes: 45 additions & 48 deletions peps/pep-0772.rst
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ will:

* Work with PSF staff and the newly formed `User Success Workgroup`_ toward
improving the user experience around packaging.
* Pronounce on and promote APIs, protocols, interfaces, and other interoperable standards relevant
to Python packaging.
* Facilitate a more stable packaging ecosystem that is more responsive to community input.
* Increase transparency and clearly share the goals for the packaging ecosystem.
* Facilitate tactical and fundraising support from the PSF, to increase capacity
Expand All @@ -136,7 +138,7 @@ Mandate
The council shall work to:

* Maintain the quality and stability of the Python packaging standards.
* Formalize and maintain the relationship with the Python core team as well as the
* Formalize and maintain the working relationships with the Python core team as well as the
Python Software Foundation.
* Establish appropriate decision-making processes.
* Improve Python packaging's user experience.
Expand All @@ -159,7 +161,10 @@ The council shall:

To use its powers, the Packaging Council votes. Every Council member must either vote or explicitly
abstain. Members with conflicts of interest on a particular vote must abstain. Passing requires
support from a majority of non-abstaining Council members.
support from a majority of non-abstaining Council members, which requires a quorum of 3
non-abstaining members. If the Packaging Council cannot (e.g., by lack of quorum) or wishes not to
come to a decision on its own, it can also refer the matter to the Steering Council, whose decision
on the matter will be binding.

Whenever possible, the Packaging Council is expected to share its decisions and processes
publicly in a timely fashion.
Expand Down Expand Up @@ -208,22 +213,11 @@ A Packaging Council election consists of the following phases:

Each phase will last two weeks.

The Packaging Council election process is managed by one Returning Officer nominated by the Python Steering
Council. The PSF shall maintain records of the elections as well as run the annual election for the
Packaging Council.

Ballots are ordinarily kept anonymous to all (including the Returning Officer) but with sufficient information
to deanonymize them. Deanonymization requires a supermajority (two-thirds) vote of at least two of the Python
Steering Council, the PSF Board, and the current Packaging Council. Deanonymization must only be done to
investigate the possibility of coordinated/inauthentic activity in the Packaging Council election that does
not, in the view of the bodies that vote to deanonymize, accurately represent the Python Packaging community.
The proposal to deanonymize must identify to whom ballot identities are revealed (which cannot be the general
public). "Anonymous" in this context shall be deemed to include software that can show identities to the
Returning Officer or their designees in response to explicit user action, provided it does not show it by
default.

It is expected that any deanonymization request acted on will be followed by a proposal to change this PEP in
order to address any identified irregularities that precipitated such a request.
The Packaging Council election process is managed by a returns officer nominated by the Python
Steering Council. The PSF shall maintain records of the elections as well as run the annual
election for the Packaging Council. The Steering Council must certify the results of the election
and may work with the returns officer in whatever capacity is necessary to validate the integrity of
the election.


Term
Expand Down Expand Up @@ -269,16 +263,16 @@ Packaging Council members to fill the vacancies, or call for new Packaging Counc
Conflicts of interest
---------------------

No more than two Packaging Council members may be employed by or significantly affiliated with the same
entity. An entity is a company and its subsidiaries, or another incorporated entity such as a non-profit or
educational institution with its own mission and goals. Significant affiliation includes, at the least,
receiving wages for current work, officer/director roles, and 25% or more ownership stake. PSF membership at
any member class (as defined by Article IV of the PSF bylaws) does not count as an affiliation for this
purpose.
No more than two Packaging Council members may be employed by the same entity. An entity is a
company and its subsidiaries, or another incorporated entity such as a non-profit or educational
institution with its own mission and goals. Significant affiliation includes, at the least,
receiving compensation for current work, officer/director roles, and 25% or more ownership stake.
PSF membership at any member class (as defined by Article IV of the PSF bylaws) does not count as an
affiliation for this purpose.

While we expect and trust Packaging Council members to act in the best interests of Python rather than
themselves or their affiliations, the mere appearance of any one such organization dominating Python
development could itself be harmful and erode trust.
packaging development could itself be harmful and erode trust.

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

Expand Down Expand Up @@ -307,10 +301,11 @@ 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 similar change to match. As with PSF voting membership,
Packaging Council Electors must affirm their intention to vote in Packaging Council elections every year.
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.

.. _process:

Expand All @@ -325,32 +320,28 @@ for two consecutive Council elections automatically removes a person from the li
Electors, until they re-submit their intention to resume their participation to the Packaging Council in
writing.

In exceptional circumstances, it may be necessary to remove someone from the Electors against their will (for
example: egregious and ongoing code of conduct violations). An Elector may be removed by a two-thirds majority
vote by the Packaging Council (in practice: 4:1 for a Council with five members).

If the relevant Elector is also on the Packaging Council, then they can participate in the vote. They are
removed from the Packaging Council if the vote removes them as an Elector. The vacancy is filled as per the
`normal process <vacancy>`_.

Vote of no confidence
---------------------

In exceptional circumstances, the Electors may remove a sitting Council member, or the entire Council, via a
vote of no confidence.
In exception circumstances, a vote of no confidence may be called to remove a sitting Packaging
Council member, or the entire council. The Python Steering Council may call such votes of no
confidence, with no second being necessary. Anyone may request such a vote of no confidence from
the Steering Council, regardless of the requester's membership or affiliation, and the Steering
Council has full discretion to call for the vote or not.

A no-confidence vote is triggered when an Elector calls for one publicly on an appropriate public
communication channel, and another Elector seconds the call within one week.

The vote lasts for two weeks. Each Elector votes for or against. If at least two thirds of Electors express a
lack of confidence, then the vote succeeds. Quorum for a vote of no confidence is 50% of Electors.
The vote of no confidence lasts for two weeks. Each Elector votes for or against. If at least two
thirds of Electors express a lack of confidence, then the vote succeeds. Quorum for a vote of no
confidence is 50% of Electors.

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.

If a no-confidence vote fails, another identical no-confidence vote (that is, of the same form, and
against the same member for the first form) may not be raised for six months from the initial call.

-----------------------
Changing the governance
-----------------------
Expand Down Expand Up @@ -387,10 +378,16 @@ serve.
Elector eligibility
-------------------

Previous iterations of this PEP's draft proposed different membership rules for identifying the Packaging
Council Electors. After extensive discussion among stakeholders, and after seeking the widest possible
feedback, the PEP authors agreed that aligning Packaging Council Electors with PSF Board voting membership was
both the most equitable and most workable arrangement.
Previous iterations of this PEP's draft proposed different membership rules for identifying the
Packaging Council Electors. After extensive discussion among stakeholders, and after seeking the
widest possible feedback, the PEP authors agreed that aligning Packaging Council Electors with PSF
Board voting membership was both the most workable arrangement and the most equitable approach to
include all parts of the Python packaging community.

PSF membership is used here because it is open to the broadest possible Python community. In
particular, most people doing Python packaging work, do so in public, including contributing to both
PyPA and non-PyPA projects, are likely to be eligible for PSF "Contributing Membership" based on
that work, without paying any membership fee.

-------------------------------
Approval voting in the election
Expand Down