Extension:SecurePoll

From mediawiki.org
This page is a translated version of the page Extension:SecurePoll and the translation is 29% complete.
Podręcznik rozszerzeń MediaWiki
OOjs UI icon advanced-invert.svg
SecurePoll
Status wydania: stabilne
SecurePoll.png
Realizacja Strona specjalna
Opis Umożliwia przeprowadzanie wyborów, głosowań, ankiet i sondaży
Autor(zy) Tim Starlingdyskusja
Ostatnia wersja 3.0.0 (continuous updates)
Polityka zgodności Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki 1.25+
Zmiany w bazie danych Tak
Tabele securepoll_entity
securepoll_msgs
securepoll_properties
securepoll_elections
securepoll_questions
securepoll_options
securepoll_voters
securepoll_votes
securepoll_strike
securepoll_lists
securepoll_cookie_match
Licencja GNU General Public License 2.0 or later
Pobieranie
  • $wgSecurePollTempDir
  • $wgSecurePollUseLogging
  • $wgSecurePollKeepPrivateInfoDays
  • $wgSecurePollScript
  • $wgSecurePollGPGCommand
  • $wgSecurePollCreateWikiGroups
  • $wgSecurePollSingleTransferableVoteEnabled
  • $wgSecurePollGpgSignKey
  • $wgSecurePollUseNamespace
  • $wgSecurePollCreateRemoteScriptPath
  • $wgSecurePollCreateWikiGroupDir
  • $wgSecurePollShowErrorDetail
  • securepoll-create-poll
  • securepoll-view-voter-pii
Przetłumacz rozszerzenie SecurePoll jeżeli jest dostępne na translatewiki.net

Sprawdź wykorzystywanie i matrycę wersji.

Problemy Otwarte zadania · Zgłoś błąd

Rozszerzenie SecurePoll stanowi stronę specjalną przeznaczoną do przeprowadzania wyborów, sondaży i ankiet. Stosowane jest w wyborach do Rady Powierniczej Fundacji Wikimedia jak i w wyborach do komitetu arbitrażowego. Rozszerzenie było również używane między innymi do głosowania nad przeniesieniem licencji Wikimedia.

Zrzuty ekranu

Instalacja

  • Pobierz i umieść plik(i) w katalogu o nazwie SecurePoll w folderze extensions/.
  • Dodaj poniższy kod na dole swojego pliku LocalSettings.php :
    wfLoadExtension( 'SecurePoll' );
    
  • Uruchom skrypt aktualizujący, który automatycznie stworzy potrzebne tabele dla tego rozszerzenia.
  • Yes Zrobione – Przejdź do Special:Version na swojej wiki, aby sprawdzić czy rozszerzenie zostało pomyślnie zainstalowane.

Należy także przypisać nowe uprawnienia użytkownika "securepoll-create-poll" do grup użytkowników. Aby przypisać uprawnienia administratorom, dodaj następujące elementy do LocalSettings.php:

$wgGroupPermissions['sysop']['securepoll-create-poll'] = true;

Umożliwi to wszystkim administratorom na tworzenie głosowań, lecz nie na zarządzanie określonym głosowaniem (w tym edytowanie strony głosowania, przeglądanie danych użytkownika itp.). Poszczególni administratorzy zarządzający konkretnym głosowaniem są definiowani podczas tworzenia lub edytowania strony głosowania. Tylko członkowie grupy "electionadmin" mogą zarządzać stroną głosowania. Aby utworzyć tę grupę, należy dodać następujące elementy do LocalSettings.php:

$wgGroupPermissions['electionadmin'] = [];

Następnie należy przypisać konkretnego użytkownika do grupy electionadmin przez Special:UserRights. Należy mieć na uwadze, że administratorzy stron głosowań mają dostęp do danych głosujących, więc tylko zaufani użytkownicy powinni być przypisani do tej grupy. Jeśli użytkownicy ci zostaną usunięci z grupy, nie będą już mogli zarządzać żadnymi stronami głosowań.

Użycie

Tworzenie nowego głosowania

Istnieją dwa sposoby tworzenia nowego głosowania: ręczne utworzenie pliku XML i zaimportowanie go lub przy użyciu interfejsu tworzenia ankiety w Special:SecurePoll.

Metoda ręczna

Aby utworzyć głosowanie za pomocą tej metody należy:

  1. przygotować plik XML
  2. zaimportować go za pomocą polecenia interfejsu wiersza poleceń import.php

W folderze testowym znajdują się cztery przykładowe pliki:

  • 3way-test.xml
  • approval-test.xml
  • radio-range.xml
  • schulze-test.xml info

Aby zaimportować głosowanie, uruchom następujące polecenie z folderu „cli”:

extensions/SecurePoll/cli$ php import.php ../test/3way-test.xml

Aby zaimportować ankietę za pomocą dockera, należy uruchomić następujące polecenie z folderu „cli”:

docker-compose exec mediawiki php extensions/SecurePoll/cli/import.php extensions/SecurePoll/test/radio-range.xml

Metoda wykorzystująca interfejs internetowy

A user with the securepoll-create-poll right can create a new poll via the link at the bottom of Special:SecurePoll.

To create a new poll, fill in the mandatory fields in the create form. Special care may be needed with the following fields:

  • When adding poll admins, only members of the electionadmin group are allowed. If $wgSecurePollUseLogging is set to true, it will be logged whenever an admin is added to or removed from a poll. The logs can be viewed at Special:SecurePollLog.
  • To create an encrypted poll, select the radio for the encryption method. If you choose GnuPG, generate a (public) encryption key and a (private) decryption key. Enter the encryption key into the create form, and keep the private key safe somewhere offline (you will need it for tallying, once the election has finished). A detailed example can be found here.

Przejdź do Special:SecurePoll, a zobaczysz stronę głosowania.

Edit an existing poll

To edit a poll, you must be an admin of the particular poll. From Special:SecurePoll, click on the Edit link for the poll you want to edit.

Before an election has begun, anything about the election can be edited. After an election has begun, some fields can no longer be edited.

Edit who can vote in a poll

To edit who can vote in a poll, you must be an admin of the particular poll. From Special:SecurePoll, click on the Voter Eligibility link for the poll.

Translate a poll

To translate a poll, you must be an admin of the particular poll. From Special:SecurePoll, click on the Translate link for the poll you want to translate.

See a list of voters

Anyone can see a list of voters, unless transparency features were disabled when the poll was created.

Admins of a particular poll can see a list of voters, along with private information that may help to identify duplicate voters (e.g. IP addresses, user agent information, shared cookies). If $wgSecurePollUseLogging is set to true, it will be logged whenever an admin views private data. The logs can be viewed at Special:SecurePollLog.

Admins may strike any votes that they believe to be duplicates.

Tally a poll

To tally a poll, you must be an admin of the particular poll. From Special:SecurePoll, click on the Tally link for the poll you want to tally.

If the poll has been tallied before, the results will be shown on the page. If not, or if you want to re-tally, there is a form for starting a new tally.

  • If the poll is unencrypted, click on the tally button.
  • If the poll is encrypted, you may need to enter more information. For example, if you used GnuPG, enter the (private) decryption key and click on the tally button. If an encrypted poll has many votes, it may take a long time to tally. You may need to check back later for the results.

Now visit Special:SecurePoll and you will see your poll.

(STV) Tallying

To enable STV tallying please add the below configuration value to LocalSettings.php

$wgSecurePollSingleTransferableVoteEnabled = true;

More information on single transferable votes (STV) can be found here.

General algorithm implementation (source).

Quota is + .000001. Quota is the minimum value of votes to secure a seat.

1. Compute the quota.
2. Assign votes to candidates by first preferences.
3. Declare as winners all candidates who received at least the quota.
4. Transfer the excess votes from winners to hopefuls.
5. Repeat steps 3 and 4 until no new candidates are elected. (Under some systems, votes could initially be transferred in this step to prior winners or losers. This might affect the outcome.)
If all seats have winners, the process is complete. Otherwise:
6. Eliminate one or more candidates, typically either the lowest candidate or all candidates whose combined votes are less than the vote of the lowest remaining candidate.
7. Transfer the votes of the losers to remaining hopeful candidates.
8. Repeat 3–7 until all seats are full.

The quota we will use (step 1) is the Droop quota (source):

floor( no. votes / (no. seats + 1) ) + 1

The method for transferring votes from elected or eliminated candidates will be the Meek method:

Tallying (JobRunner)

  • Tallies can be processed via a scheduled job Manual:Job queue. Make sure to create a scheduled job for this task or execute the task manually.
  • Tallies can also be processed by executing the tallying script manually:

To execute a tally, run the following from the cli folder located at extensions/SecurePoll/cli:

extensions/SecurePoll/cli/tally.php

To execute a tally using MediaWiki-Docker, run the following from the cli folder located at extensions/SecurePoll/cli:

docker-compose exec mediawiki php extensions/SecurePoll/cli/tally.php

Generating (STV)Test Elections

  • Test (STV)elections can be generated from the cli folder located at extensions/SecurePoll/cli:
  • To generate a test election, run the following from the cli folder located at extensions/SecurePoll/cli:
extensions/SecurePoll/cli/generateTestElection.php
  • Test (STV) elections provide scaffolding from which to tally on

Documentation

SecurePoll

SecurePoll general documentation can be found at wikitech:SecurePoll.

SecurePoll Improvements

A summary of improvements to SecurePoll can be found at Anti-Harassment Tools/SecurePoll Improvements.

Understanding the STV result