Extension:SecurePoll/zh

SecurePoll扩展是一个特殊页面扩展，用于选举、投票和调查. 它被用于维基媒体基金会董事会的选举和仲裁委员会的选举，并被用于维基媒体许可证的过渡投票等.

安装
你还需要把新的“ ”用户权限分配给某个用户组. 要把这个权限分配给管理员，请在你的 中添加以下内容.

这允许所有管理员创建投票，但不允许所有管理员管理某个特定的投票（包括编辑投票，查看用户数据等）. 在创建或编辑投票时，可以为某一特定投票定义单独管理员. 只有“ ”组的成员可以管理投票. 要创建这个组，请在你的 中添加以下内容.

然后通过Special:UserRights将一个特定的用户分配到 组. 请注意，选举管理员可以看到选民数据，所以只有受信任的用户应该被分配到这个组. 如果他们被从小组中删除，他们将不再能够管理任何选举.

创建新投票
有两种方法来创建一个新的投票：手动创建一个XML文件并导入，或者使用Special:SecurePoll的投票创建界面.

手动
要手动创建一个投票，需要：


 * 1) 编写一个XML文件
 * 2) 使用 命令行界面命令导入它

在test文件夹中，你可以找到四个示例文件.


 * info
 * info
 * info
 * info

要导入一个投票，从cli文件夹中运行以下内容.

要使用docker导入一个投票，从cli文件夹中运行以下内容：

通过Web界面
A user with the  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  group are allowed. If   is set to , 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.

现在访问Special:SecurePoll，你会看到你的投票.

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  is set to , 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

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):

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


 * 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:

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

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:
 * Test (STV) elections provide scaffolding from which to tally on