How Voting Works: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(update status notice: duplication of content (Imported from MoinMoin))
 
((Imported from MoinMoin))
(One intermediate revision by the same user not shown)
Line 1: Line 1:
=How Votes on Edits are processed=
<ul><li style="list-style-type:none">[[Image:Attention.png]] '''Status:''' ''This page is work in progress and [[Needs Editing|NeedsEditing]] and [[Needs Intertwingling|NeedsIntertwingling]] quite badly. I just gathered some information that went over the [[Mailing List|MailingList]], so that it would not be lost. It partially duplicates Information which is on the [http://wiki.musicbrainz.org/ModerationFAQ#head-d9b521e9caacf43d4efefab55e3efb61044dc721 FAQ]. That stuff should probably get moved here'' --[[User:DonRedman|DonRedman]]

<ul><li style="list-style-type:none">[[Image:Attention.png]] '''Status:''' ''This page is work in progress and [[Needs Editing|NeedsEditing]] and [[Needs Intertwingling|NeedsIntertwingling]] quite badly. I just gathered some information that went over the [[Mailing List|MailingList]], so that it would not be lost. It partially duplicates Information which is on the [http://wiki.musicbrainz.org/VotingFAQ#head-98cdf8c12bcb1138613e5940fabaa929662fa216 FAQ]. That stuff should probably get moved here'' --[[User:DonRedman|DonRedman]]
</ul>
</ul>


==Preface==
Generally ties (as many yes as no-votes) fail.


* Edits are generally kept open 7 days, with an additional grace period which lasts another 7 days.
==Algorithm for closing moderations==
* Edits with as many <code><nowiki>Yes</nowiki></code> as <code><nowiki>No</nowiki></code> votes are generally considered failed and not applied by the <code><nowiki>ModBot</nowiki></code>.


==Algorithm for closing edits==
by [[User:DaveEvans|DaveEvans]]


Every hour, the server runs the following algorithm, applying it to each open moderation in turn. In the text below, EXIT means that the fate of the mod in question has been determined; the system turns its attention to the next open mod.
Every hour, the server runs the following algorithm, applying it to each open edit in turn. In the text below, '''EXIT''' means that the fate of the edit in question has been determined, the <code><nowiki>ModBot</nowiki></code> turns its attention to the next open edit. <small>by [[User:DaveEvans|DaveEvans]] </small>
# If the editor has marked the mod as "to be deleted", it will be deleted. EXIT.
# If the editor has marked the edit as "to be deleted", it will be deleted. '''EXIT'''.
# There is then some logic to do with dependencies between mods (which, to be honest, I've never really understood and I'm tempted to try to remove). The mod may go to "Failed Prerequisite" (EXIT), or it may stay "Open" (EXIT). Or, we might continue...
# There is then some logic to do with dependencies between edits, there are 3 possible outcomes of the dependency checks
#* <code><nowiki>ModBot</nowiki></code> determines that the edit fails due to ''Failed Prerequisite'' '''EXIT'''
# If the mod has expired (i.e. it is 7 or more days old), then:
#* <code><nowiki>ModBot</nowiki></code> determines that the edit stays "Open" '''EXIT'''
## If there are MORE yes votes than no votes, then the mod is "Applied". EXIT.
#* The outcome of the check does not require any action, and the <code><nowiki>ModBot</nowiki></code> continues to process the edit...
## As long as anyone voted (i.e. yes or no - abstains are ignored), then the mod has now "Failed Vote". EXIT.
## By now we know that the mod is expired (a week old) and no-one has voted on it.
## If the mod's "grace period" has expired (i.e. it is 14 or more days old), then the mod is "Applied" (since no-one was apparently interested either way). EXIT.
## By now we know we're dealing with a mod between 7 and 14 days old, and with no votes so far.
## Each mod is associated with one artist; if that artist has no subscribers (excluding the original editor), then the mod is "Applied". EXIT.
## Otherwise, we continue...


# By now we're either dealing with a mod less than 7 days old, or one 7-14 days old with no votes.
# If the edit has expired (older than 7 days), then:
# If there are at least 3 "yes" votes and zero "no" votes, the vote is deemed to be unanimous, and the mod is "Applied". EXIT.
## If there are MORE yes votes than no votes, then the mod is ''Applied''. '''EXIT'''.
# If there are at least 3 "no" votes and zero "yes" votes, the vote is deemed to be unanimous, and the mod is "Failed Vote". EXIT.
## If the edit has more than 0 <code><nowiki>Yes</nowiki></code>/<code><nowiki>No</nowiki></code> votes (<code><nowiki>Abstain</nowiki></code> are ignored), then the edit is failed due to ''Failed Vote''. '''EXIT'''.
<ul><li style="list-style-type:none">''(Fact of lost vote is given because won votes are applied in the step before, and the exit conditon being reached)''
# Otherwise, the mod stays open for now.
</ul>
## By now the <code><nowiki>ModBot</nowiki></code> knows that the edit in question has expired (more than 7 days old) and nobody has voted on it.
## If the edits' '''grace period''' has expired (older than 14 days), then the edit is ''Applied'' (since no-one was apparently interested either way). '''EXIT'''.
## By now the <code><nowiki>ModBot</nowiki></code> knows that it is dealing with an edit between 7 and 14 days old, and with no votes so far.
## Each edit is associated with one artist. If that artist has no subscribers (excluding the original editor), then the edit is ''Applied''. '''EXIT'''.
## Otherwise, it continues...


# By now it is either dealing with an edit less than 7 days old, or one 7-14 days old with no votes.
====
# If there are at least 3 <code><nowiki>Yes</nowiki></code> votes and 0 <code><nowiki>No</nowiki></code> votes, the vote is deemed to be unanimous, and the edit is applied, and is ''Applied''. '''EXIT'''.
# If there are at least 3 <code><nowiki>No</nowiki></code> votes and 0 <code><nowiki>Yes</nowiki></code> votes, the vote is deemed to be unanimous, and the edit is failed due to <code><nowiki>Failed Vote</nowiki></code>. '''EXIT'''.
# Otherwise, the edit stays open for now.


==Algorithm for Expired Edits==
The following is from [http://lists.musicbrainz.org/pipermail/musicbrainz-users/2005-January/019318.html a mail] by [[User:MatthiasFriedrich|MatthiasFriedrich]]:


The algorithm for ''expired'' edits is the following (translated from [http://bugs.musicbrainz.org/browser/mb_server/trunk/cgi-bin/MusicBrainz/Server/ModBot.pm ModBot.pm] to pseudo code) <small>by [[User:MatthiasFriedrich|MatthiasFriedrich]] on the [http://lists.musicbrainz.org/pipermail/musicbrainz-users/2005-January/019318.html mailing list] </small>
==Algorithm for Expired Moderations==


<pre>IF someone voted yes or no; THEN
The algorithm for ''expired'' edits is the following (translated from CVS mb_server/cgi-bin/[[MusicBrainz]]/Server/[[ModBot]].pm to pseudo code):

----

<pre>IF someone voted yes or no; THEN
IF yes_votes > no_votes; THEN
IF yes_votes > no_votes; THEN
apply()# and exit
apply() # and '''EXIT'''
ELSE
ELSE
fail()# and exit
fail() # and '''EXIT'''
FI
FI
FI
FI


# At this point, we only have expired mods that nobody voted on
# At this point, we only have expired mods that nobody voted on
# yet. Abstains aren't counted
# yet. Abstains are not counted
IF grace period has expired; THEN # grace period is another week

apply() # and '''EXIT'''
IF grace period has expired; THEN # grace period is another week
apply()# and exit
ELSE
ELSE
# grace period has not expired yet
# grace period has not expired yet
IF the mod submitter is the only subscriber; THEN
IF the mod submitter is the only subscriber; THEN
apply() # and '''EXIT'''

apply()# and exit

FI
FI

FI
FI
</pre>
</pre>


----<br/> <small>Original version: - </small>
----

Perhaps a decision table helps:

<pre>Condition | | |
<hr>+<hr>+<hr>+<hr>
| | |
yes > no | X | |
yes < no | | X |
| | |
yes = no | X X | X | X X
yes=0, no=0 | X X | | X X
| | |
grace expired | X X | |
other sub. exist | X | | X
| | |
<hr>+<hr>+<hr>+<hr>
| | |
apply | X X X | |
fail | | X X |
do nothing | | | X X
</pre>

I was too lazy to introduce a "don't care" symbol and merge the superfluous columns. Too much work in ASCII art.
<ul><li style="list-style-type:none">To tell you the truth, I did not understand the table --[[User:DonRedman|DonRedman]]
</ul>


[[Category:To Be Reviewed]] [[Category:Documentation]]
[[Category:To Be Reviewed]] [[Category:Documentation]]

Revision as of 22:16, 11 June 2006

How Votes on Edits are processed

  • Attention.png Status: This page is work in progress and NeedsEditing and NeedsIntertwingling quite badly. I just gathered some information that went over the MailingList, so that it would not be lost. It partially duplicates Information which is on the FAQ. That stuff should probably get moved here --DonRedman

Preface

  • Edits are generally kept open 7 days, with an additional grace period which lasts another 7 days.
  • Edits with as many Yes as No votes are generally considered failed and not applied by the ModBot.

Algorithm for closing edits

Every hour, the server runs the following algorithm, applying it to each open edit in turn. In the text below, EXIT means that the fate of the edit in question has been determined, the ModBot turns its attention to the next open edit. by DaveEvans

  1. If the editor has marked the edit as "to be deleted", it will be deleted. EXIT.
  2. There is then some logic to do with dependencies between edits, there are 3 possible outcomes of the dependency checks
    • ModBot determines that the edit fails due to Failed Prerequisite EXIT
    • ModBot determines that the edit stays "Open" EXIT
    • The outcome of the check does not require any action, and the ModBot continues to process the edit...
  1. If the edit has expired (older than 7 days), then:
    1. If there are MORE yes votes than no votes, then the mod is Applied. EXIT.
    2. If the edit has more than 0 Yes/No votes (Abstain are ignored), then the edit is failed due to Failed Vote. EXIT.
  • (Fact of lost vote is given because won votes are applied in the step before, and the exit conditon being reached)
    1. By now the ModBot knows that the edit in question has expired (more than 7 days old) and nobody has voted on it.
    2. If the edits' grace period has expired (older than 14 days), then the edit is Applied (since no-one was apparently interested either way). EXIT.
    3. By now the ModBot knows that it is dealing with an edit between 7 and 14 days old, and with no votes so far.
    4. Each edit is associated with one artist. If that artist has no subscribers (excluding the original editor), then the edit is Applied. EXIT.
    5. Otherwise, it continues...
  1. By now it is either dealing with an edit less than 7 days old, or one 7-14 days old with no votes.
  2. If there are at least 3 Yes votes and 0 No votes, the vote is deemed to be unanimous, and the edit is applied, and is Applied. EXIT.
  3. If there are at least 3 No votes and 0 Yes votes, the vote is deemed to be unanimous, and the edit is failed due to Failed Vote. EXIT.
  4. Otherwise, the edit stays open for now.

Algorithm for Expired Edits

The algorithm for expired edits is the following (translated from ModBot.pm to pseudo code) by MatthiasFriedrich on the mailing list

IF someone voted yes or no; THEN
   IF yes_votes > no_votes; THEN
      apply() # and '''EXIT'''
   ELSE
      fail() # and '''EXIT'''
   FI
FI

# At this point, we only have expired mods that nobody voted on
# yet. Abstains are not counted
IF grace period has expired; THEN # grace period is another week
   apply() # and '''EXIT'''
ELSE
   # grace period has not expired yet
   IF the mod submitter is the only subscriber; THEN
      apply() # and '''EXIT'''
   FI
FI


Original version: -