diff --git a/peps/pep-0772.rst b/peps/pep-0772.rst index 49a12955116..44a608cee24 100644 --- a/peps/pep-0772.rst +++ b/peps/pep-0772.rst @@ -198,31 +198,31 @@ 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 `_. 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. -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. Election transparency being of paramount importance for trust in the process, full -vote totals *before* any exclusions, while maintaining anonymity, should be made public when -technically possible. +The Packaging Council election process is managed by a returns officer nominated by the PSF Board. +The PSF shall maintain records of the elections as well as run the annual election for the Packaging +Council. The PSF Board 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. Election +transparency being of paramount importance for trust in the process, full vote totals *before* any +exclusions, while maintaining anonymity, should be made public when technically possible. Quorum for Packaging Council votes (either cohort election or votes of no confidence) is 50% of Electors. @@ -243,6 +243,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 @@ -266,8 +270,9 @@ If a Council member drops out of touch and cannot be contacted for a month or longer, then the rest of the Council may vote to replace them (with a simple majority vote, where the missing member is recorded as an abstention). -If a full Packaging Council cannot be seated by this process, the Python Steering Council can appoint new -Packaging Council members to fill the vacancies, or call for new Packaging Council elections. +If a full Packaging Council cannot be seated by this process, the PSF Board, in consultation with +the Python Steering Council, can appoint new Packaging Council members to fill the vacancies, or +call for new Packaging Council elections. Conflicts of interest --------------------- @@ -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 @@ -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 `_. +the resulting vacancies can then be filled as :ref:`normal `. + +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: @@ -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 `_. 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: @@ -325,10 +342,11 @@ Vote of no confidence --------------------- In exceptional 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 +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. +Council has discretion to call for the vote or not. The PSF Board may overrule the Steering Council +to initiate a vote of no confidence. 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. @@ -336,8 +354,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 `_. If a whole-Council vote succeeds, the Council is dissolved and a new Council -election is triggered immediately, using the rules for `whole Council `_ elections. +:ref:`normal process `. 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 ` elections. ----------------------- Changing the governance @@ -358,10 +376,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 @@ -390,11 +406,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 @@ -482,5 +499,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/