http://www.perlmonks.org?node_id=323121


in reply to Possible changes to Voting/XP

Do "first up-vote" and "first down-vote" mean that literally? update: yes. Or do they mean transitioning from rep 0 to 1 or -1, whether or not there have been previous up/down votes? Or do they mean "first time entering a reputation range > 0 or < 0"?

Update: thanks for clarifying, tye. I was indeed reluctant to assume more than reputation was stored, since I saw nothing else needed under the current system.

I'm glad to see such minimal changes; the system seems to produce good results, and it's far better to change too little than too much.

Replies are listed 'Best First'.
Re^2: Possible changes to Voting/XP (plain)
by tye (Sage) on Jan 22, 2004 at 09:08 UTC

    Strangely enough, yes, I used "first up-vote" when I meant the "first" "up-vote". I'll try to be less literal if it will be clearer to you. ;)

    I don't see how your other interpretations make much sense as ways to do things, though. It sounds like you were trying to guess at the implementation and reluctant to consider that it might be easy to distinguish the first X-vote.

    The current system already tracks first up-vote by having a separate field for 'post bonus given yet?'. Since then we started tracking total number of votes cast for each node, which can be used to detect both 'first' votes even without that other field.

                    - tye
      Thanks for putting in all the work on this, tye.

      Are the ++ and -- votes simply summed as the votes come in or is there a "voting history log" kept? Alternately, are the up and down votes tracked as separate values? (eg $rep = $upvote - $downvote)

      -Theo-
      (so many nodes and so little time ... )

        Yes and yes. No. That is...

        We have to track every single vote otherwise there would be no way for the system to work the way it does (preventing you from voting on the same node twice, etc.). Each vote record must record who voted and what node was voted on. They also record how you voted (++ or --) and when. After a long run of amazing abuses of the voting system, we added the node author (the "votee") to these records and added a couple of indices. Now it is somewhat fast and easy to review how someone has been voting or what votes have recently been received by someone (or to summarize information such as what percentage of recent votes were downvotes or what percentage of recent downvotes were cast by the top N down-voters, etc.). We had to do this to get the abuses under control. I still do this occasionally when I see complaints, in part to try to figure out how to improve things.

        Each node has a 'reputation' that is the sum of ++ votes minus the sum of -- votes and a 'votescast' that is the sum of all votes. From these two values it is easy to compute the number of just ++ votes and the number of just -- votes.

        rep = up - down; cast = up + down up = rep + down; down = cast - up up = rep + cast - up; down = cast - rep - down 2*up = rep + cast; 2*down = cast - rep up = ( rep + cast ) / 2; down = ( cast - rep ) / 2

        - tye