I am proposing to adopt STAR voting for the 2025 Steering Council elections.
The voting method is currently fixed by PEP 13, which has a specific procedure for changes, which is partially specified in PEP 13 itself.
Assuming we can agree on how to run the vote to change PEP 13, we need to draft a change to PEP 13 that describes STAR voting.
PEP 13 currently has this on the SC election process:
Electing the council
A council election consists of two phases:
- Phase 1: Candidates advertise their interest in serving. Candidates must be nominated by a core team member. Self-nominations are allowed.
- Phase 2: Each core team member can vote for zero or more of the candidates. Voting is performed anonymously. Candidates are ranked by the total number of votes they receive. 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 lasts one to two weeks, at the outgoing council’s discretion. For the initial election, both phases will last two weeks.
The election process is managed by a returns officer nominated by the outgoing steering council. For the initial election, the returns officer will be nominated by the PSF Executive Director.
The council should ideally reflect the diversity of Python contributors and users, and core team members are encouraged to vote accordingly.
The only text I’d like to change is the “Phase 2” bullet. Here’s my current best effort:
- Phase 2: Each core team member can assign zero to five stars to all candidates. Voting is performed anonymously. The outcome of the vote is determined using the STAR voting system (www.starvoting.org). If a tie occurs, it may be resolved by mutual agreement among the candidates, or else the winner will be chosen at random.
Or, in diff form:
diff --git a/peps/pep-0013.rst b/peps/pep-0013.rst
index fca214c0..cc9dd4fe 100644
--- a/peps/pep-0013.rst
+++ b/peps/pep-0013.rst
@@ -105,11 +105,11 @@ A council election consists of two phases:
must be nominated by a core team member. Self-nominations are
allowed.
-* Phase 2: Each core team member can vote for zero or more of the
- candidates. Voting is performed anonymously. Candidates are ranked
- by the total number of votes they receive. If a tie occurs, it may
- be resolved by mutual agreement among the candidates, or else the
- winner will be chosen at random.
+* Phase 2: Each core team member can assign zero to five stars to all
+ candidates. Voting is performed anonymously. The outcome of the vote
+ is determined using the STAR voting system (www.starvoting.org).
+ 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 lasts one to two weeks, at the outgoing council's discretion.
For the initial election, both phases will last two weeks.
I have one insecurity about this draft text: maybe it should elaborate how we intend to use STAR (which is inherently a single-winner system) to select N candidates? I know how to do that but the description is a bit verbose: Basically, you repeatedly select a winner and then remove that candidate from all ballots until you have selected enough winners. But there are some special provisions for ties (a tie is a non-problem if it can be resolved by selecting the other tied candidates in subsequent steps). This seems a lot of words for a high-level document like PEP 13.
Thoughts?
Once we have rough agreement on the draft text of the change (this topic) and on the process to use to make the change official (separate topic), I will create a new issue here to initiate the vote (or do whatever else we end up choosing to make such a change).