Расширение:SecurePoll

This page is a translated version of the page Extension:SecurePoll and the translation is 100% complete.
Справка по расширениям MediaWiki
SecurePoll
Статус релиза: стабильно
Реализация Служебная страница
Описание Позволяет проводить выборы, опросы и анкетирование
Автор(ы) Tim Starlingобсуждение
Последняя версия 3.0.0 (постоянные обновления)
Политика совместимости Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki 1.25+
Изменения в БД Да
Таблицы securepoll_entity
securepoll_msgs
securepoll_properties
securepoll_elections
securepoll_questions
securepoll_options
securepoll_voters
securepoll_votes
securepoll_strike
securepoll_lists
securepoll_cookie_match
Лицензия GNU General Public License 2.0 или позднее
Скачать
  • $wgSecurePollTempDir
  • $wgSecurePollUseLogging
  • $wgSecurePollKeepPrivateInfoDays
  • $wgSecurePollUseNamespace
  • $wgSecurePollSingleTransferableVoteEnabled
  • $wgSecurePollGPGCommand
  • $wgSecurePollCreateWikiGroups
  • $wgSecurePollGpgSignKey
  • $wgSecurePollTranslationImportSourceUrl
  • $wgSecurePollCreateRemoteScriptPath
  • $wgSecurePollExcludedWikis
  • $wgSecurePollCreateWikiGroupDir
  • $wgSecurePollShowErrorDetail
  • securepoll-create-poll
  • securepoll-view-voter-pii
Ежеквартальные загрузки 28 (Ranked 121st)
Использование общедоступными вики 889 (Ranked 269th)
Переведите расширение SecurePoll, если оно доступно на translatewiki.net
Проблемы Открытые задачи · Сообщить об ошибке

SecurePoll это расширение, позволяющее проводить выборы, опросы и анкетирование. Оно используется для выборов в Совет Фонда Викимедиа, в некоторые Арбитражные комитеты, а также для различных других голосований и опросов в проектах Фонда Викимедиа.

Скриншоты

Установка

  • Скачайте и распакуйте файл(ы) в папку с названием SecurePoll в вашей папке extensions/.
    Вместо этого разработчикам и соавторам кода следует установить расширение из Git, используя:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SecurePoll
  • Добавьте следующий код в конце вашего файла LocalSettings.php :
    wfLoadExtension( 'SecurePoll' );
    
  • Выполните скрипт обновления, который автоматически создаст необходимые таблицы, используемые расширением.
  •   Готово – Перейдите на страницу Special:Version на своей вики, чтобы удостовериться в том, что расширение успешно установлено.

Вам также нужно будет назначить новое право securepoll-create-poll какой-нибудь группе участников. Чтобы назначить это право администраторам, добавьте следующий код в ваш LocalSettings.php:

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

Это позволит всем администраторам создавать новые голосования, но не позволит им управлять никакими конкретными голосованиями (включая редактирование их условий и описания, просмотр данных участников и т.д). Индивидуальные администраторы для конкретного голосования определяются при его создании или редактировании. Только члены группы «electionadmin» могут администрировать голосования. Чтобы создать эту группу, добавьте следующее в ваш LocalSettings.php:

$wgGroupPermissions['electionadmin'] = [];

Затем назначьте определённого участника в группу electionadmin с помощью Special:UserRights. Обратите внимание, что администраторы голосований могут видеть данные голосующих, поэтому в эту группу следует назначать только доверенных участников. Если же исключить участников из этой группы, они больше не смогут администрировать никакие голосования.

Использование

Создание нового голосования

Есть два способа создать новое голосование: вручную создать XML-файл и импортировать его, или использовать интерфейс создания голосований на Special:SecurePoll.

Вручную

Чтобы создать голосование вручную, необходимо:

  1. создать XML-файл
  2. импортировать его, запустив команду import.php в интерфейсе командной строки

В папке test вы можете найти четыре файла с примерами:

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

Чтобы импортировать голосование, запустите следующую команду:

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

Чтобы импортировать голосование с помощью docker, запустите следующую команду:

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

Через веб-интерфейс

Участники(цы), имеющие право securepoll-create-poll, могут создавать новые голосования с помощью специальной ссылки внизу страницы Special:SecurePoll.

Чтобы создать новое голосование, заполните обязательные поля в форме создания. Особое внимание может потребоваться при заполнении следующих полей:

  • Только члены группы electionadmin могут добавляться в голосования в качестве администраторов. Если параметр $wgSecurePollUseLogging установлен в значение true, то при добавлении или удалении администратора в голосовании, это будет записываться в специальный журнал. Этот журнал доступен на странице Special:SecurePollLog.
  • Чтобы создать зашифрованное голосование, выберите метод шифрования. Если выбран метод GnuPG, будут сгенерированы (публичный) ключ шифрования и (частный) ключ дешифрования. Ключ шифрования следует ввести в форму создания, а закрытый ключ следует хранить в безопасности где-то вне сети (он понадобится для подсчёта голосов после выборов). Подробный пример смотрите здесь.

Теперь перейдите на Special:SecurePoll и вы увидите созданное вами голосование.

Редактирование существующего голосования

Чтобы редактировать опрос, вы должны быть администратором этого голосования. На странице Special:SecurePoll нажмите на ссылку «Редактировать» рядом с тем голосованием, которое вы хотите отредактировать.

Всё, что связано с выборами, может быть отредактировано до начала выборов. После начала выборов некоторые элементы редактировать нельзя.

Редактирование списка голосующих

Для редактирования списка участников голосования вы должны быть его администратором. На странице Special:SecurePoll нажмите на ссылку «Редактировать» рядом с тем голосованием, которое вы хотите отредактировать.

Перевод голосования

Для перевода голосования вы должны быть его администратором. На странице Special:SecurePoll нажмите на ссылку «Редактировать» рядом с тем голосованием, которое вы хотите перевести.

Просмотр списка проголосовавших

Любой желающий может просмотреть список проголосовавших, если только функция прозрачности голосования не была отключена при создании опроса.

Администраторы конкретного голосования могут видеть список проголосовавших, а также частную информацию, которая может помочь в выявлении дубликатов голосов (например, IP-адрес, информацию об юзер-агенте, общие файлы cookie). Если для параметра $wgSecurePollUseLogging установлено значение true, каждый раз, когда администратор просматривает частные данные, это будет записываться в журнале. Записи журнала находятся на странице Special:SecurePollLog.

Администраторы могут отклонять любые голоса, которые, по их мнению, являются дубликатами.

Подсчет голосов

Подсчитывать голоса в голосовании может только администратор этого голосования. На странице Special:SecurePoll нажмите на ссылку подсчёта голосов рядом с тем голосованием, голоса в котором вы хотите подсчитать.

Если голосвание было подсчитано раньше, результаты будут показаны на странице. Если нет, или если вы хотите пересчитать голоса, есть форма для начала нового подсчёта.

  • Если голоса не зашифрованы, нажмите на кнопку подсчёта.
  • Если голосование зашифровано, вам может потребоваться ввести дополнительную информацию. Например, если используется GnuPG, введите (частный) ключ расшифровки и нажмите на кнопку подсчёта голосов. Если в зашифрованном списке много голосов, подсчёт может занять много времени. Вам может понадобиться проверить результаты позже.

Теперь перейдите на $1 и вы увидите созданное вами голосование.

Подсчёт голосов (СЕПГ)

Чтобы включить подведение итогов голосования по Системе единого (единственного) передаваемого голоса (СЕПГ), добавьте следующие значения конфигурации в LocalSettings.php.

$wgSecurePollSingleTransferableVoteEnabled = true;

Более подробную информацию можно найти в Википедии:, подсчёт голосов СЕПГ (на английском).

Общая реализация алгоритма источник (англ.).

Порог голосов + .000001. Порог голосов (квота) это минимальное количество голосов, необходимое для получения места.

1. Рассчитайте порог голосов.
2. Распределите голоса между кандидатами в порядке предпочтения.
3. Объявить победителями всех кандидатов, перешагнувших порог голосования.
4. Передайте излишек голосов от победителей следующим кадидатам по порядку предпочтения.
5. Повторяйте шаги 3 и 4 до тех пор, пока не останется ни одного нового кандидата, которого необходимо избрать. (При некоторых схемах в начале голосования голоса могут быть перераспределены между предыдущими победителями и проигравшими. Это может повлиять на исход выборов).
Если на все места есть победители, процесс завершён. В противном случае:
6. Исключите одного или нескольких кандидатов, как правило, либо кандидата с наименьшим числом голосов, либо всех кандидатов, совокупное число голосов которых меньше голосов наименьшего оставшегося кандидата.
7. Передайте голоса проигравших оставшимся кандидатам.
8. Повторяйте шаги с 3 по 7, пока все места не будут заполнены.

Порог, который мы используем (шаг 1), это квота, расчитанная по:

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

Метод передачи голосов от избранных или выбывших кандидатов это метод Мика:

Подсчёт голосов (JobRunner)

  • Обработка итогов может осуществляться с помощью запланированного задания Руководство:Очередь задач. Убедитесь, что вы создали запланированное задание для задачи или выполнили её вручную.
  • Голоса также можно обрабатывать, выполняя сценарий подсчёта вручную:

Чтобы выполнить подсчёт, запустите следующую команду из папки cli, расположенной в extensions/SecurePoll/cli:

extensions/SecurePoll/cli/tally.php

Чтобы выполнить подсчёт с помощью MediaWiki-Docker, запустите следующую команду из папки cli, расположенной в extensions/SecurePoll/cli:

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

Создание тестовых голосований (СЕПГ)

  • Тестовые голосования (СЕПГ) могут быть сгенерированы из папки cli, расположенной в extensions/SecurePoll/cli:
  • Чтобы создать тестовое голосование, запустите следующую команду из папки cli, расположенной в extensions/SecurePoll/cli:
extensions/SecurePoll/cli/generateTestElection.php
  • Тестовые голосования (СЕПГ) обеспечивают платформу для подсчета голосов.

Документация

SecurePoll

Общая документация SecurePoll доступна на странице wikitech:SecurePoll.

Усовершенствования SecurePoll

Краткое описание улучшений в SecurePoll можно найти на странице Anti-Harassment Tools/SecurePoll Improvements.

Понимание результатов СЕПГ

Документацию по результатам СЕПГ можно найти на странице Anti-Harassment Tools/SecurePoll Improvements/Understanding the STV result.