|Perl: the Markov chain saw|
The Voting/Experience System
Voting and Experience Points (XP) are the basis of the PerlMonks moderation system. As users participate they accumulate XP, which over time brings them additional powers on the site. The main power gained by XP is that of voting rights. Each monk after they have reached Novice is allocated votes to cast on the nodes that they read. The authors of the nodes receive a certain random amount of XP based on the vote (or even lose XP!), and the vote changes the node's reputation. Nodes which are downvoted sufficiently (to the point of having negative rep) and which have come up for consideration may get reaped. All this adds up to a pretty reasonable way of controlling trolls and inappropriate behavior, and hopefully encourages people to think carefully about their posts. What people vote on and why they vote is never clear, and the subject is one of some controversy on occasion, but overall the approach seems to work.
Each root post or reply ("node") will display a couple of radio buttons on it marked ++ and -- (and possibly +=0). The button marked ++ signifies an up vote, and the one marked -- a down vote; if you have configured your User Settings then the +=0 signifies no vote, which can be useful if you change your mind about how you want to vote on a node. When viewing a thread you can cast your votes on multiple nodes at once. Note that the votes aren't actually cast until you hit the "Vote" button (normally located below the last node of the thread).
If you don't see any vote buttons, that could be because: (a) you can't vote because your monk level doesn't grant you any votes; (b) you've used up all the votes you had; (c) you're viewing something that inherently can't be voted on; (d) you've already voted on all the votable nodes on the page.
Once you have already voted on a node, you will see its current reputation instead of the vote buttons.
Votes are handed out once a day by the "vote fairy", with the higher levels receiving more votes. Monks who have used all their votes receive an XP bonus for the effort. The vote fairy is a little forgetful though; occasionally someone is overlooked and doesn't get their votes or bonuses for the day. If you've just reached Novice but don't have any votes yet, that would probably be because the vote fairy hasn't rolled out of bed yet to do the daily rounds. Be patient; you'll get your votes soon enough, usually within twenty-four hours, and almost certainly within forty-eight. We've never heard of the vote fairy forgetting anyone two days in a row, but you never know. :-)
Votes are allocated based on the user's level, which is based on the user's experience. In addition, special capabilities ("powers") accrue to certain levels. The levels, XP required, and number of votes allocated are listed in the table below. Where a level receives additional powers and responsibilities, the details are linked via the level title.
See Levels of Monks for more detail.
There are four ways to earn XP on PerlMonks. They are as follows:
How you gain or lose XP when others vote on your nodes is a bit complicated. First let us define a couple of variables as follows:
The chance that a vote on a node changes the author's XP is based on the $REP's relative value to the current $NORM and on the node's age (how much time has passed since the node was created). If the node's $REP is higher than the $NORM, then an up-vote is more likely to result in the author gaining 1 XP, and a down-vote is less likely to result in the author losing 1 XP. If the $REP is below $NORM then any given vote will always have a fixed chance of altering the author's XP. The exact odds are as follows, for nodes that are 2 weeks old or newer:
1 If a node is more than 4 weeks old, then the odds of its author gaining 1 XP when it is up-voted are 1/3 no matter the reputation. When a node turns 2 weeks old, the odds are based on the node's reputation as listed in the above table. As the node's age goes from 2 weeks to 4 weeks, the odds are linearly slid from the odds shown above to the 1/3 odds. For example, exactly 3 weeks after it is posted, if 4*$NORM <= $REP then the odds are (1+1/3)/2 or a 2/3 chance of earning its author 1 XP each time it is up-voted. Also, as noted previously, the first up-vote on a node always earns its author 1 XP (and has a 1/3 chance of earning its author a 2nd XP).
2 If a node is more than 4 weeks old, then the author of the node will no longer lose any XP when it is down-voted. When a node turns 2 weeks old, the odds are based on the node's reputation as listed in the above table. As the node's age goes from 2 weeks to 4 weeks, the odds are linearly slid from the odds shown above to 0. For example, exactly 3 weeks after it is posted, a node with 3*$NORM == $REP has (1/4+0)/2 or 1/8 chance of losing its author 1 XP each time it is down-voted. Also, the first down-vote cast on a node never costs its author any XP.
If you cast down-votes infrequently, then each down-vote that you cast has a 1/4 chance of earning you 1 XP, just like casting an up-vote does. If all you ever do is down-vote, then each down-vote that you cast has a 1/3 chance of losing you 1 XP, just like the author you down-vote likely has 1/3 chance of losing 1 XP.
For each user, PerlMonks tracks a weighted average of the recent votes that they have cast. Each time you cast an up-vote, your weighted average, $vtavg, is set to 0.1 + 0.9*$vtavg. Each time you cast a down-vote, your weighted average is set to -0.1 + 0.9*$vtavg. So somebody who only ever up-votes will quickly have a $vtavg very close to +1 while somebody who only ever down-votes will quickly have a $vtavg very close to -1.
If your $vtavg is positive, then each down-vote has $vtavg/4 chance of gaining you 1 XP. If your $vtavg is negative, then each down-vote has $vtavg/3 chance of losing you 1 XP. No, you are not allowed to look up another monk's or even your own current $vtavg.
What does it mean when the XP nodelet says I have N dog-votes left?
For an overview of experience levels and the powers associated with them, see Levels of Monks.
These rules are at the discretion of the gods. Everything posted here is subject to change as the need arises.
Return to the PerlMonks FAQ