Table of contents
This feature is a game to motivate people to participate in the community. Users are given points for things they do in the site, like writing an article, reading an article, starting a new topic in forum, voting a poll, etc. They also earn points by being popular, like having his/her blogs and articles read and commented. Then the users will be able to see their position in a ranking.
In tiki 1.8 there's a Karma system, as described in KarmaDoc. In the karma system, users are given points according to other user's rating on their contents, and the more karma you have, more karma people rated by you will gain. The idea of this karma is to be a reliable measure of someone's popularity, by community itself. The current Karma system has a conceptual problem: if user A has a karma of 1, user B has a karma of 5 and A gives rating 5 to B, B will be given rating 1 (because of A's karma) and so B will have karma lowered. This happens because user's vote weight and his points are the same field, it will be solved in this new system by separating in two fields.
If you earn point's by reading an article, writing a message, creating a wiki page, joining a chat, etc, this can still be cool, but it's a quantitative measure, not by community but by a computer. We can moderate giving points on actions like posting an article or editing a wiki page for avoiding spam and have more reliability on these points, but it will still be quantitative.
So, there are two different systems for ranking users, I'll call them Karma and Score:
Key Function and sub-features
This describes current implementation of Score system, that's on latest main CVS but not integrated to site. The karma system is implemented in commentslib since v1.8 and an implementation that merges both is in course.
The field 'score' was created in users_users with user's total score, so that it will be fast to rank users.
The table users_score will be created, with following fields:
- score - the score earned by this event
Every time the user makes some scoring action, the event will be given a unique id (for example, read_article_10 if he's reading article with id 10). If there is no event for this user with same event id, or if the event has expired, this new event will be logged and the user's score will be updated. Old events (with age configurable) are erased for performance.
Check /lib/score/scorelib.php on latest v1.9 CVS. It's not being included, I've put there just for having comments on it. The lib works with tables exactly as above. I have an idea of including classifying events in Subjective/Objective, as for easily setting up a Karma only system.
KarmaDoc is the old Karma idea.
The Karma system is the karma system. It's more reliable for, well, measure user's karma in a community. It's really fun! It motivates people to care about community by contributing for it to get better.
Is everything scored now? Forum posting doesn't seem to yield points. How do we put more hooks in place for scoring? Where's the page for weighting scores?