Gentoo Archives: gentoo-commits

From: "Robin H. Johnson" <robbat2@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/elections:master commit in: /
Date: Fri, 18 Jun 2021 06:57:45
Message-Id: 1623999319.247f865bf13016731beed5e2254c2528f971c763.robbat2@gentoo
1 commit: 247f865bf13016731beed5e2254c2528f971c763
2 Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jun 18 06:55:14 2021 +0000
4 Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
5 CommitDate: Fri Jun 18 06:55:19 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/elections.git/commit/?id=247f865b
7
8 README.md: refresh docs
9
10 Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
11
12 README => README.md | 61 ++++++++++++++++++++++++++++++++++-------------------
13 1 file changed, 39 insertions(+), 22 deletions(-)
14
15 diff --git a/README b/README.md
16 similarity index 64%
17 rename from README
18 rename to README.md
19 index 0d3c8e6..a59ed18 100644
20 --- a/README
21 +++ b/README.md
22 @@ -2,23 +2,24 @@ Gentoo Elections
23 ----------------
24
25 Welcome to the Gentoo Elections codebase.
26 -This handles all elections in Gentoo per the Elections project [1].
27 +
28 +This handles all elections per the [Gentoo Elections](https://wiki.gentoo.org/wiki/Project:Elections) project.
29
30 The Condercet system is used, and most of this repository exists just to house
31 the actual data needed to run each election, such as the start/stop time,
32 eligable voters, blank ballot etc.
33
34 -Completed elections are available in the completed/ directory.
35 +Completed elections are available in the `completed/` directory.
36
37 The codebase is meant to be checked out somewhere read-only (Gentoo
38 -Infrastructure uses /etc/elections/), with the votify & countify scripts
39 -symlinked into somewhere used by $PATH for normal users (eg /usr/local/bin).
40 +Infrastructure uses `/etc/elections/`), with the `votify` & `countify` scripts
41 +symlinked into somewhere used by $PATH for normal users (eg `/usr/local/bin`).
42
43 -Listify & election-stats-count are other helpful tools.
44 +`listify` & `election-stats-count` are other helpful tools.
45
46 -listify: generate text to include in MOTD
47 +- `listify`: generate text to include in MOTD
48
49 -election-stats-count: generate turnout stats for ongoing elections, for
50 +- `election-stats-count`: generate turnout stats for ongoing elections, for
51 election officials to review an election in progress (put it in a cronjob,
52 needs root).
53
54 @@ -28,14 +29,15 @@ Instructions
55 ---------------------
56 To create a new election, make a top-level directory with the exact name of
57 the election. Usually in the format of `{council,trustees}-YYYYMM`.
58 -Let ${election_name} be the name of the election. Any member of the elections
59 +
60 +Let `${election_name}` be the name of the election. Any member of the elections
61 project or infra may set this up.
62
63 -- `Votify.pm`: symlink to ../Votify.pm for tooling
64 +- `Votify.pm`: symlink to `../Votify.pm` for tooling
65 - `ballot-${election_name}`
66 One entry per line, in alphabetical order.
67 The special candidate `_reopen_nominations` is valid in some elections.
68 - The ballot order will be randomized per candidate, at voting time.
69 + The ballot order will be randomized per candidate, at voting time.
70 - `election-details`:
71 key-value file with details about the election.
72 `name`: exact election name
73 @@ -52,6 +54,12 @@ Populate the files, commit & push to Git. At the start time, an official
74 should verify that the ballot works. Ideally a non-infra official, who then
75 confirms to the infra election handler it worked.
76
77 +The URLs may link to either of two repos for the data:
78 +- `sites/projects/elections.git`, which populates:
79 + `https://projects.gentoo.org/elections/TYPE/YYYY/...`
80 +- `projects/elections.git` (this repo), which is only visible on Gitweb:
81 + https://gitweb.gentoo.org/proj/elections.git/
82 +
83 2.1. Let people vote:
84 -------------------
85 The regular way is to login to `dev.gentoo.org` and run `votify`.
86 @@ -79,9 +87,9 @@ status files into the home directories of election officials: `voter-turnout-${e
87
88 4. Close of election:
89 ---------------------
90 -This is where the infra contact is absolutely required.
91 -The infra contact must run `countify --collect ${election_name}` as root, which will write
92 -the master ballot & confirmation stub file to all officials:
93 +This is the only step where the infra contact is absolutely required.
94 +The infra contact must run `countify --collect ${election_name}` as root,
95 +which will write the master ballot & confirmation stub file to all officials:
96 ```
97 $ sudo su
98 # cd /etc/elections
99 @@ -98,7 +106,7 @@ results. This requires `countify --rank` to transform the master ballot into
100 results.
101 ```
102 $ cd /home/${official}/results-${election_name}
103 -$ countify --rank
104 +$ countify --rank | tee ranked-${election_name}
105 (election output)
106 ```
107
108 @@ -116,12 +124,21 @@ independent verification.
109
110 8. Cleanup:
111 -----------
112 -- The master ballot must be committed to git. This file is named
113 - `master-${election_name}`
114 -- This list of voters who cast a ballot should be recorded & committed.
115 - This is required to purge rolls of inactive voters in some cases (Foundation
116 - members are required to vote at least every 2nd election if they are not an
117 - active developer). This file must be named `casting-voters-${election_name}`
118 -- The confirmation stub file should be destroyed after the election results
119 - have been formally accepted, to make de-anonymizing the ballots harder.
120 +- The following files must be commited to `proj/elections.git` repo.
121 + - `master-${election_name}`
122 + - `casting-voters-${election_name}`
123 + - `ranked-${election_name}`
124 +- The some files should also be copied with renames into the
125 + `sites/projects/elections.git` repo as follows:
126 + - `ballot-${election_name}` -> `ballot-${election_name}.txt`
127 + - `master-${election_name}` -> `master-${election_name}.txt`
128 + - `ranked-${election_name}` -> `${election_name}-results.txt`
129 + - `voters-${election_name}.txt` -> `voters-${election_name}.txt`
130 +- `casting-voters-${election_name}` is a list of voters who cast a ballot, and
131 + needs to be recorded. This is required to purge rolls of inactive voters in
132 + some cases (Foundation members are required to vote at least every 2nd
133 + election if they are not an active developer).
134 +- The confirmation stub file `confs-${election_name}` MUST be destroyed after
135 + the election results have been formally accepted, to make de-anonymizing the
136 + ballots harder.
137 - Lastly, `git mv` the election directory into the `completed/` directory.