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. |