Wikipedia:Administrator elections/SecurePoll setup
| When updating the instruction workflow, also update the relevant tour's code (main, translate, eligibility). The text itself can be edited from this page using labeled section transclusion. |
These are step-by-step instructions for election clerks creating a local SecurePoll for administrator elections. The steps include creating a poll, setting up messages, configuring voter eligibility, encrypting, decrypting, and tallying.
Instructions for election clerks
- Assign yourself and all other election clerks (including backups) the election clerk user group. This is necessary to add them as poll administrators in the next step.
Special:SecurePoll/create
Important: Polls cannot be edited after the election starts, except the poll admins. Poll admins can no longer be edited after the election ends. Make sure everything in this section is programmed in perfectly before the poll start date.
- Poll title = English Wikipedia administrator elections, May 2026
- Election start date = 2026-05-13 00:00:00 UTC[1]
- Election end date = 2026-05-19 23:59:59 UTC
- Poll type = Range voting (histogram range)
- Encryption = OpenSSL
- Open your terminal (such as Windows PowerShell) and move to the folder in which you want to store your keys. For example:
cd "F:\\Dropbox\\Important Documents\\Notes By Topic\\Wikipedia\\Election encryption keys\\2026-05-13 enwiki election"
- Type the following commands:
openssl genpkey -algorithm rsa -out encrypt-private.pem
openssl pkey -in encrypt-private.pem -pubout -out encrypt-public.pem
openssl genpkey -algorithm rsa -out sign-private.pem
openssl pkey -in sign-private.pem -pubout -out sign-public.pem
- Open these files in a text editor, and copy paste their values into the appropriate text box. Do not omit things like
-----BEGIN PUBLIC KEY-----, that is required.- encrypt-public.pem should be copy pasted into the "Encryption key" text box
- sign-private.pem should be copy pasted into the "Signing key" text box
- Note: Explanation for why there's 4 keys and why we use public key A and private key B here:[2]
- Admins = All election clerks and election scrutineers, including backups
- [List election clerks and scrutineers here once decided]
- Make sure to not shuffle options[3]
- Question text = May 2026 English Wikipedia Administrator Election candidates
- Minimum score = -1
- Maximum score = 1
- Default score = 0
- Use the following custom messages: "Oppose" for -1, "Abstain" for 0, "Support" for 1
- Note: candidates must be typed in alphabetically[3]
- Add the candidate names in alphabetical order, one per option, in the following format (see regex):
[[Wikipedia:Administrator elections/May 2026/Candidates/CANDIDATE|CANDIDATE]]
- Click "Add another option" and add all additional candidates in a style similar to the above line
- Reason = Create
- Give the backup election clerk a copy of your 4 keys
Special:SecurePoll/translate
Note: Diffs/logging/msgs for translate currently has a bug where it writes the old settings (phab:T411761). so careful relying on diffs to see what you edited, to make sure your voter eligibility edits went through, etc.
- Start by opening your poll's Translate menu to add localization
- Make sure that English is selected, then click Translate
- intro =
[[Wikipedia:Administrator elections/May 2026|Election main page]] • [[Wikipedia talk:Administrator elections|Report problems or issues]] • [[Wikipedia:Administrator elections/May 2026#What data does SecurePoll collect?|What data does SecurePoll collect?]]
'''''Instructions'''''
* '''Use the radio buttons.''' Please use the radio buttons below to indicate your preference for each candidate with "Oppose", "Abstain", or "Support". An "Abstain" vote does not affect the outcome in any way.
* '''Vote in a single sitting.''' Voting must be done in a single sitting.
* '''You may change your vote by starting over.''' After your vote has been accepted, you may change your vote any time before the close of voting. To do so, reopen the voting interface and a fresh ballot page will be displayed. You will need to complete the voting process again from scratch. For this reason, consider keeping a private record of your vote. Your new ballot will override the old one.
- jump-text =
- return-text =
- unqualified-error =
For the reason(s) above, your account does not meet the requirements to vote in this election. If you believe you are receiving this message in error, please post on the [[Wikipedia talk:Administrator elections|election talk page]].
- comment-prompt =
- reason = Add messages
Special:SecurePoll/votereligibility
Note: Here are the official voter eligibility criteria: Wikipedia:Administrator elections/May 2026#Voter eligibility. Extended confirmed, not sitewide blocked, not a bot.
Now that phab:T397596 is solved, the instructions are comparatively simple.
- Start by opening your poll's Voter Eligibility configuration
- Make sure that "Must not be sitewide blocked" is checked
- Check "Must not be flagged as a bot"
- Select the following groups: Administrators, Extended confirmed users
- Reason = Create
| Previous workflow, not needed anymore |
|---|
| The following discussion has been closed. Please do not modify it. |
|
Adding / deleting candidates before the election starts
- Adding - Shouldn't need to do any adding, since the call for candidates closed. If you did need to add someone, to do alphabetical order would be a pain. Would have to add an option with a placeholder ABC, then cut and paste a bunch of people around.
- Deleting - If someone withdraws... edit the poll, click "delete option", click save
During the election
- If someone is unable to vote but through investigation you determine they are qualified, you can add them to the override list:
- votereligibility -> override list -> edit list -> type their name on a new line -> save list
- Note that scrutineers must be added as election admins (Special:SecurePoll/edit) before the end of the election. Ideally when you're creating the poll so you don't forget. After the election, the edit page becomes un-editable and scrutineers cannot be added.
- If someone wants to drop out during the election...
- Go to the Translation page and edit their candidate name to have a strikethrough.
<s>Name</s> - Later, when tallying, when you're copy pasting the results from the SecurePoll tally page to the wiki page, delete the row that has their data, keeping their election results un-published.
- Go to the Translation page and edit their candidate name to have a strikethrough.
Post election
- Pause to let scrutineers look for votes to strike (see #Instructions for scrutineers below)
- Once scrutineers are done with their IP checking...
- Tally (and decrypt)
- Open these files in a text editor, and copy paste their values into the appropriate text box:
- encrypt-private.pem should be copy pasted into the "Decryption key" text box
- sign-public.pem should be copy pasted into the "Verification key" text box
- click "Create tally"
- copy paste the tally into Microsoft Excel
- delete the column "Average score"
- add a column for Support / (Support + Oppose). formula is
=D2/(D2+B2) - format Support / (Support + Oppose) as percent, with 2 decimal points.
- add a column for "Result". anyone whose Support / (Support + Oppose) column is >=70%, and whose Support column is >= 20, is "Elected". anyone else is "Not elected". formula is
=IF(AND(E2>=0.7,D2>=20),"Elected","Not elected"). - recall candidates have a 55% support threshold, not 70%. modify the formula for any recall candidates
- left align all
- bold italic underline header row
- in cell A1, type "Candidate"
- sort by Support / (Support + Oppose), highest to lowest
- change the column order for columns B, C, D to support, abstain, oppose
- in a sandbox, copy paste from Microsoft Excel into the Visual Editor. Visual Editor will automatically format this as a table for you.
- format the wikicode table
- add sortable to make the columns sortable:
{| class="wikitable sortable" - change all the cells in the first row to start with exclamation marks. this will format them, and make them sortable. example:
!Candidate - highlight rows of elected editors green
|- style="background: #cfc;" - wikilink usernames
{{AdEResCandRw|Username goes here}} - change heading to
Support /<br>(Support + Oppose) - sign
- add a section for scrutineers to sign. use a level 4 heading
- add the sentence "Results are preliminary until all 3 scrutineers sign."
- add sortable to make the columns sortable:
- Open these files in a text editor, and copy paste their values into the appropriate text box:
- Post the tally/results onwiki (copy paste from your sandbox to the results page)
- Inform the scrutineers
- The scrutineers each sign off on the results onwiki (confirming that the tally was copy pasted from SecurePoll accurately by the election clerk) (see #Instructions for scrutineers below)
- If any candidates withdrew during the election, when you're copy pasting the results from the SecurePoll tally page to the wiki page, delete the row that has their data, keeping their election results un-published.
- Once all 3 scrutineers have signed off, the election clerk posts at WP:BN asking for the bureaucrats to promote the newly elected candidates to administrator
Instructions for scrutineers
Check votes
Look for inappropriate votes to strike.
- Special:SecurePoll -> English Wikipedia administrator elections, May 2026 -> List
- types of votes to look out for / strike
- sockpuppets
- accidental double votes involving 1 main and 1 alt account (if it was a good faith mistake, just strike 1 vote)
- bots
- vanished accounts (note: votes from users who vote before vanishing are still eligible (see also Arbcom election rules); usernames in the voting list do not get updated after a rename)
- any other irregularities
- A script is available to supplement checks: https://checkuser.wikimedia.org/w/index.php?curid=12220
- if you find an irregularity but aren't sure if you should strike it, please ask the other scrutineers, or in the AELECT election officials Discord chat, or at WT:AELECT.
- all 3 scrutineers should make a pass through the list and investigate suspicious things and abnormalities
- sorting
- one of the passes should sort the votes by IP address column (click on the table header to sort). this will group identical IP addresses together, which may reveal sockpuppets
- one of the passes should sort the votes by username so you can look out for any obvious main account + alternate account pairs that voted
- the system automatically discounts duplicate votes by the same user, by putting all but the most recent vote in gray and italics. so you don't need to worry about striking duplicate votes by the same user. focus on main account + alternate account pairs.
- one of the passes should be to scrutinize more closely any row labeled with "dup cookies". SecurePoll sets a cookie when a voter first votes, and doesn't change this cookie even when logging out and back in with a different account. "Dup cookies" means the user voted, logged out and into a different account, then voted again. You can click on "Details" and scroll down to "Cookie duplicate users" to see their other accounts.
- be sure to check (sorting may also help you here):
- 'CSRF' column. This may contain 'Failed'. See CSRF for background information.
- 'Duplicate' column. This may contain 'Dup cookies' indicating there's another account. Click on the vote details link to find out more.
- optional: you can use checkuser tools such as Special:CheckUser or Special:Investigate to do more detailed investigations of abnormalities (keeping in mind CheckUser policies such as WP:NOTFISHING), or you can just use the data in SecurePoll. up to you
- please audit and keep an eye out for incorrect vote strikes. any election administrator can strike a vote at any time, including election clerks. pressing the "strike" button prompts the user to enter a reason. you can check who did the strike and the typed in reason by clicking on the vote.
- when all 3 have completed their pass, the election clerk (Novem Linguae) should be informed so that he can decrypt and tally. you can inform at WT:AELECT for transparency, or user talk, or offwiki. however you want.
Verify tally
Verify that the tally posted onwiki matches the tally in the SecurePoll software, and that all calculations are correct.
- after a slight delay to decrypt and tally, Novem will copy paste the tally results onwiki
- Special:SecurePoll -> English Wikipedia administrator elections, May 2026 -> Tallies -> row 1 (the newest one) -> click "View"
- this will display a tally (count of the totals of all the types of votes)
- confirm...
- that the copy-pasted results onwiki match the tally in SecurePoll
- that the math in the onwiki results for the column "Support / (Support + Oppose)" is correct
- that the "Result" column is correct and follows the election criteria listed at Wikipedia:Administrator elections/May 2026#Tallying and results
- then sign off on the results on the results wiki page
- example results page with sign-offs from a previous election: Wikipedia:Administrator elections/July 2025/Results
- the tally instructions that the election clerk used are at #Post election
Notes
- the scrutineering phase will start as soon as voting closes, which for this election is May 20, 0:00 UTC
- AELECT1 scrutineering took 4 days. AELECT2 scrutineering took 2 days, AELECT3 scrutineering took 1 day.
- this is pretty good. WP:ACE often takes longer
- there is no official deadline. take as long as you need to provide accurate scrutineering.
- however, please also balance this with giving candidates a good experience by not taking unnecessarily long. waiting for the results, and not having an exact day and time we will post the results, can be stressful for candidates
- please let us know as soon as possible if you will be busy during scrutineering time. we have alternate checkusers who can step in and take people's places, if needed.
- it is impossible to add scrutineers once a poll officially ends. I will pre-program the main scrutineers and backup scrutineers.
- WMF only retains voter PII (such as IP addresses) until 60 days after the end of the poll. if for some reason scrutineering took a really long time, then it needs to be done within 60 days, or we lose the ability to check IP addresses.
What pages you can edit in SecurePoll and when
Before the poll starts
| Page | Enabled? |
|---|---|
| Special:SecurePoll/vote | |
| Special:SecurePoll/translate (msgs) | |
| Special:SecurePoll/list (view voters, strike votes, scrutineer) | |
| Special:SecurePoll/edit | |
| Special:SecurePoll/votereligibility | |
| Special:SecurePoll/dump | |
| Special:SecurePoll/tally | |
| Special:SecurePoll/logs | |
| Special:SecurePoll/archive |
After the poll starts but before it ends
| Page | Enabled? |
|---|---|
| Special:SecurePoll/vote | |
| Special:SecurePoll/translate (msgs) | |
| Special:SecurePoll/list (view voters, strike votes, scrutineer) | |
| Special:SecurePoll/edit | |
| Special:SecurePoll/votereligibility | |
| Special:SecurePoll/dump | |
| Special:SecurePoll/tally | |
| Special:SecurePoll/logs | |
| Special:SecurePoll/archive |
After the poll ends
Note that a poll can be re-tallied at any time. For example, maybe some socks are discovered after the first tally. Those votes can be striken, then the tally re-run.
| Page | Enabled? |
|---|---|
| Special:SecurePoll/vote | |
| Special:SecurePoll/translate (msgs) | |
| Special:SecurePoll/list (view voters, strike votes, scrutineer) | |
| Special:SecurePoll/edit | |
| Special:SecurePoll/votereligibility | |
| Special:SecurePoll/dump | |
| Special:SecurePoll/tally | |
| Special:SecurePoll/logs | |
| Special:SecurePoll/archive |
See also
- First administrator election settings
Notes
- ^ do not open early for testing, per objections during AELECT3
- ^ "the voter records displayed after you vote are encryped with the encryption public key and then signed with the signing private key. By providing the signing public key, voters/election operators can authenticate that the voter record is real without having to decrypt it. If a record is correctly signed but doesn't appear in the dump, then that's evidence of tampering." -AntiCompositeNumber
- ^ a b Per Wikipedia:Requests for adminship/2024 review/Phase II/Administrator elections#Q15: Candidate ordering