** This email gets kind of long, rambley, and a little bit technical.
Read as much of it as you like, and feel free to ignore the rest **
So, today I woke up and felt like writing a User Karma thing.
So, I did: http://gitorious.org/~cvollick/statusnet/cvollicks-clone/
commits/karma
It's intended to be for Spam Things.
The way it currently works is this:
When User A subscribes to User B, User B's Karma increases by 1/10th
of User A's (Assuming it's positive), by default.
When they unsubscribe again those points are by default removed.
The same when one of their notices gets faved.
When a user gets blocked their Karma goes down by 1/10th of User A's.
When a user gets blocked by a group it's 1/50th the blocking user's
karma.
I did this because I figured that people are more likely to be
blocked by a group for legitimate reasons that to be blocked by people.
This required adding some more Events.
Having added 4 or so of then in occasionally questionable ways, I
feel like there might be a better way.
I've capped Karma at -1000 and 1000.
This was so that popular people like Evan and BUGabundo don't end up
with, like, 1 500 000 000 karma.
Then, with a single fave one of you Titans would descend from Heaven
and give but a taste of your power to mortals who amuse you.
Or, I feel bad for the person who one of the Titans decides to block,
and completely destroys their account.
Anyway....
So, the "Karma" plugin is just infrastructure, it only maintains
Karma, but doesn't do anything with it.
So, I wrote "KarmaModerator" to demonstrate my vision for Karma.
KarmaModerator is a second plugin that emulates sandboxing a user
when their karma drops below 0 and emulates silencing a user when
their karma drops below -500.
At no point does it autodelete their account, but it would put them
out of commission until they can be dealt with.
I could have used normal silence and sandbox, but I didn't want to
interfere with the other methods of sandboxing and silencing.
That could have been the wrong thing to do, time (And Evan) will tell.
I tried to make a system that was not gameable.
As a result, there isn't really any boot strapping.
There is nothing that you should be able to do that generates Karma
out of nowhere. It's all currently dependent on existing karma.
This was so that newly created accounts aren't capable of wrecking
things.
In this system, I'll admit, if a spammer were ever able to get a
significant amount of power somehow, he could do some damage to the
lesser mortals.
It would take a concerted effort of might to bring down one of the
Titans, though.
With the 1000 cap, it would take 10 people all with 1000 points
blocking someone with 1000 points to even get them blacklisted.
Currently nothing costs.
It's possible that something like blocking requires spending Karma.
I decided against that for now.
Back to bootstrapping:
So, I'm planning on writing a script that takes the existing system
and generates a rough Karma for existing accounts based on a few
initial values.
For example, it's probably be like "Take the top 10 most popular
accounts and give them each max karma. Now, pretend that they all
just started following all the people they're following. Then pretend
that they all just started blocking everyone they've blocked. Pretend
they've all just faved all the things they've faved."
That'd probably generate some fairly fair scores off the bat, and the
system can take over from there with everyone else.
Also, there are currently ways to game the system kind.
Of course, two people could fave all of each other's notices in turn
gaining popularity slowly. (This is only possible once they have over
10 karma)
A lot of the gaming I've considered involves a chain of following and
unfollowing.
I considered writing another Plugin that would implement a history
for this, so once I follow someone my Karma will be snapshot and any
time I follow or unfollow them it will be that value.
This is to fix an issue I considered where I start an account and
follow someone, giving them 0/10, or 0 points.
Then I become popular, and then when I decide to unfollow them,
perhaps with no ill intentions, it reduces their karma by 1000/10, or
100.
Currently it's my feeling that only Moderators should be able to even
see Karma.
Other than that it's just a hidden value that most people don't even
really know about.
This makes it harder to game, because you can't see your progress.
Anyway, this is just the first iteration.
I mostly just wanted to write it, so I did.
There are probably far better ways of doing most of the things I did,
but it's always easier to augment then to create.
So, what do you think?
_______________________________________________
StatusNet-dev mailing list
[email protected]
http://lists.status.net/mailman/listinfo/statusnet-dev