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:
- Voting on others' writeups.
- You have 25% chance of gaining 1 XP every time you vote on a node. If, however, you cast more downvotes than upvotes, you can be penalized by losing XP, as detailed below.
- Visiting the site regularly.
- You have 25% chance of gaining 2 XP points once a day if you were logged in within the past 24 hours from when the vote fairy does the rounds.
- Spending all your votes.
- You gain +1/6 number of votes cast if all votes are cast on any given day. This bonus only exists while you are level 5 or lower.
- Others voting on your writeup.
- You gain 1 XP for each node you post that at least one person up-votes. You have a chance of gaining 1 XP each time somebody else up-votes one of your nodes. You have a chance of losing 1 XP each time somebody else down-votes one of your nodes. The exact odds are rather complicated and are explained below. Having a node deleted is bad for your XP.
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:
- This variable is calculated daily when votes are handed out. It is the average reputation of all of the nodes created within the past week. The current value of $NORM is
- The current reputation of the node being voted on.
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:
|Range||Odds of a Gain1||Odds of a Loss2|
|$REP < $NORM||1/3||1/3|
|$NORM <= $REP < 2*$NORM||1/2||1/3|
|2*$NORM <= $REP < 3*$NORM||2/3||1/3|
|3*$NORM <= $REP < 4*$NORM||3/4||1/4|
|4*$NORM <= $REP||1||0|
|4 weeks <= Age||1/3||0|
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.
For the philosophy of how experience is used, see The Role of XP in PerlMonks.
For a frequently asked question, see I just became a Novice; Why can't I vote yet?.
For historical information and rationales, see History now influences voting, One week left until potential XP loss for casting down-votes, and A Level Playing Field (on the event when more experience levels were introduced).
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