Skip to content

Commit

Permalink
Creation of Elections subproject
Browse files Browse the repository at this point in the history
and initial file reorganization.

Moves all elections files under top-level /elections folder
Adds READMEs for the subproject duties
Adds initial subproject members

Signed-off-by: Josh Berkus <[email protected]>
  • Loading branch information
jberkus committed Jun 24, 2022
1 parent a14bfe6 commit 39e3718
Show file tree
Hide file tree
Showing 98 changed files with 275 additions and 0 deletions.
68 changes: 68 additions & 0 deletions .github/ISSUE_TEMPLATE/election-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Team Election Request
description : Create an election for your SIG/WG/Subproject/Team
title: 'ELECTION REQUEST: <topic>'
labels: area/elections, sig/contributor-experience
body:
- type: input
attributes:
label: Group Requesting
description: The SIG, WG, team, subproject, or other Kubernetes community group wanting the election.
validations:
required: true
- type: input
attributes:
label: Title of Election
description: The name of what's being decided. If this is a recurring election, include the year/period.
validations:
required: true
- type: textarea
attributes:
label: Election Description
description: Please write a full description of the election, suitable for those voting in it. Include dates and contact info.
validations:
required: true
- type: input
attributes:
label: Administrators
description: Supply a list of GitHub IDs of the members of your team who will be administering this election. Min 1, Max 5
validations:
required: true
- type: input
attributes:
label: Voters
description: Describe who the eligible voters in this election are. If you have the voters as a list, please paste a list of GitHub IDs here or attach a file listing the IDs (1 per line).
validations:
required: true
- type: input
attributes:
label: Date/Time Candidates may file
description: Date and UTC time that candidates may start submitting profiles for the election. If you already have all of the profiles, that date is now.
validations:
required: true
- type: input
attributes:
label: Date/Time Candidates Due
description: Date and UTC time that candidates must have completed their profiles. If you already have all of the profiles, that date is now.
validations:
required: true
- type: input
attributes:
label: Date/Time Voting Begins
description: Date and UTC time that voting should begin.
validations:
required: true
- type: input
attributes:
label: Date/Time Voting Ends
description: Date and UTC time that voting closes.
validations:
required: true
- type: dropdown
attributes:
label: Publicity Help Wanted?
description: Is this an election that goes beyond your team, such that you want help from Contributor Comms in advertising it?
options:
- "Yes"
- "No"
validations:
required: true
116 changes: 116 additions & 0 deletions elections/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Kubernetes Elections

Welcome to the Kubernetes Elections area. This directory defines the Elections
Subproject, including its products of the annual [Steering Committee election]
and elections-as-a-service for our community. Elections is a subproject of
[Contributor Experience] SIG.

## Steering Elections

The Elections subproject is responsible for the annual [Steerting Committee election],
which is directly administered by the Election Officers.

* If you are looking to vote in the steering election, go to the [elections app].
* If you are looking for detailed information on the steering elections,
visit [Steering Committee election] page.

## How to Request an Election for your SIG/WG

All teams in Kubernetes may use our [elections app] to run preference elections
for their team. See the instructions on [requesting an election].

## The Elections Subproject

The Elections Subproject is a team within Kubernetes [SIG Contributor Experience]
with the following responsibilities:

* Maintain and update the elections documentation and messaging templates
* Assist K8s-Infra team in maintaining the elections sofware and service
* Assisting and approving SIGs/WGs in running minor elections
* Recommending a slate of Election Officers for each Steering Election

### Members

Anyone can contribute to the elections subproject. In our [OWNERS file] you
can find the list of our current approvers and reviewers.

Approvers and reviewers are also responsible for the Elections roadmap,
maintenance, and security. As such, new approvers must be approved by
the [Contributor Experience] chairs or by the Steering Committee.

### Communications

The elections subproject can be reached by the following mechanisms:

* tagging area/elections in issues or PRs in the Kubernetes/Community repo
* #sig-contribex channel in Kubernetes slack
* The weekly [Contributor Experience] meeting

### Documentation

The subproject is responsible for making sure that all elections documentation
is completed and kept up-to-date. This includes:

* Community documentation on the SC election
* Election Officer documentation on how to run an SC election
* Election messaging templates
* Elekto documentation

This documentation may include setting policy for some aspects of the Steering
election. In those cases, the subproject is responsible for getting the SC's
approval on such items.

### Software

Elections in Kubernetes run on [Elekto]. The subproject is responsible for
maintaining these by working together with [K8s-Infra] team. This includes
upgrades, migrations, assisting community members using the software, and handling
security reports. Should there be a reason to change software, the subproject
will prepare recommendations for the Steering Committee to approve. It is also
responsible for any necessary scripts, such as how to pull a voter list.

### Recommending Election Officers

The Elections Subproject will be responsible for finding and recommending
Election Officers to run the next Steering Committee election. The schedule
for that should be:

* Early June: contact last year's EOs and determine who will be returning.
* Mid-June: put out a call within SIG-Contribex to find out who is interested
in being an EO. Contact likely individuals 1-on-1
* Early July: submit a recommended slate of EOs to the Steering Committee,
including alternates if possible.
* Mid-July: SC approves the EOs.
* Late July: EOs set the schedule for the election.

Election Officers should be chosen from among regular, trusted contributors to the
Kubernetes project, with an eye towards employer, demographic, and geographic
diversity.

Election Officers are considered part of the Elections Subproject.

### Minor Elections

The subproject will assist Kubernetes teams/SIGs/WGs in preparing any internal
elections they want to run. This includes watching for election issues and PRs
and either helping create the appropriate files or auditing them for the teams.
The subproject will work with the Contributor Comms team to promote the elections
as appropriate.

Any named Kubernetes team (see [requesting an election]) may run an election
in elections.k8s.io. As they cost nothing to run, and multiple elections can
run concurrently, the only limitation is the time of Contribex volunteers to
help.

### Other Responsibilities

The subproject team will make a biweekly report to SIG-Contribex's regular
meeting.

[Contributor Experience]: /sig-contributor-experience/README.md
[Elekto]: https://elekto.dev
[OWNERS file]: OWNERS
[Steering Committee election]: https://git.k8s.io/steering/elections.md
[elections app]: https://elections.k8s.io
[requesting an election]: teams/README.md
[K8s-Infra]: /sig-k8s-infra/README.md
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
85 changes: 85 additions & 0 deletions elections/teams/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Elections for Kubernetes Teams

As Kubernetes now has access to self-hosted preference election software,
we can host any number of elections for community groups, as they need them.

## Who Can Request an Election

Any "Kubernetes team" can request an election. This includes SIGs, Working Groups,
User Groups, operational teams like Release Engineering or Enhancements,
Subprojects, and even wholly subsidiary projects like Prow and ClusterAPI.
Basically, if your group is all Kubernetes contributors, you can ask for an
election.

This does not include CNCF projects that are not components of Kubernetes and
subject to Kubernetes governance. At some point, the CNCF may offer
elections-as-a-service for those other projects.

## How It Works

Kubernetes uses an election tool called [Elekto], an instance of which is
hosted at [elections.k8s.io]. Your team's election gets added as metadata
to the kubernetes/community repository, and that automatically causes
an election to appear in the app.

You assign some of your team to be election administrators, and they are
in charge of running the election. You also assemble and supply a list
of GithubIDs for valid voters in the election, and the dates that candidate
statements are due, followed by when voting opens and closes. Candidates
join the election by publishing candidate profiles to your election directory.

Depending on availability and the nature of your election, Contributor Comms
may help publicize your election and remind voters of deadlines. Otherwise,
you will do this.

Once voting has closed, one of your election administrators can calculate
the result of the election, and publish it either through the app or directly
to your team's channel or mailing list.

## Requesting by Issue

If you are not already familiar with [Elekto], you should request an election
by filing an [election request issue]. Please fill out all of the information
in the template; it's required for the election.

A member of the Elections Subproject will contact you and help you through
setting up the election metadata. Please allow at least a week before your election
needs to start.

## Requesting by Pull Request

If you are familiar with [Elekto] from prior elections, then you may create
your own metadata files and submit your election as a pull request, which
will make it happen faster.

Each team election goes in its own folder in the kubernetes/community repo,
using the path `elections/teams/team-name/election-name`,
e.g. `elections/teams/clusterapi/leads-2022`. This folder should then have
the following files in it, with complete contents. See the
[Elekto administration docs] for more details.

* election.yaml file defining the election
* election-desc.md file with a text description of the election
* voters.yaml with the initial list of voters

The easiest path is to copy these files from another election and then
modify them. The above will require you to have already decided your list of
Election Admins and the dates for your election.

A member of the Elections Subproject will then review your PR, offer any required
data corrections, and approve it.

## Additional Notes

* Candidates do not have to be people; sometimes you may want to run an
"election" between development alternatives or graphic design options.
However, consider doing a survey for those instead.
* Voters and Admins do not have to be Kubernetes Org Members.
They do have to have GitHub IDs.


[Elekto]: https://elekto.dev
[elections.k8s.io]: https://elections.k8s.io
[preference elections]: https://en.wikipedia.org/wiki/Preferential_voting
[election request issue]: /issues/new/choose
[Elekto administration docs]: https://elekto.dev/docs/administration/
6 changes: 6 additions & 0 deletions sigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1372,6 +1372,12 @@ sigs:
slack: devstats
owners:
- https://raw.githubusercontent.com/kubernetes/community/master/sig-contributor-experience/devstats/OWNERS
- name: elections
description: Oversees running elections in the community. Maintains documentation and software for elections.
contact:
slack: sig-contribex
owners:
- https://raw.githubusercontent.com/kubernetes/community/master/elections/OWNERS
- name: events
description: Creates and runs contributor-focused events, such as the Contributor
Summit. Event Teams are part of this subproject.
Expand Down

0 comments on commit 39e3718

Please sign in to comment.