Skip to content

Commit 4885252

Browse files
committed
Draft of completed EO Handbook, with templates.
Signed-off-by: Josh Berkus <[email protected]>
1 parent 4709a93 commit 4885252

File tree

8 files changed

+750
-159
lines changed

8 files changed

+750
-159
lines changed

elections/steering/README.md

Lines changed: 6 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,10 @@
1-
## Kubernetes Elections
1+
# Kubernetes Steering Elections
22

3-
This document is a guide for Election Committee members
4-
conducting a Kubernetes Steering Committee Election.
3+
This folder contains information on the Kubernetes Steering elections since 2017.
54

6-
It is currently a Work In Progress, and contains much that is outdated.
5+
The last Steering election, including all directions on eligibility, voting, and candidates, can be found here: [2022 Election]
76

8-
See the [Steering Committee Election Charter](https://git.k8s.io/steering/elections.md)
9-
for more information of how the committee decides when to have elections,
10-
eligibility for voting, eligibility for candidacy, maximal representation, etc.
7+
You can also read [documentation] on how to run a Steering Election.
118

12-
## Updated instructions
13-
14-
## Election Process
15-
16-
### Qualifying Candidates
17-
18-
In order to qualify to run for SC, each candidate must meet three requirements:
19-
20-
1. Be themselves eligible to vote (including exceptions)
21-
2. Have endorsements from two eligible voters who work for a different employer than the candidate
22-
23-
As such, as each candidate files an issue, someone on the EC will need to check those two qualifications:
24-
25-
1. Search voters.yaml and verify that the candidate themselves is in it. If they are not, contact the candidate and suggest that they file an Exception.
26-
2. Look over the +1 in the issue and find two endorsers who work for a different employer than the candidate according to their Github profiles. For each of these, check if they are in voters.yaml. If they are not, keep going down the list of endorsers until you find someone who works for a different company who is.
27-
28-
It is highly unusual for candidates not to qualify to run. In the event that you reach the end of the list of endorsements and the candidate has still not qualified, mention that on SIG-contribex Slack. It is likely that some member of SIG-Contribex will decide to endorse the candidate so that they can run.
29-
30-
When a candidate qualifies, post a comment on the issue based on the Candidate Qualification template. Do not close the issue at this time; the issue should close when the PR with the candidate bio merges.
31-
32-
## Out-of-date materials below this line
33-
34-
## Steering Committee chooses Election Officers
35-
36-
- Steering Committee selects the Election Officers
37-
- Dates should be in UTC time, use a [world clock service](https://www.timeanddate.com/worldclock/fixedtime.html?msg=Election+Test&iso=20181101T00&p1=%3A&ah=10) in documentation and email announcements so that end users see the correct time and date based on where they live.
38-
- The steering committee was structured in a way so that it does not turn over all at once with staggered terms, therefore all new elections are for two(2) year terms
39-
40-
41-
### Election Officers select the following dates
42-
43-
- Recommend the month of October to not collide with a release or end of a quarter.
44-
- Nomination and Voter Registration period start
45-
- Nomination period end (At least a two week period)
46-
- Election period start
47-
- It takes time to create the poll in CIVS, so don’t give a specific hour, instead say “Morning of the 10th” or something vague.
48-
- Voter Registration Deadline
49-
- Election period stop
50-
- CIVS needs to be manually stopped, so an actual person needs to click for the poll to stop, so this needs to be a human friendly time
51-
- Results announcement date
52-
- Draft dates will then be passed to the Steering Committee for final approval
53-
- Once Steering approves the dates election officers will work with SIG Contributor Experience to put the election dates on the community calendar
54-
- Election officers coordinate with SIG Docs and appropriate subprojects to coordinate election results blog post
55-
56-
## Process
57-
58-
1. Election officers prepare the election repository
59-
- Make github.com/kubernetes/community/elections/$YEAR
60-
- Make github.com/kubernetes/community/elections/$YEAR/README.md, this is the voter’s guide
61-
- Copy over the voter’s guide from the previous year. The voter’s guide is the single source of truth for the election that year! All announcements and notices should link to this document
62-
- Update with new dates, candidates, and procedures (if necessary)
63-
- Make github.com/kubernetes/community/elections/$YEAR/OWNERS with all the election officers for the election year.
64-
- Make github.com/kubernetes/community/elections/$YEAR/voters.md
65-
- Initial list is generated via the [eligibility for voting requirements][eligible to vote]
66-
- Officers will update this list as voters submit the voting exemption form
67-
- Announce to the candidates to submit PRs with their platform statement (if they desire), 300 word limit. Each platform document lives in the elections/$YEAR directory, with the voter’s guide (README.md) acting as the index
68-
- Ensure officers are members of [email protected] Google Group and that prior officers are removed
69-
- Start a shared postmortem document to log the lessons learned so this process can be improved
70-
71-
2. Announce voting schedule to community
72-
73-
- Should mostly be links to the voter guide and the Steering Committee Charter
74-
- On kubernetes-dev list, kubernetes-contributors slack, and twitter
75-
76-
3. Executing the Election in CIVS
77-
78-
- Use [CIVS](http://civs.cs.cornell.edu/civs_create.html) to create the election, which CIVS calls a poll. Once you send out the ballots you cannot UNSEND the emails, ensure everything in the form is correct!
79-
- Name of the poll - “Kubernetes Steering Committee Election for $YEAR”
80-
- Name of supervisor - “Kubernetes Election Officers”
81-
- Email - [email protected] : Googlegroups doesn’t work here. This mail should resolve to the election officers.
82-
- Date and Time: Write in the date and time the election will stop. This field is not programmatic, the election is stopped by hand, so you can write this in plain text
83-
- Description: Use the following text, modify it for either 3 or 4 positions, depending on the amount of open seats: This election is to nominate the steering committee for the Kubernetes project. Order the candidates by preference, the top $NUMBER candidates will be selected. Please see the voter's guide for more information. PLEASE NOTE: "No opinion" is also a voting option if you do not feel comfortable ranking every single candidate
84-
- Add the candidate list to the form
85-
- How many choices will win: This number needs to be set to the amount of open seats of a given election
86-
- More options, check the boxes for:
87-
- Do not release results to all voters
88-
- Enable detailed ballot reporting
89-
- Allow voters to select “no opinion” for some choices
90-
- Click create poll, this will send [email protected] an email with instructions
91-
- It will send you a link to “Poll Control”, bookmark this generated page as this is where you will add voters and also resend ballots to people if their ballot gets lost or filtered
92-
- This page is where the “Start Poll” and “Stop Poll” buttons are, start the poll
93-
- WARNING: This is the point of no return:
94-
- Paste in the registered voters and click add voters
95-
- It will mail the ballots to the participants
96-
- It does duplicate detection so multiple entries are fine
97-
- This might take a while and the web page will not update, this has taken up to 10m in the past as it's sending each ballot. Don't panic or refresh the page
98-
- Leave the poll open for the duration of voting
99-
- Remember to send a 24 hour reminder before closing the poll
100-
- Click "Stop poll" at the end of the election, check the previously generated URL that CIVS mailed you when you started the poll
101-
- Select "Condorcet IRV" on the right hand side of the page to select the results method
102-
- Reporting
103-
- Mail results of the election to the incumbent Steering Committee members who are NOT running in the election
104-
- Steering Committee announces the results to the entire community at once at the end of the election, currently during the Community Meeting
105-
- Submit election results blog to the official Kubernetes blog after the announcement
106-
- Push election results into the community repo under elections _after_ the Steering Commmittee has announced the results, typically a week after the election
107-
108-
## Roles and Responsibilities:
109-
110-
### Steering Committee
111-
112-
- [Recuses themselves from public election activities][election-recusal]
113-
- Select Election Officers
114-
- Select criteria for who can vote in the upcoming election
115-
- Announces results of the election to the community
116-
- Commit the results of the election to the Kubernetes Steering Committee repository
117-
118-
### Election Officers
119-
120-
- Must be [eligible to vote]
121-
- May be delegated election-related tasks from the Steering Committee as they see fit
122-
- Post on behalf of the steering committee if necessary
123-
- Cannot be running for office in the current election
124-
- Cannot be a current member of the steering committee that is a candidate in the election or whose term extends beyond the election period
125-
- [Recuse themselves from public election activities][election-recusal] except those required to run the election
126-
- May vote
127-
- May answer questions about general election specifics, ie:
128-
- Where do I find the schedule?
129-
- How do I vote?
130-
- Will not answer questions about specific candidates, or anything that could be construed as endorsing, ie:
131-
- How is $candidate doing so far? (PS - we don't know anyway)
132-
- Who are your favorite candidates?
133-
- Recommend election dates to be approved by the Steering Committee
134-
- Generate the voter guide and list of voters according to the criteria for that year's election
135-
- Generate exemption form for non-code contributors to apply for voting
136-
- Review and commit applicants to approved voter's list at least once a week until the election begins
137-
- Track candidates
138-
- Monitor kubernetes-dev for nominations and endorsements
139-
- Keep track of nominees in a spreadsheet
140-
- Ensure that each nominee has the required endorsements from three different employers (as stated in the charter)
141-
- All nominations and endorsements are conducted in the public, so sharing this sheet during the nomination process is encouraged
142-
- Accept/Review pull requests for the candidate platforms
143-
- The community generally assists in helping with PRs to give the candidates a quick response time
144-
- Update the community regularly via the community meeting
145-
- Post deadlines and reminders to the kubernetes blog, kubernetes-dev, twitter, and slack.
146-
- Reissue ballots from CIVS to voters who might have not received their ballot.
147-
- Guard the privacy of the email addresses of voters
148-
- It is impossible for the election officers to see the results of the election until the election ends; for purposes of transparency with the community it is encouraged to release some statistics during the election (ie. “65% of the community has voted so far!”)
149-
- Ensure that the election results are handed over to the steering committee.
150-
151-
152-
[eligible to vote]: https://github.com/kubernetes/steering/blob/master/elections.md#eligibility-for-voting
153-
[election-recusal]: https://github.com/kubernetes/steering/blob/master/elections.md#steering-committee-and-election-officer-recusal
9+
[2022 Election]: /elections/steering/2022/
10+
[documentation]: /elections/steering/documentation/

0 commit comments

Comments
 (0)