From 4269f305b760a706438eae2823c948988ff8a48c Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 22:42:07 +0000 Subject: [PATCH 01/14] Rewrap to 79 character wide Certain lines were wrapped incorrectly. --- peps/pep-0772.rst | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 6fb3f1650d2..9e372eeed42 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -141,7 +141,8 @@ The council shall work to: * Establish appropriate decision-making processes. * Improve Python packaging's user experience. * Make contributing as accessible, inclusive, and sustainable as possible. -* Strive to seek consensus among contributors before acting in a formal capacity. +* Strive to seek consensus among contributors before acting in a formal + capacity. Responsibilities ================ @@ -167,19 +168,18 @@ publicly in a timely fashion. Delegations ----------- -The Python Steering Council is expected to delegate decision making to -the Packaging Council for PEPs related to the Python packaging. The bodies -would work together on issues that intersect the packaging domain and language +The Python Steering Council is expected to delegate decision making to the +Packaging Council for PEPs related to the Python packaging. The bodies would +work together on issues that intersect the packaging domain and language stewardship (including the CPython implementation, standard library, and distribution). -The PSF Board is encouraged to formally deprecate the Packaging Workgroup -and the Packaging Council would take on the responsibilities of the -PSF's Packaging Workgroup. +The PSF Board is encouraged to formally deprecate the Packaging Workgroup and +the Packaging Council would take on the responsibilities of the PSF's Packaging +Workgroup. -The PyPA is expected to work with the Packaging Council to establish a -decision making process that governs the technical projects under the PyPA -umbrella. +The PyPA is expected to work with the Packaging Council to establish a decision +making process that governs the technical projects under the PyPA umbrella. Processes ========= @@ -209,8 +209,8 @@ election for the council. Term ---- -There shall be two cohorts of council members: Cohort A composed of two -members and Cohort B composed of three members. +There shall be two cohorts of council members: Cohort A composed of two members +and Cohort B composed of three members. Each council member shall be elected for a two-year term, unless they are replacing a council member that resigned, was removed, or otherwise becomes @@ -223,9 +223,9 @@ finalised until the next elections for their cohort are finalised. Only for elections involving the entire council (like the initial council election), the two candidates receiving the highest number of votes shall be -designated Cohort A with a two year term, and the three candidates -receiving the highest number of votes after shall be designated Cohort B with a -one year term. +designated Cohort A with a two year term, and the three candidates receiving +the highest number of votes after shall be designated Cohort B with a one year +term. There are no term limits for individual council members. @@ -245,9 +245,11 @@ Conflicts of interest --------------------- No more than two Packaging Council members should be employed by or -significantly affiliated with the same entity. An entity would be a company, -a company and its subsidiaries, or another incorporated entity such as a -non-profit or educational institution with its own mission and goals. PSF members are explicitly exempt from this restriction, but _not_ PSF employees, directors, or officers. +significantly affiliated with the same entity. An entity would be a company, a +company and its subsidiaries, or another incorporated entity such as a +non-profit or educational institution with its own mission and goals. PSF +members are explicitly exempt from this restriction, but _not_ PSF employees, +directors, or officers. While we trust council members to act in the best interests of Python rather than themselves or their employers, the mere appearance of any one company From 848bc421551f823ff3284a98c045dd466da7455a Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 22:58:26 +0000 Subject: [PATCH 02/14] Tighten up language for the steering council delegations Instead of "expected", make it clear that the Steering Council "will" change their delegations. --- peps/pep-0772.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 9e372eeed42..d546e2c46fd 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -168,11 +168,10 @@ publicly in a timely fashion. Delegations ----------- -The Python Steering Council is expected to delegate decision making to the -Packaging Council for PEPs related to the Python packaging. The bodies would -work together on issues that intersect the packaging domain and language -stewardship (including the CPython implementation, standard library, and -distribution). +The Python Steering Council will delegate decision making to the Packaging +Council for PEPs related to the Python packaging. The bodies would work +together on issues that intersect the packaging domain and language stewardship +(including the CPython implementation, standard library, and distribution). The PSF Board is encouraged to formally deprecate the Packaging Workgroup and the Packaging Council would take on the responsibilities of the PSF's Packaging From ee427cfd796ae95a10a3187197de4726413ba080 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:01:42 +0000 Subject: [PATCH 03/14] Disallow PSF staff from serving on the packaging council There is a potential CoI around direct control over the funding that they would have approval power on. --- peps/pep-0772.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index d546e2c46fd..bd0815e1a1f 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -246,14 +246,16 @@ Conflicts of interest No more than two Packaging Council members should be employed by or significantly affiliated with the same entity. An entity would be a company, a company and its subsidiaries, or another incorporated entity such as a -non-profit or educational institution with its own mission and goals. PSF -members are explicitly exempt from this restriction, but _not_ PSF employees, -directors, or officers. +non-profit or educational institution with its own mission and goals. PSF +members are explicitly exempt from this restriction, but _not_ PSF directors, +or officers. While we trust council members to act in the best interests of Python rather than themselves or their employers, the mere appearance of any one company dominating Python development could itself be harmful and erode trust. +PSF staff members are not permitted to be on the Packaging Council. + In a council election, if more than two of the top five vote-getters work for the same employer, then whichever of them ranked lowest is disqualified and the 6th-ranking candidate moves up into 5th place; this is repeated until a valid From 70f2b4b5e82ec7cf9882295024658fe9b8164290 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:02:37 +0000 Subject: [PATCH 04/14] Change initial membership organisations to an explicitly curated list This list needs to be written down before the PEP can be voted on / approved. --- peps/pep-0772.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index bd0815e1a1f..57dd6230eff 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -292,10 +292,10 @@ includes: will be moved into the Packaging community. * Interested core team members: Any Python core team member who is willing to participate is welcome. -* Wider community members: Non-profit organisations that participate in - packaging or working with new packagers. For example, PyOpenSci, NumFocus, - Django, are encouraged to initially nominate up to seven members by sending - an email to \[todo\]. +* Wider community members: An initial set of for-profit companies, nonprofit + organizations, academic or educational institutions and smaller unaffiliated + projects would be invited to nominate three individuals to represent them. + [TODO: add a link here for the initial set, that the authors curate] Adding a new member ------------------- From 4d32d17c89c01ba8dd2a06d90faa775b7a6f45f7 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:03:28 +0000 Subject: [PATCH 05/14] Soften language on Packaging workgroup members becoming voters They might not want to become a voting member, or be appropriately available to do so. --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 57dd6230eff..ad1e6fb09bf 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -289,7 +289,7 @@ includes: * PyPA members: Anyone with the triage bit or commit bit, or at least one project in the PyPA organisation. * Packaging workgroup members: Anyone who is listed on the Packaging WG charter - will be moved into the Packaging community. + who is willing to participate is welcome. * Interested core team members: Any Python core team member who is willing to participate is welcome. * Wider community members: An initial set of for-profit companies, nonprofit From ee84c49d6455a00b918f2edd51ed9341262de029 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:05:57 +0000 Subject: [PATCH 06/14] Packaging community member -> voting member --- peps/pep-0772.rst | 77 +++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index ad1e6fb09bf..48b891e5bc8 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -188,13 +188,13 @@ Election of the council A council election consists of two phases: -* Phase 1: A member of the Packaging community (defined later in this document) - can self-nominate themselves for the council elections. -* Phase 2: Each Packaging community member 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. +* Phase 1: A voting member (defined later in this document) can self-nominate + themselves for the council elections. +* Phase 2: Each voting member 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. Each phase should last two weeks. @@ -266,15 +266,15 @@ During a council term, if changing circumstances cause this rule to be broken council members must resign to remedy the issue, and the resulting vacancies can then be filled as normal. -------------------- -Packaging community -------------------- +-------------- +Voting members +-------------- Responsibility ============== -Packaging community members participate in formal votes to elect the Packaging -Council. +Voting members participate in formal votes to elect the Packaging Council. + Processes ========= @@ -282,9 +282,8 @@ Processes Initial membership ------------------ -Initial membership in the Packaging community will include anyone who has taken -the time to formalise their participation in the Packaging community. This -includes: +Initial set of voting members will include anyone who has taken the time to +formalise their participation in the packaging community. This includes: * PyPA members: Anyone with the triage bit or commit bit, or at least one project in the PyPA organisation. @@ -300,14 +299,14 @@ includes: Adding a new member ------------------- -Members are added to the Packaging community by a simple majority vote by the -current membership. Quorum for adding new members is 50%. +New voting members are added by a simple majority vote by the current +membership. Quorum for adding new members is 50%. -A vote to add a new member is triggered when a Packaging community member calls -for one publicly on an appropriate communication channel, and another Packaging -community member seconds the call within two weeks. +A vote to add a new member is triggered when a voting member calls for one +publicly on an appropriate communication channel, and another voting member +seconds the call within two weeks. -The vote lasts for two weeks. Packaging community members vote for or against. +The vote lasts for one week. Each member can vote for or against. Removal of a member ------------------- @@ -319,28 +318,28 @@ 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 -Packaging community against their will (for example: egregious and ongoing code -of conduct violations). A Packaging community member may be removed by a -two-thirds majority vote by the Packaging Council (in practice: 4:1 for a -council with five members). +voting members against their will (for example: egregious and ongoing code of +conduct violations). A voting member 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 Packaging community member 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 from the Packaging community. The vacancy is -filled as per the process for filling vacancies in the Packaging Council. +If the relevant voting member 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 a voting member. The vacancy is filled as per the process +for filling vacancies in the Packaging Council. Vote of no confidence --------------------- -In exceptional circumstances, the Packaging community may remove a sitting -council member, or the entire council, via a vote of no confidence. +In exceptional circumstances, the voting members may remove a sitting council +member, or the entire council, via a vote of no confidence. -A no-confidence vote is triggered when a Packaging community member calls for -one publicly on an appropriate public communication channel, and another -Packaging community member seconds the call within two weeks. +A no-confidence vote is triggered when a voting member calls for one publicly +on an appropriate public communication channel, and another voting member +seconds the call within two weeks. -The vote lasts for two weeks. Packaging community members vote for or against. -If at least two thirds of voters express a lack of confidence, then the vote +The vote lasts for two weeks. Each voting member votes for or against. If at +least two thirds of voters express a lack of confidence, then the vote succeeds. Quorum for a vote of no confidence is 50%. There are two forms of no-confidence votes: those targeting a single member, @@ -355,8 +354,8 @@ Changing the governance ----------------------- Changes to this governance model, once it is accepted, will require at least a -two-thirds majority of votes cast in a Packaging community vote which should be -open for two weeks. +two-thirds majority of votes cast in a vote, which should be open for two +weeks. ============== Rejected Ideas @@ -445,7 +444,7 @@ Packaging Council will meet on a regular basis (twice a month). * Coordinate with the Steering Council on PEPs that need input from both groups. * Coordinate with PyPA on their ongoing work to support individual projects. -* Delegate to domain experts or working groups in the Packaging community, for +* Delegate to domain experts or working groups in the packaging community, for initiatives/PEPs with a niche focus (analogous to how the Steering Council sends certain PEPs to the C API working group). * Scope out work that might best be done by hiring someone and then work with From 5029541186e29feb79ce4b8359aef63a4f4ac543 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:06:40 +0000 Subject: [PATCH 07/14] :art: Consistently use single space after period --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 48b891e5bc8..b15ee8e3bde 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -403,7 +403,7 @@ two individuals related to a single organisation can be on the council. Limiting it to one is workable; although it hasn't come up in the SC, people do move around, and we wouldn't want good candidates to either make employment decisions based on PC membership, or have to resign based on an employment -change. Limiting it to a maximum of two, plus votes of no confidence is +change. Limiting it to a maximum of two, plus votes of no confidence is probably sufficient safety from any undue employer influence. --------------------------------------------------------------------------- From 400558280b7dfd240631ed0ec6431cf33a74110a Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 24 Mar 2025 23:14:42 +0000 Subject: [PATCH 08/14] Explicitly require listing affiliations --- peps/pep-0772.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index b15ee8e3bde..5d365f0a4dd 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -189,7 +189,8 @@ Election of the council A council election consists of two phases: * Phase 1: A voting member (defined later in this document) can self-nominate - themselves for the council elections. + themselves for the council elections. Such a nomination must include + information about the member's relevant affiliations. * Phase 2: Each voting member 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`_ From 1050d4f5b94cbbe3b6561e5423ee9fcda3d8801f Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 25 Mar 2025 16:47:19 -0700 Subject: [PATCH 09/14] Update peps/pep-0772.rst Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 5d365f0a4dd..e8797b71f6c 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -248,7 +248,7 @@ No more than two Packaging Council members should be employed by or significantly affiliated with the same entity. An entity would be a company, a company and its subsidiaries, or another incorporated entity such as a non-profit or educational institution with its own mission and goals. PSF -members are explicitly exempt from this restriction, but _not_ PSF directors, +members are explicitly exempt from this restriction, but *not* PSF directors or officers. While we trust council members to act in the best interests of Python rather From 3ded273bd23db051f58ea7c73295a9629c775407 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 25 Mar 2025 16:50:16 -0700 Subject: [PATCH 10/14] Update peps/pep-0772.rst Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index e8797b71f6c..fa99c346bf6 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -245,7 +245,7 @@ Conflicts of interest --------------------- No more than two Packaging Council members should be employed by or -significantly affiliated with the same entity. An entity would be a company, a +significantly affiliated with the same entity. An entity is a company, a company and its subsidiaries, or another incorporated entity such as a non-profit or educational institution with its own mission and goals. PSF members are explicitly exempt from this restriction, but *not* PSF directors From c437e6c3b60d638e3cb7028d4e297216d33fdfd5 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 25 Mar 2025 16:50:39 -0700 Subject: [PATCH 11/14] Update peps/pep-0772.rst Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index fa99c346bf6..0a2fb5fede1 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -255,7 +255,7 @@ While we trust council members to act in the best interests of Python rather than themselves or their employers, the mere appearance of any one company dominating Python development could itself be harmful and erode trust. -PSF staff members are not permitted to be on the Packaging Council. +PSF staff members are not permitted to be 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 whichever of them ranked lowest is disqualified and the From 9373141bc17b7cab88172588e036fe790e3f6eab Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 21 Apr 2025 16:05:50 -0700 Subject: [PATCH 12/14] Update peps/pep-0772.rst --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 0a2fb5fede1..073cc29cead 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -173,7 +173,7 @@ Council for PEPs related to the Python packaging. The bodies would work together on issues that intersect the packaging domain and language stewardship (including the CPython implementation, standard library, and distribution). -The PSF Board is encouraged to formally deprecate the Packaging Workgroup and +The PSF Board is encouraged to formally deactivate the Packaging Workgroup and the Packaging Council would take on the responsibilities of the PSF's Packaging Workgroup. From 477f3f112aee13f428aa3452e466ffb38f8554e3 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 21 Apr 2025 16:09:41 -0700 Subject: [PATCH 13/14] Update peps/pep-0772.rst --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 073cc29cead..d49348d3508 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -189,7 +189,7 @@ Election of the council A council election consists of two phases: * Phase 1: A voting member (defined later in this document) can self-nominate - themselves for the council elections. Such a nomination must include + themselves, or nominate any other candidate, for the council elections. Such a nomination must include information about the member's relevant affiliations. * Phase 2: Each voting member can assign zero to five stars to each candidate. Voting is performed anonymously. The outcome of the vote is determined using From d340de6825def874b5c66f1c99722dc53f9b1048 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 21 Apr 2025 16:09:58 -0700 Subject: [PATCH 14/14] Update peps/pep-0772.rst --- peps/pep-0772.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index d49348d3508..df4fadbcca9 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -295,7 +295,7 @@ formalise their participation in the packaging community. This includes: * Wider community members: An initial set of for-profit companies, nonprofit organizations, academic or educational institutions and smaller unaffiliated projects would be invited to nominate three individuals to represent them. - [TODO: add a link here for the initial set, that the authors curate] + See [link to Appendix] for the initial set of community voting members. Adding a new member -------------------