Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Giving users a "reputation system" - Should I...?

I'm thinking of adding a reputation system to my Django web application; the site is already being used so I'm trying to be careful about my choices.

Reputation is generated in all actions that contribute to the site, similar to Stackoverflow's system.

I know there are literally millions of ways of implementing this, and this is why I feel quite lost.

Two alternatives I am not sure about are:

  • Keep track of reasons why reputation was incremented
  • Ignore reasons in order to reduce complexity of the site and overhead

Would be happy with a few pointers, and directions. Would be very much appreciated!

like image 817
RadiantHex Avatar asked Mar 16 '10 21:03

RadiantHex


2 Answers

In Django, I'd suggest having a property on the User (or Profile) model that calculates a user's reputation on-demand. Then, cache the reputation with your caching framework and/or store to the database for fast retrieval.

This way, in addition to having the records of what impacts reputation, you can change your reputation criteria at will.

like image 188
Daniel Naab Avatar answered Sep 22 '22 09:09

Daniel Naab


keep track of the reasons, IMHO. It surely wouldn't be that complex, and you don't need to store a huge amount of information, just a datetime, point value, command, target, and originator. If the data gets to be too much after some time dump the DB to a backup medium and clear the history.

like image 38
Segfault Avatar answered Sep 19 '22 09:09

Segfault