Help wanted in designing the Jungle Dragon KarmaEngine! »
FERDY CHRISTANT - OCT 5, 2008 (10:20:59 AM)
I could use your input in designing an important part of Jungle Dragon, being the KarmaEngine. Can you think along and see what makes sense?
For those of you unaware of this project, please have a look at the project page. Done? Thank you! Now, before I dive into my design struggle, allow me to explain shortly what the KarmaEngine is...
The KarmaEngine is a reward engine. Based upon the user's actions, and the value other users associate with your actions, you get rewarded karma points. Many actions in JungleDragon lead to karma points being rewarded to the user. It is the task of the KarmaEngine to calculate how much karma to reward based upon the event. Based upon the karma a user has, he is assigned a certain level (much like games like Diablo and World of Warcraft). The level of the user in turn determines the influence the user has in many events, such as voting on an image.
A very simple example is the event where the user joins the site. This one-time event is rewarded with a fixed amount of karma, let's say a 100 points.
Another example: After joining the site, the user uploads an image. At this time, the user has to pick a license for the image (copyrighted, attribution non-commercial, or public domain). Based upon the choice of the license, karma is rewarded. In this case, the more open the license, the more karma is rewarded.
One more example: User A votes on an image uploaded by user B. User B is rewarded karma credits, but not in a fixed amount. It depends on the influence of user A (his level) how much karma is rewarded to user B. In other words, if a top user votes on your image, you get more karma. Note that in this case karma is not only rewarded to user B, but also to his image. That's right: images can also have karma, which is used to determine how important it is.
Although the KarmaEngine is complex internally, conceptually it is simple: It is a black box that assigns karma points based upon an event and its associated parameters.
With this in mind, let's discuss karma a little more. The point of karma in Jungle Dragon is to encourage users to participate and to reward qualitative content. There's a few incentives for users to collect karma:
- It seperates them from inactive or less successful users
- It raises their influence in various actions, such as voting
- It gives them access to larger quotas and unlock power features
- It allows them to buy items
"It allows them to buy items". The idea is as follow: users can spend their karma credits on purchasing items from the store. These items are not physical goods, and the karma credits are virtual money only. The design decision I'm struggling with now, and for which I ask for your input, is as follow...
Let's say we're talking about a top user. Over the course of his actions, he has collected 100,000 karma points, which is associated with level 10 in the hierarchy. It is this level that gives him a large influence on the site, which is well deserved. Next, the top user purchases for 6,000 karma points of items, resulting in his karma being lowered to 4,000 points. This dramatically lowers his level, and thus his influence. In effect, the user is punished for buying items.
I kind of have a problem with the above scenario. I want to encourage users to collect karma, yet I do not want to punish them (so much) for spending it. Conceptually, my solution is to have two karma parameters:
- karma score: points rewarded to the user's actions, this determines the user's influence.
- karma credits: credits that the user can spend in the store, this determines the user's purchase power.
In this model, the credits a user has is somewhat decoupled from this karma score. Somewhat? Yes, because there is still a link:
- When a user is rewarded karma points, he also gets rewarded credits.
- When a user loses karma (for example when one of his images is voted down), it does not reduce his karma credits. Conceptually, this is like real money. Once you have it on your account (based upon good work), that amount will not be reduced, even when your next work is poor. This is much different from stock money, where value can go up and down all the time.
- When a user spends his karma credits, it only lowers their karma credits, and not their karma points, thus, the influence of the user remains intact.
I'm quite happy with the model described above. Actually, I kind of designed it while writing this! Still, I would like to ask for your opinion on this matter. In summary, the design questions are as follow:
- Should there be two karma parameters: one for points and one for credits?
- If not, how do you see the problem of users losing their influence upon buying items? Is it a problem at all?
- If so, should a user's credits be assigned according to the money model (positive contributions lead to a credit increase, negative contributions have no influence on the existing credit), or the stock model (both positive and negative contributions influence the existing credit)?



Comments: 6
COMMENT: MAX
OCT 6, 2008 - 06:09:03
what about keeping your first model (using karma points only) but adding the value of purchased item to calculate user's level? This way, buying stuff would be a kind of insurance that you won't loose to many level.
Regard, «
COMMENT: FERDY
OCT 6, 2008 - 07:38:18 AM
- this way, buying an item will have no influence on the total karma points, right?
- what if they lose karma, though? Suppose I have 1,000 karma points, of which 900 I have invested in items. What if my karma dropped from 1000 to below 900? Will my items be confiscated?
I have to say I'm enjoying these kind of discussions
«
COMMENT: MARTIN

OCT 6, 2008 - 09:34:23
Also the idea of rewarding people for their shopping is nice and the question is if you want them to shop a lot - if so, then just reward them more points for their shopping than they'll loose due it. «
COMMENT: FERDY
OCT 6, 2008 - 06:46:10 PM
Thanks for the feedback. Technically, people are not rewarded for shopping. They do lose some of their karma credits while shopping, much like you lose money from your bank account when you purchase something. So in essence, people can shop as much as their credit allows. However, in my proposal (by decoupling the credits from the points) users are not losing their karma points (only their credits). Thus, their karma (reputation) remains, no matter how much you shop.
I hope this clarifies it a bit. «
COMMENT: ALASTAIR GRANT
OCT 8, 2008 - 03:20:14 PM
I think decoupling is the best route. I would call them differently as well...
"Karma Score" and "Jungle Dollars" (aka Linden Dollar)
Karma is gained through participation and activity. Others can 'recommend' you and hence you get extra karma. Once you reach a certain level of Karma you receive some Jungle Dollars for free. Karma also is time dependent and expires on a rolling basis (say 1/12th each month)
Jungle Dollars can be bought with physical cash, which is used to support specific wildlife charitable causes for which the project acts as a conduit (i.e. its a charity) and in return also unlock sections and functionality.
Jungle Dollars do not expire. The users with the most karma get to vote on where the jungle dollars are spent (or even better those with the most karma get to go on a wildlife conservation trip funded by the jungle dollars!)
Cheers,
Alastair «
COMMENT: FERDY
OCT 8, 2008 - 04:44:09 PM
As for the expiration of karma, that will add a bit of complexity to the system, but I will consider it. As for coupling the Jungle Dollar with the real dollar, I really like the idea and I hope it will be a reality one day, but it does put a lot of financial responsibility on me. Remember that despite my ambition level, this is still a one-man project done in my free time with no investment money at all. We'll see how things go
«