Python packaging council approved
The Python packaging world now has a formal
governance council, of the form described in PEP 772 ("Packaging
Council governance process"), which was approved
by the steering council on April 16. It has been over a year
since the PEP was first proposed in February 2025 and it has undergone
lengthy discussions in multiple postings to the Python discussion forum. The
packaging council will have "broad authority over packaging standards,
tools, and implementations
"; it will consist of five members who will
be elected in a vote that is likely to come in June—after PyCon US 2026 is held mid-May.
The packaging council is modeled on the steering council and the more recent typing council. It is meant to be the decision-making body for Python packaging; the steering council will explicitly delegate its PEP-deciding role for relevant PEPs to the packaging council. Currently, the steering council has appointed Paul Moore and Donald Stufft as delegates to decide on packaging PEPs under the auspices of the Python packaging authority (PyPA).
The PyPA is a loose organization of packaging projects; it predates PEP 609 ("Python Packaging
Authority (PyPA) Governance") from 2019 that set out to document how the
group operates. The Packaging working group
was set up by the Python
Software Foundation (PSF) to help organize packaging projects, some of
which attracted grants from sponsors, such as the overhaul of the Python Package Index (PyPI) in 2017. As PEP 772 points out, however, neither of those two groups has a
"community elected body
", which is what the PEP is meant to address.
Various hurdles
The makeup of the "Python packaging community", thus who gets to vote on the members of the packaging council, has been a difficult thing to work out. When the PEP was first discussed, there was a somewhat complicated mechanism to seed the initial group of "community members" (who were the voting members), along with a way for those who did not qualify to be voted into the group. As Charlie Marsh, developer of the uv package manager, pointed out, he and his colleagues would not qualify because uv was not part of the PyPA and the company behind it is not a nonprofit. There was widespread agreement that the nonprofit requirement should be removed, but the discussion made it clear that putting a box around the Python packaging community was going to be extremely difficult to do.
When an updated PEP was posted for comments in May 2025, after the Packaging Summit held at PyCon US 2025, an entirely different way to define voting members was proposed. Instead of trying to be somewhat exclusionary and finding some way to define what a packaging-community member "looked like", the electors for the packaging council were aligned with the PSF membership. As Barry Warsaw, who authored the PEP along with PSF executive director Deb Nicholson and PyPA member Pradyun Gedam, put it in the post, using PSF membership:
simplifies the whole question and can encompass everyone. If you contribute to a PyPA project, or CPython, or the Python community or ecosystem, you are clearly a Contributing Member. If you instead prefer to act as a Sponsoring Member by donating to the PSF, then you're a PSF Member too, and can receive a ballot to vote in Packaging Council elections. Everyone who wants to vote, can!
Contributing members of the PSF simply self-certify that they volunteer at least five hours per month on projects that advance the mission of the organization.
The other major change with the PEP revision was to give more explicit oversight of the packaging council to the steering council. That fits with the steering council's overall technical-oversight role. Steering council members would also be prohibited from concurrently serving on the packaging council. The response to that update was generally favorable, with a few queries for clarification, small suggestions for updates, nitpicks, and so on.
That led to the posting of round three in July 2025 with a strong sense that the PEP was on track to start the process for approval. Because the PEP touched on multiple parts of the Python ecosystem—PyPA, PSF, and CPython itself—it required more than the usual steering-council approval. The PSF board needed to approve it, as did the PyPA following its process in PEP 609; once those two did so, the steering council would get its turn.
Re-approval
After the PSF board had voted to approve the PEP in August, there was an abortive attempt to have the PyPA vote on it. Voting was opened on September 4, but canceled a few days later. There were several problems with the PEP that were raised, by Bernát Gábor and Adam Turner in particular, but the two main sticking points were opening up the voting to all PSF members and quorum questions when there are multiple packaging-council members from the same organization.
There was discussion throughout September, but the bottom line was that the PEP authors (and other contributors to the drafting process) could not come up with a better way to define the electorate, Warsaw said in a lengthy post:
I don't have a point-by-point breakdown of all the issues that we identified, but I will say that trying to come up with a broad and equitable membership plan under the previous version was the most contentious issue, and the more we found flaws in that approach, the more the authors and other participants soured on it. I simply don't think it can be made workable. Speaking as one of three co-authors of the PEP, I have zero motivation to go back.Is the PSF membership requirement perfect? Of course not! But I strongly believe it's the most equitable and workable. PSF membership is open to any stakeholder who wants to participate.
Those who were unhappy with the definition of the electorate seemed to grudgingly accept that it was the "least bad" choice, though Moore requested that the eligibility and registration requirements to vote for the packaging council be prominently documented. A PEP update made in mid-December covered that request. The quorum question was more difficult, however.
Gábor was concerned that, since the PEP allowed up to two council members
from the same company or organization, the quorum of three might effectively
allow a single entity to dictate packaging policy at times. He wanted to
see a clause that required members from three separate employers if there
is a vote being taken by only three. Several did not think that would
become a problem in practice; Brett Cannon noted
that he could not remember a vote of only three steering-council members in his
five years on it. "Plus I think there would be major yelling from the rooftops if two people got elected to any of these councils who put their employer before the community.
"
However, several also said that there would be no harm in adding a
restriction like what Gábor was advocating. Carol Willing thought
it might be better to phrase it somewhat differently to say that the
majority on any vote "must include individuals from more than one
organization/company
". After describing some of the problems the Astropy community ran into with a
similar clause, Thomas Robitaille suggested
a simpler way forward: making the steering council the final arbiter of
conflicts of interest. Warsaw agreed
and added that to the PEP.
Final approval
Things went quiet for a few months, until PSF board member Jannis Leidel asked about the PEP's status on December 11. In a followup, he noted that the PSF board had approved an earlier version of the PEP and not the current one, which likely meant that the PEP text needed to be frozen and resubmitted. Gedam described the process for getting the PEP over the finish line on December 14 (in post number 100 of the third round of discussion); given the upcoming holidays, he was hopeful that the PEP could be approved by February.
That turned out to be a little overambitious. The PSF board approved
the PEP on March 23 with a change to the conflict-of-interest wording. The
steering council would be the arbiter for technical conflicts of interest,
while the PSF board would be "the final arbiter for conflicts of
interest related to governance for the Packaging Council
". The PyPA
vote started on April 6 and completed
on April 14 with a unanimous adoption by the 30 voters. Just a few days
later, the steering council chimed in and PEP 772 had—finally—been adopted.
While there were some hiccups along the way, establishing the packaging council will be a boon to the packaging community. With luck, it will potentially help the various package-management sub-communities—pip, conda, uv, and others—converge, or at least to cooperate and collaborate more. In the meantime, the PEPs currently under review, PEP 808 ("Including static values in dynamic metadata") and PEP 825 ("Wheel Variants: Package Format"), will proceed with Moore as the PEP delegate. The election of the inaugural packaging council will likely need to wait until June, but those interested in running will want to ensure they are PSF members, as that is required to either vote for or serve on the council. It will be interesting to see where things go from here; stay tuned ...
| Index entries for this article | |
|---|---|
| Python | Governance |
| Python | Packaging |
| Python | Python Enhancement Proposals (PEP)/PEP 772 |
