Here’s an example functional form which is the best guess from the top of my head at creating this effect (but I’m giving as an illustration of what to pay attention to rather than a claim that this precisely should be used):
K = (U − 3D) * P^0.3 / R
Where K = Karma U = total (weighted) upvotes D = total (weighted) downvotes P = total number of posts+comments R = total number of reads of your posts+comments
I also agree with the spirit of this, but I think dividing upvotes by the number of reads penalizes reads excessively, because each reader doesn’t decide how to vote independently. Once a post already has a high score, a new reader is not likely to upvote it more even if they think it’s high quality. Also we ought to encourage people to create highly popular articles that spread our ideas beyond the local community, and this system would serve to discourage that. On the other hand we also don’t want to penalize people for writing specialized content that only a few others might read. I’m not sure what the right solution is here.
I agree with the spirit of this. That said, if the goal is to calculate a Karma score which fails to be fooled by a user posting a large amount of low quality content, it might be better to do something roughly: sum((P*x if x < 0 else max(0, x-T)) for x in post_and_comment_scores). Only comments that hit a certain bar should count at all. Here P is the penalty multiplier for creating bad content, and T is the threshold a comment score needs to meet to begin counting as good content. Of course, I also agree that it’s probably worth weighting upvotes and downvotes separately and normalizing by reads to calculate these per-(comment or post) scores.
Here’s an example functional form which is the best guess from the top of my head at creating this effect (but I’m giving as an illustration of what to pay attention to rather than a claim that this precisely should be used):
K = (U − 3D) * P^0.3 / R
Where
K = Karma
U = total (weighted) upvotes
D = total (weighted) downvotes
P = total number of posts+comments
R = total number of reads of your posts+comments
I also agree with the spirit of this, but I think dividing upvotes by the number of reads penalizes reads excessively, because each reader doesn’t decide how to vote independently. Once a post already has a high score, a new reader is not likely to upvote it more even if they think it’s high quality. Also we ought to encourage people to create highly popular articles that spread our ideas beyond the local community, and this system would serve to discourage that. On the other hand we also don’t want to penalize people for writing specialized content that only a few others might read. I’m not sure what the right solution is here.
I agree with the spirit of this. That said, if the goal is to calculate a Karma score which fails to be fooled by a user posting a large amount of low quality content, it might be better to do something roughly: sum((P*x if x < 0 else max(0, x-T)) for x in post_and_comment_scores). Only comments that hit a certain bar should count at all. Here P is the penalty multiplier for creating bad content, and T is the threshold a comment score needs to meet to begin counting as good content. Of course, I also agree that it’s probably worth weighting upvotes and downvotes separately and normalizing by reads to calculate these per-(comment or post) scores.
I was just writing a very similar function in one of the comments above!
I think something in this direction makes sense.