election/README.rst
Ghanshyam Mann 7b1887c486 Convert ATC to AC term
TC passed a resolution in 2021[1] to convert the term
ATC to AC and this is not just wording change but also
it change the definition of it which include the AUC also
in AC. Previously ATC and AUC were two different things.

Reflecting the TC resolution in election tooling also.

[1] https://governance.openstack.org/tc/resolutions/20210602-atc-renamed-to-ac.html

Depends-On: https://review.opendev.org/c/openstack/governance/+/893831
Change-Id: Ic0570ae9a2bb2b31538179d3246b4475cdbeac45
2023-09-07 11:56:57 -05:00

305 lines
8.4 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This repository contains OpenStack Elections reference documents
and tooling to run elections.
================
Election Process
================
PTL Elections
=============
Selecting Election Dates
------------------------
Things to keep in mind when selecting election dates:
* Election Dates must be as per the `TC charter <https://governance.openstack.org/tc/reference/charter.html>`_
which is "The election is held no later than 3 weeks prior to each
cycle final release date(on or before R-3 week)"
* At least 48 hours in between email deadline and poll start
* Consider extra-acs approval deadlines
* Allow at least a week for nomination period
``tox -evenv -- setup-election-config`` can be used to pick some possible dates that need to be
checked by the election officials and TC. Once these dates are confirmed/merged
election officials can create a change against the `releases repo <https://opendev.org/openstack/releases>`_
to include these dates in the development schedule. A helper tool ``tox -evenv -- update-releases-calendar``
will generate this change, but needs to be verified before publishing
Preparation
-----------
As early as possible but at least a month before election starts:
* Edit elections details (timeline, cycle timeframe):
* ``edit configuration.yaml``
* Prepare new election, e.g.:
* ``tox -evenv -- create-directories``
* Commit to update website
* Update Release Schedule
A couple of weeks before election starts:
* Send *PTL Election Season* email
* ``tox -e venv -- template-emails election_season``
PTL Candidacy Round
-------------------
When PTL Candidacy start:
* Send *PTL Nominations Kickoff* email
* ``tox -e venv -- template-emails nominations_kickoff``
During the PTL Candidacy round:
* Validate candidacy, e.g.:
* ``tox -evenv -- check-all-candidacies``, or
* ``tox -evenv -- ci-check-all-candidate-files candidates/release/project/candidates``, or
* ``tox -evenv -- check-candidacy change_id``
* To +2 a candidate:
* check commit link is indeed valid
* check filename is email address
* cursory check the candidacy statement
* To +Workflow, checks the previous +2 details, find another commits using
``--limit 5`` (optional)
* Check candidate list and fix badly generated names through changes to the
``exception.txt`` file or requesting the candidate to update their OSF member
profile.
Once the email deadline is reached:
* Ask the TC chair to tag the governance repository
* Generate the electorate rolls. This generates the rolls for all project
teams even if they aren't going to hold an election.
* ``tox -evenv -- generate-rolls``
A couple of days before the candidacy submission ends:
* Render statistics and send *Motivation call for PTL candidacy round*, e.g.:
* ``tox -evenv -- render-statistics``
* Send *PTL Nominations Last Days* email:
* ``tox -e venv -- template-emails nominations_last_days``
When PTL Candidacy submission ends:
* Send *PTL Nominations End* email
* ``tox -e venv -- template-emails end_nominations``
* When the tag is available, generate AC rolls, e.g.:
* ``tox -evenv -- generate-rolls``
* Compare AC rolls with at least one other election official
PTL Election Round
------------------
Before PTL Election begins:
* Send email to the mailing list or eligible electorates to opt in to
CIVS voting system using their Gerrit email address in https://civs1.civs.us/cgi-bin/opt_in.pl
* ``tox -e venv -- template-emails voting_optin_civs``
When PTL Election begins:
* `Create CIVS page
<https://wiki.openstack.org/wiki/Election_Officiating_Guidelines#Running_the_election_itself>`_
* Upload rolls
* CIVS has a maximum number of electorate emails you can upload at a time
without crashing, limit to 500 at a time
* Send *PTL Voting Kickoff* email
* ``tox -e venv -- template-emails voting_kickoff``
A couple of days before the PTL Election ends:
* Send *PTL Voting Last Days* email
* ``tox -e venv -- template-emails voting_last_days``
When PTL Election ends:
* Close the election and update the results:
* ``tox -evenv -- close-election --round ptl``
* ``edit doc/sources/results/release/ptl.yaml`` and set election winners to ``true``
* NOTE: We no longer need document TC-APPOINTMENT or LEADERLESS as the
``update-governance`` step will communicate that to the TC and the process
in that repo will set the project leader.
* Commit the change and review the results
* Send *PTL Results* email
* This is ``doc/source/results/release/announce_ptl.rst`` generated by
building the docs with ``tox -e docs`` after
``doc/source/results/release/ptl.yaml`` has been created and updated
* Update governance repo:
* ``tox -e venv update-governance -- --governance-repo ../governance/``
TC Elections
============
Selecting Election Dates
------------------------
Things to keep in mind when selecting election dates:
* Election Dates must be as per the `TC charter <https://governance.openstack.org/tc/reference/charter.html>`_
which is "The election is held no earlier than 6 weeks and no later
than 4 weeks prior to each cycle final release date (between R-6
and R-4 week)"
* Allow for at least 48 hours between email deadline and polling beginning
* Allow at least a week for nomination and campaign periods
``setup-election-config`` can be used to pick some obvous dates that need to be
checked by the election officials and TC
Preparation
-----------
As early as possible but at least a month before election starts:
* Edit elections details (timeline, cycle timeframe):
* ``edit configuration.yaml``
* Commit to update website
* Update Release Schedule
A couple of weeks before election starts:
* Send *TC Election Season* email
* ``tox -e venv -- template-emails election_season``
TC Candidacy Round
------------------
When TC Candidacy starts:
* Send *TC Nominations Kickoff* email
* ``tox -e venv -- template-emails nominations_kickoff``
During the TC Candidacy round:
* To +2 a candidate:
* check candidate profile using https://www.openstack.org/community/members/
* check filename is email address
* cursory check the candidacy statement
* To +Workflow, check the previous +2 details
A couple of days before the candidacy submission ends:
* Send *TC Nominations Last Days* email
* ``tox -e venv -- template-emails nominations_last_days``
When TC Candidacy submission ends:
* Send *TC End Nominations* email
* ``tox -e venv -- template-emails end_nominations``
Once the email deadline is reached:
* Ask the TC chair to tag the governance repository
* Generate the electorate rolls.
* ``tox -evenv -- generate-rolls``
TC Campaigning
--------------
The TC election includes a period after the candidates are defined but before
the election, for candidates to answer questions from the community. Open this
with:
* ``tox -e venv -- template-emails campaigning_kickoff``
TC Election Round
-----------------
Before TC Election begins:
* Send email to the mailing list to opt in to CIVS voting system using their
Gerrit email address in https://civs1.civs.us/cgi-bin/opt_in.pl
* ``tox -e venv -- template-emails voting_optin_civs``
* Create CIVS page
* Title the poll: $RELEASE Technical Committee Election Poll
* Enable detailed ballot reporting
* Send to other officials to verify
* Check number of seats
* Check closing date
When TC Election begins:
* Upload rolls
* CIVS has a maximum number of electorate emails you can upload at a time
without crashing, limit to 500 at a time* Send *TC Voting Kickoff* email
* ``tox -e venv -- template-emails voting_kickoff``
A couple of days before the TC Election ends:
* Send *TC Voting Last Days* email
* ``tox -e venv -- template-emails voting_last_days``
When TC Election ends:
* Close the election
* Run: ``tox -e venv -- close-election --round tc``
* ``edit doc/source/results/release/tc.yaml`` setting the winners to ``true``
* Commit change and push review
* Send *TC Results* email
* This is ``doc/source/results/release/announce_tc.rst`` generated by
building the docs with ``tox -e docs`` after
``doc/source/results/release/tc.yaml`` has been created and updated
* Update ``reference/members`` in governance repository
* Add new members
* Remove ``chair`` and ``vice-chair`` from file
* Commit change and push review
* Update ``tc-election-summary.py`` with election statistics
* Optionally send *TC Election Statistics* email