aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2021-06-17 23:55:14 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2021-06-17 23:55:19 -0700
commit247f865bf13016731beed5e2254c2528f971c763 (patch)
tree1a5f060824232512c9f903f00bd60c39a56b883d
parentcouncil-202006: capture casting-voters & master ballot (diff)
downloadelections-247f865b.tar.gz
elections-247f865b.tar.bz2
elections-247f865b.zip
README.md: refresh docs
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r--README.md (renamed from README)61
1 files changed, 39 insertions, 22 deletions
diff --git a/README b/README.md
index 0d3c8e6..a59ed18 100644
--- a/README
+++ b/README.md
@@ -2,23 +2,24 @@ Gentoo Elections
----------------
Welcome to the Gentoo Elections codebase.
-This handles all elections in Gentoo per the Elections project [1].
+
+This handles all elections per the [Gentoo Elections](https://wiki.gentoo.org/wiki/Project:Elections) project.
The Condercet system is used, and most of this repository exists just to house
the actual data needed to run each election, such as the start/stop time,
eligable voters, blank ballot etc.
-Completed elections are available in the completed/ directory.
+Completed elections are available in the `completed/` directory.
The codebase is meant to be checked out somewhere read-only (Gentoo
-Infrastructure uses /etc/elections/), with the votify & countify scripts
-symlinked into somewhere used by $PATH for normal users (eg /usr/local/bin).
+Infrastructure uses `/etc/elections/`), with the `votify` & `countify` scripts
+symlinked into somewhere used by $PATH for normal users (eg `/usr/local/bin`).
-Listify & election-stats-count are other helpful tools.
+`listify` & `election-stats-count` are other helpful tools.
-listify: generate text to include in MOTD
+- `listify`: generate text to include in MOTD
-election-stats-count: generate turnout stats for ongoing elections, for
+- `election-stats-count`: generate turnout stats for ongoing elections, for
election officials to review an election in progress (put it in a cronjob,
needs root).
@@ -28,14 +29,15 @@ Instructions
---------------------
To create a new election, make a top-level directory with the exact name of
the election. Usually in the format of `{council,trustees}-YYYYMM`.
-Let ${election_name} be the name of the election. Any member of the elections
+
+Let `${election_name}` be the name of the election. Any member of the elections
project or infra may set this up.
-- `Votify.pm`: symlink to ../Votify.pm for tooling
+- `Votify.pm`: symlink to `../Votify.pm` for tooling
- `ballot-${election_name}`
One entry per line, in alphabetical order.
The special candidate `_reopen_nominations` is valid in some elections.
- The ballot order will be randomized per candidate, at voting time.
+ The ballot order will be randomized per candidate, at voting time.
- `election-details`:
key-value file with details about the election.
`name`: exact election name
@@ -52,6 +54,12 @@ Populate the files, commit & push to Git. At the start time, an official
should verify that the ballot works. Ideally a non-infra official, who then
confirms to the infra election handler it worked.
+The URLs may link to either of two repos for the data:
+- `sites/projects/elections.git`, which populates:
+ `https://projects.gentoo.org/elections/TYPE/YYYY/...`
+- `projects/elections.git` (this repo), which is only visible on Gitweb:
+ https://gitweb.gentoo.org/proj/elections.git/
+
2.1. Let people vote:
-------------------
The regular way is to login to `dev.gentoo.org` and run `votify`.
@@ -79,9 +87,9 @@ status files into the home directories of election officials: `voter-turnout-${e
4. Close of election:
---------------------
-This is where the infra contact is absolutely required.
-The infra contact must run `countify --collect ${election_name}` as root, which will write
-the master ballot & confirmation stub file to all officials:
+This is the only step where the infra contact is absolutely required.
+The infra contact must run `countify --collect ${election_name}` as root,
+which will write the master ballot & confirmation stub file to all officials:
```
$ sudo su
# cd /etc/elections
@@ -98,7 +106,7 @@ results. This requires `countify --rank` to transform the master ballot into
results.
```
$ cd /home/${official}/results-${election_name}
-$ countify --rank
+$ countify --rank | tee ranked-${election_name}
(election output)
```
@@ -116,12 +124,21 @@ independent verification.
8. Cleanup:
-----------
-- The master ballot must be committed to git. This file is named
- `master-${election_name}`
-- This list of voters who cast a ballot should be recorded & committed.
- This is required to purge rolls of inactive voters in some cases (Foundation
- members are required to vote at least every 2nd election if they are not an
- active developer). This file must be named `casting-voters-${election_name}`
-- The confirmation stub file should be destroyed after the election results
- have been formally accepted, to make de-anonymizing the ballots harder.
+- The following files must be commited to `proj/elections.git` repo.
+ - `master-${election_name}`
+ - `casting-voters-${election_name}`
+ - `ranked-${election_name}`
+- The some files should also be copied with renames into the
+ `sites/projects/elections.git` repo as follows:
+ - `ballot-${election_name}` -> `ballot-${election_name}.txt`
+ - `master-${election_name}` -> `master-${election_name}.txt`
+ - `ranked-${election_name}` -> `${election_name}-results.txt`
+ - `voters-${election_name}.txt` -> `voters-${election_name}.txt`
+- `casting-voters-${election_name}` is a list of voters who cast a ballot, and
+ needs to be recorded. This is required to purge rolls of inactive voters in
+ some cases (Foundation members are required to vote at least every 2nd
+ election if they are not an active developer).
+- The confirmation stub file `confs-${election_name}` MUST be destroyed after
+ the election results have been formally accepted, to make de-anonymizing the
+ ballots harder.
- Lastly, `git mv` the election directory into the `completed/` directory.