Wikipedia:Administrator elections/July 2025/SecurePoll setup

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.

Work instruction

= 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, July 2025
  • Election start date = 2025-07-23 0:00:00 UTC
  • Election end date = 2025-07-29 23:59:59 UTC
  • Poll type = Range voting (histogram range)
  • Encryption = OpenSSL
  • Open Windows PowerShell
  • cd to where you want to save your 4 encryption key files (cd "F:\Dropbox\Important Documents\Notes By Topic\Wikipedia\Election encryption keys\2025-06-25 enwiki test election")
  • Type these 4 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:"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
  • Admins = Novem Linguae, Robertsky, Dbeef, RoySmith, ZzuuzzShould be fine to add the scrutineers right away.
  • Shuffle options on the voting page = falsePer Wikipedia:Requests for adminship/2024 review/Phase II/Administrator elections#Q15: Candidate ordering
  • Question text = July 2025 English Wikipedia Administrator Election candidates
  • Minimum score = -1
  • Maximum score = 1
  • Default score = 0
  • Use custom messages for column labels = true
  • -1 = Oppose
  • 0 = Abstain
  • 1 = Support
  • Note: candidates must be typed in alphabetically
  • Option text = Queen of Hearts
  • 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: It is hard to blank fields once you have added text to them. If you need to blank a field, until phab:T397575 is solved, simply replace all the text with one space character.

  • Select English. Click Translate. This will load a page with a lot of text boxes to fill in.
  • intro =

Election main pageReport problems or issuesWhat 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 reasons 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 election talk page.

  • comment-prompt =
  • reason = add messages

= Special:SecurePoll/votereligibility =

  • Note: here is the official voter eligibility criteria:
  • Wikipedia:Administrator elections/July 2025#Voter eligibility
  • extendedconfirmed, not sitewide blocked, not a bot
  • Note: once phab:T397596 is solved, we can compute this on the fly, which makes setup a lot easier. for now though, we'll need to use quarry and import the list of usernames
  • Note: do the quarry query and import the results at the absolute last minute, to minimize the number of folks that accidentally get left off the list
  • Note: diffs/logging/msgs for votereligibility currently has a bug where it writes the old settings (phab:T397592). so careful relying on diffs to see what you edited, to make sure your voter eligibility edits went through, etc.
  • Basic options
  • minimum edits = 0
  • registered before = blank this. but there's a bug that, when blank, this gets filled in again (phab:T289128). so every time you come back to voter eligibility, don't forget to blank this again.
  • must not be sitewide blocked = true
  • must not be flagged as a bot = true
  • include users in these groups = (blank)
  • reason = create
  • save
  • now go back and edit it again
  • eligibility list -> edit list ->
  • refresh this quarry query. takes 64 seconds: https://quarry.wmcloud.org/query/94828
  • download the results as TSV (don't do CSV, Excel messes up the rows towards the end)
  • open the TSV file in your favorite text editor (e.g. Notepad++). make sure it's using UTF-8, not ANSI
  • delete the first row (user_name)
  • paste into the eligibility list
  • save the eligibility list
  • Note: takes about 40 seconds to save since it's a big list
  • now go view it and double check that it has around 76,354 usernames on it
  • Note: it will probably append @enwiki to the end of everything. this is fine.
  • don't save the parent screen. this could populate a date for "registered before" unless you blank it. that info is already saved from our previous save.

= Adding / deleting candidates before the election starts =

  • Looks like we have to manually alphabetize everyone. This will involve a lot of cutting and pasting, in order to do a manual insert of the new person in the right spot.

= 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. Name
  • 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.

= Post election =

  • Pause to let scrutineers look for votes to eliminate
  • Note that scrutineers have a maximum of 60 days from the election end date to complete their work. After that, WMF automatically deletes SecurePoll voter data such as IP addresses (via a cron job and maintenance script). this is to comply with the maximum 90 days data retention policy.
  • 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
  • Post the tally/results onwiki, then the scrutineers each sign off on the results onwiki (confirming that the tally was copy pasted from SecurePoll accurately by the election clerk)
  • 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.

What you can edit

= Before the poll starts =

class="wikitable"

!Page

!Enabled?

Special:SecurePoll/vote

|{{Cross}}

Special:SecurePoll/translate (msgs)

|{{Tick}}

Special:SecurePoll/list (view voters, strike votes, scrutineer)

|{{Cross}}

Special:SecurePoll/edit

|{{Tick}}

Special:SecurePoll/votereligibility

|{{Tick}}

Special:SecurePoll/dump

|{{Cross}}

Special:SecurePoll/tally

|{{Cross}}

Special:SecurePoll/logs

|{{Tick}}

Special:SecurePoll/archive

|{{Cross}}

= After the poll starts but before it ends =

class="wikitable"

|+

!Page

!Enabled?

Special:SecurePoll/vote

|{{Tick}}

Special:SecurePoll/translate (msgs)

|{{Yellow tick}} yes, except blanking isn't allowed. phab:T397575

Special:SecurePoll/list (view voters, strike votes, scrutineer)

|{{Tick}}

Special:SecurePoll/edit

|{{Yellow tick}} mostly no, except you can edit election admins

Special:SecurePoll/votereligibility

|{{Tick}}

Special:SecurePoll/dump

|{{Cross}}

Special:SecurePoll/tally

|{{Cross}}

Special:SecurePoll/logs

|{{Tick}}

Special:SecurePoll/archive

|{{Cross}}

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

class="wikitable"

!Page

!Enabled?

Special:SecurePoll/vote

|{{Tick}}

Special:SecurePoll/translate (msgs)

|{{Yellow tick}} yes, except blanking isn't allowed. phab:T397575

Special:SecurePoll/list (view voters, strike votes, scrutineer)

|{{Tick}}

Special:SecurePoll/edit

|{{Cross}}

Special:SecurePoll/votereligibility

|{{Cross}}

Special:SecurePoll/dump

|{{Tick}}

Special:SecurePoll/tally

|{{Tick}}

Special:SecurePoll/logs

|{{Tick}}

Special:SecurePoll/archive

|{{Tick}}

See also

  • First administrator election settings
  • https://vote.wikimedia.org/wiki/SecurePoll:1691?useskin=vector
  • https://vote.wikimedia.org/wiki/SecurePoll:1691/msg/en?useskin=vector

Notes

{{Reflist}}