امتداد:الاقتراع الآمن
![]() حالة الإصدار مستقر |
|
---|---|
![]() |
|
تنفيذ | صفحة خاصة |
بيان | يسمح بإجراء الانتخابات والإستطلاعات والإستبانات |
المؤلف/المؤلفون | Tim Starlingنقاش |
آخر إصدار | 3.0.0 (تحديثات مستمرة) |
سياسة التوافق | تصدر اللقطات البرمجية مع ميدياويكي. الإصدار الرئيسي لا يتوافق مع الإصدارات السابقة. |
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 |
ترخيص | رخصة جنو العمومية 2.0 أو ما بعدها |
التنزيل | |
|
|
|
|
تنزيلات ربع سنوية | 13 (Ranked 104th) |
استخدام مواقع الويكي العمومية | 889 (Ranked 269th) |
ترجم الامتداد SecurePoll لو كان متوفرا على translatewiki.net | |
المسائل | المهام المفتوحة · الإبلاغ عن عطل تقني |
امتداد SecurePoll هو امتداد خاص للانتخابات والاستطلاعات والإستبانات. يستخدم لانتخابات مجلس مؤسسة ويكيميديا ولانتخابات لجنة التحكيم، وسبق استخدامه للتصويت على انتقال ترخيص ويكيميديا وأشياء أخرى.
لقطات شاشة
-
الصفحة الرئيسية التي تظهر قائمة من استطلاعات الرأي
-
صفحة استطلاع مع نص وصفي
-
سجل الإدارة للتصويت الآمن SecurePoll
-
سجلات الناخبين على التصويت الآمن SecurePoll
التثبيت
- نزّل الملف/الملفات وضعها في دليل يحمل اسم
SecurePoll
داخل مجلد extensions/
لديك.
يجب على مطوري البرمجيات والمساهمين بالكود البرمجي تثبيت الامتداد من غت بدلا من ذلك، مستخدمين:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SecurePoll - أضف الكود التالي في الجزء الأسفل من ملف LocalSettings.php :
wfLoadExtension( 'SecurePoll' );
- شغل نص التحديث البرمجي الذي سوف ينشئ تلقائيا جداول قاعدة البيانات الضرورية التي يحتاج إليها الامتداد.
- تم التنفيذ – اذهب إلى Special:Version على موقع الويكي لديك كي تتحقق من أن الامتداد قد ثبت بنجاح.
In addition, you will need to add some user groups and user rights to your LocalSettings.php file. Here is one way to do it, which gives a new group called electionadmin the power to do everything in SecurePoll (create polls, edit polls, see voter IP addresses):
$wgGroupPermissions['electionadmin']['securepoll-create-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-edit-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-view-voter-pii'] = true;
Once this group is created, a bureaucrat can add someone to the group using Special:UserRights. Then that person can visit Special:SecurePoll to view polls, create polls, edit polls, tally polls, etc.
Each poll's data is compartmentalized. You can have 100 electionadmins, but if you only add one electionadmin to a particular poll, only that one electionadmin will be able to edit that particular poll or see user IPs. If an electionadmin is removed from a poll, they will lose access to it.
securepoll-view-voter-pii
is used for "scrutineering" a poll, which involves looking at a list of voter IPs, user agents, and X-Forwarded-For headers to look for cheating (secret duplicate votes by sockpuppets). Because this involves looking at voter IP addresses and other sensitive, personal, de-anonymizing data, it is a sensitive user right, so only trusted users should be assigned to the electionadmin group.
It is possible to split securepoll-view-voter-pii
into a separate group. You can use a config such as the one below to create a group called scrutineer that contains the securepoll-view-voter-pii
right, separating it from the electionadmin group:
$wgGroupPermissions['electionadmin']['securepoll-create-poll'] = true;
$wgGroupPermissions['electionadmin']['securepoll-edit-poll'] = true;
$wgGroupPermissions['scrutineer']['securepoll-create-poll'] = true;
$wgGroupPermissions['scrutineer']['securepoll-edit-poll'] = true;
$wgGroupPermissions['scrutineer']['securepoll-view-voter-pii'] = true;
A user also needs to be added to the poll (and hence have the securepoll-edit-poll
right) in order to view PII - securepoll-view-voter-pii
by itself has no effect.
الاستخدام
إنشاء استطلاع جديد
هناك طريقتان لإنشاء استطلاع جديد: إعداد ملف XML يدوياً واستيراده، أو استخدام واجهة إنشاء استطلاعات الرأي في Special:SecurePoll.
يدويًا
لإنشاء استطلاع رأي يدوياً، يتطلب أن:
- تكتب ملف XML
- تستورده باستخدام الأمر
import.php
من واجهة الأوامر command-line
في مجلد الاختبار يمكنك العثور على أربع ملفات كأمثلة:
3way-test.xml
approval-test.xml
radio-range.xml
schulze-test.xml
info
لاستيراد استطلاع، قم بتشغيل ما يلي من مجلد cli:
extensions/SecurePoll/cli$ php import.php ../tests/phpunit/data/3way-test.xml
لاستيراد استطلاع رأي باستخدام docker، قم بتشغيل ما يلي من مجلد cli:
docker-compose exec mediawiki php extensions/SecurePoll/cli/import.php extensions/SecurePoll/tests/phpunit/data/3way-test.xml
من خلال واجهة الويب
يمكن للمستخدم الذي يمتلك صلاحية الـ securepoll-create-poll
إنشاء استطلاع جديد عن طريق الرابط الموجود في أسفل Special:SecurePoll.
لإعداد استطلاع جديد، املأ الحقول الإلزامية في نموذج الإعداد. قد تكون هناك حاجة إلى الحرص في الحقول التالية:
- عند إضافة مديري الاستطلاع، يُسمح فقط لأعضاء مجموعة
electionadmin
. إذا تم تعيين$wgSecurePollUseLogging
إلىtrue
، فسيتم تسجيله كلما أُضيف إداري إلى أو أُزيل من استطلاع. يمكن مشاهدة السجلات في Special:SecurePollLog. - لإنشاء استطلاع رأي مُشفَّر، اختر زر طريقة التشفير. إذا اخترت GnuPG، قم بتوليد مفتاح تشفير (عام) ومفتاح فك تشفير (خاص). أدخل مفتاح التشفير في نموذج الإنشاء، واحفظ المفتاح الخاص آمنا في مكان ما (ليس على الويب) (ستحتاج إليه للفرز، بمجرد انتهاء الانتخابات). يمكن رؤية مثال مفصل.
الآن طالع Special:SecurePoll وسوف ترى استطلاع الرأي الخاص بك.
تعديل استطلاع موجود
لتعديل استطلاع، يجب أن تكون مديرًا لهذا الاستطلاع المعين. من Special:SecurePoll، انقر على رابط تحرير الاستطلاع الذي تريد تحريره.
قبل أن تبدأ الانتخابات، يمكن تحرير أي شيء عن الانتخاب. بعد بدء الانتخابات، لا يمكن تحرير بعض الحقول بعد الآن.
تحديد مَن يمكنه التصويت في الاستطلاع
لتحرير مَن يمكنه التصويت في استطلاع، يجب أن تكون مديرًا لهذا الاستطلاع المعين. من Special:SecurePoll، انقر على رابط مؤهلات التصويت للإستطلاع Eligibility.
ترجمة استطلاع
لترجمة استطلاع، يجب أن تكون مديرًا لهذا الاستطلاع المعين. من Special:SecurePoll، انقر على رابط الترجمة للاستطلاع الذي تريد تحريره.
طالع قائمة المصوتين
يمكن لأي شخص رؤية قائمة الناخبين، ما لم يجري تعطيل ميزات الشفافية transparency عند إنشاء الاستطلاع.
يمكن لمديري استطلاع معين رؤية قائمة الناخبين، جنبا إلى جنب مع المعلومات الخاصة التي قد تُساعد على تحديد الناخبين المكررين (مثل عناوين IP، معلومات وكيل المستخدم، ملفات تعريف الارتباط المشتركة).
إذا تم تعيين $wgSecurePollUseLogging
إلى true
، فسيجري تسجيل كلما قام مدير برؤية البيانات الخاصة. يمكن مُطالعة السجلات على Special:SecurePollLog.
يمكن للمديرين إلغاء أي تصويتات يرون أنها مكررة.
فرز الاستطلاع
لفرز استطلاع، يجب أن تكون مديرًا لهذا الاستطلاع المعين. Special:SecurePoll، انقر على رابط "فرز Tally" للحصول على الاستطلاع الذي تريد أن تفرزه.
إذا كان الاستطلاع قد جرى فرزه من قبل، فستظهر النتائج على الصفحة. إذا لم يكن، أو إذا كنت تريد إعادة الفرز، هناك نموذج لبدء فرز جديد.
- إذا كانت الاستطلاع غير مشفر، انقر على زر الفرز.
- إذا كانت الاستطلاع مشفر، قد تحتاج إلى إدخال مزيد من المعلومات. على سبيل المثال، إذا كنت تستخدم GnuPG، أدخل مفتاح فك تشفير (الخاص) وانقر على زر الفرز. إذا كان استطلاع الرأي المشفر به عدد كبير من الأصوات، قد يستغرق ذلك وقتا طويلاً للفرز. قد تحتاج إلى التحقق من النتائج لاحقاً.
الآن طالع $1 وسوف ترى استطلاع الرأي الخاص بك.
الفرز بطريقة الصوت القابل للانتقال (STV)
لمعلومات أكثر حول الصوت القابل للانتقال (STV) طالع ويكيبيديا.
تنفيذ الخوارزمية العامة (source).
الحصة Quota هي + .000001. الحصة هي الحد الأدنى من الأصوات للحصول على مقعد.
1. احسب الحصة 2. تعيين الأصوات للمرشحين حسب التفضيلات الأولى 3. إعلان فوز جميع المرشحين الذين حصلوا على الحصة على الأقل. 4. نقل الأصوات الزائدة من الفائزين إلى المتوقعين 5. كرر الخطوات 3 و 4 حتى لا يجري انتخاب مرشحين جُدد. (في بعض النظم، يمكن تحويل الأصوات في البداية في هذه الخطوة إلى الفائزين أو الخاسرين السابقين، وهذا قد يؤثر على النتيجة). إذا كان لدى جميع المقاعد فائزون، فستكون العملية قد اكتملت. وإلا: 6. قم بإزالة مرشح واحد أو أكثر، عادةً إما المُرشح الأقل أو جميع المرشحين الذين تقل أصواتهم المشتركة عن أصوات أقل مرشح باقي. 7. نقل أصوات الخاسرين إلى المرشحين المتوقعين المتبقين 8. كرر 3-7 حتى تملأ جميع المقاعد
الحصة التي سنستخدمها (الخطوة 1) هي حصة الحذف Droop quota (source):
floor( no. votes / (no. seats + 1) ) + 1
وسيكون طريقة نقل الأصوات من المرشحين المنتخبين أو المحذوفين هي طريقة "ميك Meek":
الفرز بطريقة (JobRunner)
- يمكن معالجة النتائج من خلال مهمة مجدولة Manual:Job queue . تأكد من إنشاء مهمة مجدولة لهذه المهمة أو تنفيذ المهمة يدويًا.
- يمكن أيضًا معالجة النتائج عن طريق تنفيذ البرنامج النصي للنتائج يدويًا:
لتنفيذ عملية تعداد، قم بتشغيل الأمر التالي من مجلد سطر الأوامر الموجود في extensions/SecurePoll/cli:
extensions/SecurePoll/cli/tally.php
لتنفيذ عملية إحصاء باستخدام MediaWiki-Docker، قم بتشغيل الأمر التالي من مجلد سطر الأوامر الموجود في extensions/SecurePoll/cli:
docker-compose exec mediawiki php extensions/SecurePoll/cli/tally.php
إنشاء انتخابات اختبار (STV)
- يمكن إنشاء انتخابات اختبار (STV) من مجلد سطر الأوامر الموجود في extensions/SecurePoll/cli:
- لتوليد انتخاب اختبار، قم بتشغيل ما يلي من مجلد سطر الأوامر الموجود في extensions/SecurePoll/cli:
extensions/SecurePoll/cli/generateTestElection.php
- توفر انتخابات الاختبار (STV) إطارًا يمكن من خلاله فرز الأصوات
Redirect polls
A redirect poll is a poll that shows up in the list of polls at Special:SecurePoll, but clicking on "vote" and other links will redirect the voter to a different wiki. This is useful if you do all of your votes on a central votewiki (in Wikimedia's case, https://vote.wikimedia.org).
If you...
- are using a wiki farm (multiple wikis using the same file system but different databases),
- you haven't excluded all other wikis using
$wgSecurePollExcludedWikis
, - you have
$wgCanonicalServer
configured to have a period (use different subdomains) on each wiki, and - you have
$wgSecurePollEditOtherWikis = true;
for your current wiki,
...then Special:SecurePoll/create will show an additional drop-down list called "For wiki:" that will let you select "This wiki", "All wikis", or a different wiki in your wiki farm. Selecting anything other than "This wiki" will create "redirect polls" on certain wikis.
If you have a wiki in your wiki farm that doesn't have SecurePoll installed, be sure to add it to $wgSecurePollExcludedWikis
to keep it out of the "For wiki:" list.
"For wiki" dropdown item selected | What it does locally | What it does on other wikis |
---|---|---|
This wiki | Creates a local election | Nothing |
All wikis | Creates a local election | Creates "redirect polls" at every other wiki in the wiki farm |
Picking a specific other wiki such as es.wikipedia.org | Creates a local election | Creates a "redirect poll" at the chosen wiki |
Testing note: $wgCanonicalServer
must contain domains with subdomains. So for example, http://localhost
will not get the dropdown list to show up, but http://en.localhost
will.
$wgConf->settings = [
'wgCanonicalServer' => [
'my_database' => 'http://en.localhost:8080',
'secondwiki' => 'http://es.localhost:8080'
],
In the database, fields related to redirect polls include securepoll_elections.el_auth_type
(can be local or mw-remote), and the following securepoll_properties.pr_key
s: jump-id
, jump-url
, and main-wiki
.
التوثيق
التصويت الآمن SecurePoll
يمكن العثور على الوثائق العامة لـ SecurePoll في wikitech:SecurePoll.
تحسينات التصويت الآمن
تجد ملخص تحسينات التصويت الآمن في Anti-Harassment Tools/SecurePoll Improvements.
فهم نتائج نظام الصوت الواحد القابل للتحويل STV
تجد وثائق حول نتائج طريقة STV في Anti-Harassment Tools/SecurePoll Improvements/Understanding the STV result.
هذا الامتداد يستخدم على واحد من مشاريع ويكيميديا أو أكثر من واحد. يعني هذا الأمر أن الامتداد مستقر ويعمل/تعمل جيدا بما فيه الكفاية ليستخدم/لتستخدم في مواقع تتمتع بمستوى زيارات مرتفع مثل هذه. ابحث عن اسم هذا الامتداد في ملفات الضبط CommonSettings.php وكذلك InitialiseSettings.php كي ترى أين تنصب. توجد قائمة كاملة بالامتدادات المنصبة على موقع ويكي بعينه على صفحة Special:Version الخاصة بموقع الويكي. |
هذا الامتداد مشمول في الحزم أو مزارع الويكي التالية أو كليهما: هذه ليست قائمة كاملة. بعض مزارع الويكي أو الاستضافة أو حزم البرمجيات قد تحتوي على هذا الامتداد حتى لو كانت غير مدرجة هنا. راجع دائمًا مزرعة الويكي أو المستضيف أو حزمة البرمجيات للتأكد من ذلك. |