aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md37
1 files changed, 24 insertions, 13 deletions
diff --git a/README.md b/README.md
index 9cd9ec1..a61f1a0 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ This handles all elections per the [Gentoo Elections](https://wiki.gentoo.org/wi
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.
+eligible voters, blank ballot etc.
Completed elections are available in the `completed/` directory.
@@ -28,32 +28,43 @@ Instructions
1. Setup an election:
---------------------
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`.
+the election. Usually in the format of `{council,trustees}-YYYYMM`. All of the
+following files should be in that directory.
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
-- `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.
- `election-details`:
- key-value file with details about the election.
+ key-value file with details about the election, see `election-details.template`
`name`: exact election name
`startDate`, `endDate`: start & end time in UTC
- `officials`: election officials, including the infra contact, (prohibited from being candidates)
+ `officials`: election officials, including the infra contact (prohibited from being candidates)
`voters`: URL to list of members who may cast a ballot
`ballot`: URL to sample ballot
+ `url`: URL to the Elections page for this specific election (optional, newer)
+
+Using the above file, and the `populate-election.sh` script, the remaining
+files are created (pulling from URLs as needed.)
+
+- `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.
- `officials-${election_name}`: list of election officials, including the infra contact
- `start-${election_name}`: election start time, as epoch seconds.
- `stop-${election_name}`: election end time, as epoch seconds.
- `voters-${election_name}`: list of members who may cast a ballot
-For developers, the one liner, worked example below, run on woodpecker, works.
-ldapsearch -ZZ -x -D uid=neddyseagoon,ou=devs,dc=gentoo,dc=org -W '(&(gentooStatus=active)(!(gentooAccess=infra-system.group)))' uid gentoojoin -LLL | grep "^uid" | sed -e "s/^uid: //" | sort -n > voters-council-202306.txt
-Some fine tuning to remove developers added to roll call after the cut off
-may be required.
+For developers, the one liner, worked example below, run on woodpecker, can create the `voters` file.
+```
+ldapsearch -ZZ -x -w '' -S uid -LLL \
+ '(&(gentooStatus=active)(!(gentooAccess=infra-system.group)))' \
+ uid gentoojoin \
+ |awk -F ': ' '/uid:/ {print $2}' > voters-council-202406
+```
+Some fine tuning to remove developers added to roll call after the cut off
+may be required.
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