New Karma module - any comments? Shall I release it?

Events happening in the community are now at Drupal community events on www.drupal.org.
mercmobily's picture

Hello,

I've just created a new karma module.
I am not entirely sure other people would be interested in it. It's well code, well commented, and it's about to be tested on a production server (http://www.freesoftwaremagazine.com).

Now... here is a (probably not comprehensive) list of features:

  • Javascript voting; however, the module works 1000% even if the
    user doesn't have Javascript

  • Abuse control. The module allows you to limit users on how many karma points
    they cna give, to a particular user or in general. The admin can also decide
    on how many different comments a user can vote on

  • Publishing the best comment in a special spot, ONLY for nodes associated
    to selected (configurable) terms. This allows certain forums (for
    example) to have this feature, and create a "Ask Jeeves"-like
    web sites

  • Automatic assignment of roles depending on the karma range. This means
    that you can make some users more powerful according to the
    karma they have. It's DEADLY CRUCIAL that you create roles SPECIFICALLY
    for this module. This module will turn the set roles on and off, with
    no mercy. Roles are assigned when a user signs up, which means that
    you can assign a "default role" to a user.

  • Automatic assignment of userpoints based on a custom formula when
    karma is assigned. The Karma module will take/give userpoints according
    to the karma received/taken away. This is handy if you allow people to
    "spend" their user points, for example.

  • Bonus karma-voting owers to people with specific permissions. The module
    sets a number of specific permissions. When a user has them (because
    they are associated to a role, for example), then the user can give/take
    more karma on each vote.

  • Ability to bury comments below a certain karma. The administrator
    can set a threshold under which a comment is marked as buried. The
    comment will still show up, but users won't be able to vote for it
    nor see its contents.

  • Ability for the karma administrator to see all of the buried
    comments and vote on them (users can't vote for buried comments). This
    way, the administrator could un-bury them, or use this as
    anti-abuse mechanism.

  • No HTML anywhere in the module. Everything is configurable from the
    admin interface

  • Ability to put the karma form in the link section of the comment
    or anywhere in the comment template (by hand)

  • Ability to see users by karma, and (for the karma administrator) the

  • ability to see who got karma when

  • Karma points expire in N days (where N is configurable). NOTE:
    points expire only as far as users are concerned. All of the
    queries consider ALL of the karma votes for comments. This makes sense:
    a user's karma will tend to 0 as time passes, whereas a comment's
    karma will stay forever

It doesn't use the voting API. However, it "interfaces" with it, meaning that when people get karma points, the module might invoke the userpoint API to give that user some userpoints.
(And yes, it works totally fine even if a vote is re-cast, since it checks the txn history if a vote is re-cast, please check the code)

You can get the module from here:

http://www.freesoftwaremagazine.com/sk.tgz

Please NOTE: don't enable the userpoint abilities just yet, since it needs a version of userpoints that is not available just yet (the author of userpoints, Khalid Baheyeldin, has the patch as is reviewing it, see my patch here: http://drupal.org/node/142956. The patch fixes an issue where the trail is not updated if no moderation is required, and the trail is ALWAYS NECESSARY to simple_karma in case a person re-votes ).

The obvious question first: why didn't I use the voting API to keep track of the karma? Basically, because karma and userpoints are two different things. They work in different ways, and it would be bad to confuse them. The main difference in terms of tables (that is, the real showstopper technically) is that karma has a 'giver' and a 'receiver', and they are both very important. If you are not convinced, have a look at the module's code (which is very easy to read and follow, BTW).

Why am I writing here?

I was just wondering if you guys thought I should release it to drupal.org (I have CVS access to the contrib repository) and if you had any comments, really. I really only have time for bug fixing, but any extra ideas will definitely be added to a nice "ideas.txt" file for the next release!

One note: the recalculation hasn't been tested yet. So please beware and backup your DB before trying this module.

Bye!

Merc.

Comments

It seems there is interest

christefano's picture

It seems there is interest for this over at http://drupal.org/node/144363

Did I get you guys in a quite moment...?

mercmobily's picture

Hi,

Does anybody hang out around here? :-D
Just wondering... I hope it's not because my module is completely uninteresting!

Bye,

Merc.

It is most definitely

christefano's picture

It is most definitely interesting. I look forward to trying Simple Karma a in a future project! Thank you for contributing it.

OK!

mercmobily's picture

Hi,

OK thanks!

Merc.

thanks for you module

federico@drupal.org's picture

Hi mercmobily, I've just implemented your Simple Karma module on my site. I was looking for such a module and your's perfectly suites my needs. It's great because users get karma not by posting quantity but for quality. It can be easily integrated with User Badges module.

Thanks a lot for you module!

Federico
www.zonaeconomica.com

(Just a minor issue: it crashes css when using drupal 5 css aggregation and compression)

No worries!

mercmobily's picture

Hi,

I didn't even know that the badges module existed!
That's very cool.

I am actually re-developing the module as we speak. Amongs other things:

  • Up/down voting. This is important for a drupligg module I am developimg
  • Caching of karma. Believe it or not, it was in my original todo list and got "forgotten"

I also don't really like the way users have to decide manually how much karma decides which roles are assigned. I am after somebody with maths experience to help me out...

ANyway, stay tuned!

Merc.

where to publish modules

greggles's picture

Perhaps I missed it and you've already done this, but you'll get a lot more visibility and users of your module if you publish it on drupal.org proper. See http://drupal.org/contribute/development for more details on how to go about that.

--
Knaddisons Denver Life | mmm Chipotle Log | The Big Spanish Tour

i'm interested

moshe weitzman's picture

i want a good karma module too. i want it in association with organic groups. each group is like yahoo group mailing list and i want karma for each member. then a threshhold whereby you don't get emailed (or see on web) posts by low rated members. because you have to authenticate on web for any post, we know exactly who authored any post. a regular email list can't say that because of forged From header.

More info?

mercmobily's picture

Hi Moshe,

The module is under VERY active development.
Can you send me more information about this feature request?

Merc.

Looking into this...

mercmobily's picture

Hi,

OK, looking into this one...
The simple_karma module already does some of this - although, not quite.
Right now, a comment will get buried if it receives enough bad karma from people (you decide the threshold). I am not sure about the email part, to be honest.

It's very easy form e to change the module so that it doesn't show at all comments by people with karma < X. But then, who ever gets to see these comments? (The simple_karma module, right now, allows the admin to see the buried comments in buried order, just in case something got buried for the wrong reasons).

Moshe, please also note that to keep the module sane, and not to overlap sillily with existing notevote modules, simple_karma only works on comments, NOT nodes.

Bye,

Merc.

FYI: Another Karma module

augustin's picture

I think that the module in question has been released by now: http://drupal.org/project/simple_karma

For your information, here is the home page for karma.module, another karma module: http://drupal.org/node/66596.
Unlike simple_karma, karma.module does not seem to be actively maintained and is much more limited in scope.

Maybe the two modules could be merged at some time?

--
www.reuniting.info
Healing with Sexual Relationships.
www.wechange.org
We live in a world of solutions.

.

--
www.reuniting.info
Healing with Sexual Relationships.
www.wechange.org
We live in a world of solutions.

Merging would be impossible...

mercmobily's picture

Hi,

Merging would be impossible, because the modules are too different in scope - sorry...
However, please feel free to send me feature requests and I will do my best!

Bye,

Merc.

Error

rhg108@drupal.org's picture

Hi. I was excited to see this module. I installed it and am getting this error on the admin page:

warning: Invalid argument supplied for foreach() in /includes/form.inc on line 945.

Do you have any idea what this is?

Thanks,
Rachael

Known bug...

mercmobily's picture

Hi,

It's a known bug if you have no forums created.
It's actually harmless... and yes, it will be fixed in the next version of the module.

In the future, please use the module's bug tracking system!

Thanks,

Merc.

I'm very excited about this new module.

Paul Gaskin's picture

I've been wanting to have this functionality for a user-moderated forum for years now.

The install profile which fascinates me most is this:

Voting API
CRE (Content Recommendation Engine with the Slope One Algorithm)
User Points
Organic Groups
Up/Down Voting

Those modules and the ones which are required by these make the most volatile environment.

Now that this Karma module has been created, I'm even more excited.

The question in my mind is this: should the Karma module be a separate module from user-points, or should these new levels of functionality be integrated into User Points?

Anyway, I'm obsessed with this install profile so I can emulate the functionality of the most successful group blogs using free software.

I also hope all these modules which I consider crucially important to be quickly updated for Drupal 6 which is fast approaching.

I'm guessing Drupal 6 will be even more scalable than Drupal 5.

All I care about is the highest possible level of interactivity between users combined with scalability for the most possible concurrent users.

This free software can create a volatile, group-psychology environment which can turn the group-blogging world upside down!

This is like the Manhattan Project.

Paul

Userpoints

mercmobily's picture

Hi,

Karma interacts with Userpoints, meaning that it can give/take userpoints according to the karma you've received. However, the concept of karma and the concept of points are completely different and somehow unrelated...

Let me know what you thing about my module!

Bye,

Merc.

I can't wait to try this module out.

Paul Gaskin's picture

Merc,

It's been a while since I've installed all the modules in question. I would love to get my installation working smoothly and with your karma module. I'm hyped. I just need to find the time to take another stab at this install profile.

Thanks,

Paul

Voting Systems

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: