Propuesta para evitar el karmawhoring
by Dídac el 15.nov, 2007, desat a General
actualización: parece ser que lo propuesto ya se hace
Vaya por delante que estoy de acuerdo con el sistema de karma, y con que las personas más activas en meneame, tengan más peso que las que no participan tanto, etc… Esto no es un post para criticar el sistema de karma y decir que es injusto, que no es democrático, llorar un poco y que al final se descubra que el problema es que la gente votó negativa las noticias que yo envié (que curiosamente la mayoría eran de un blog con publicidad que prometo que no es el mio). No, este no es el caso.
Los que llevais un tiempo en meneame, sabreis de lo que hablo cuando nombre el “efecto bola de nieve”. Como todos sabemos, una noticia muy votada justo desde el principio tiene muchas posibilidades de ir a portada, por lo que (si no es demasiado polémica) se la vota automáticamente porque así, cuando llegue a portada, nos subirá el karma. En cambio, si una noticia vemos que tiene muy pocos votos, a menos que realmente nos parezca apasionante y queramos remarcarla, no la votaremos. Obviamente, no todo el mundo actua así, y hay excepciones, pero esta manera de actuar es algo bastante común, y que estoy seguro que todos hemos hecho alguna vez.
La propuesta consiste en que no se de el mismo karma a todo el mundo cuando una noticia llegue a portada, sino que se de karma a los que han votado con más diferencia en el tiempo. Me explico, si una noticia llega a portada, a la hora de dar karma, si Juan ha votado en un momento que solo 3 personas habían votado en el minuto anterior, se le de más karma que a Pepe, que la ha votado cuando en el minuto anterior la habían votado 13 personas. Es decir, se premia la personalidad, y no el seguir el efecto bola de nieve. Nota: He elegido un minuto para que se entienda, pero el algoritmo podría ser más elaborado.
Una pregunta podría ser: Porque no hacerlo más fácil y dar más karma a los que votan primero, y menos a los que votan después? Porque entonces si alguien está revisando noticias antiguas y encuentra alguna interesante y la vota, saldría muy penalizado. En cambio de esta manera, puede premiarse el esfuerzo de revisar noticias que ya casi nadie vota.
Además de está manera, el algoritmo es más dificil de predecir, porque realmente se hace más dificil saber si una noticia acaba de ser muy votada o hace tiempo que no la vota nadie (para controlarlo se tendría que llegar a niveles de adicción a meneame peligrosos…). Un algoritmo menos predecible aporta menos posibilidad de karmawhoring y provoca que a la gente le salga más a cuenta votar lo que le apetezca que con el sistema actual.
Es decir y resumiendo, si tu votas una noticia que está siendo muy votada en ese momento, cuando llegue a portada (si llega) se te dará poco karma. Si has votado esa noticia cuando acaba de salir o cuando hace tiempo que la gente no la vota, se te asignará más karma, si llegua a portada. Es decir, se premia la personalidad y originalidad.
Seguro que la gente le encuentra pegas, pero una bastante obvia que se me ocurre a mi, es que este algoritmo quizás pueda cargar más el servidor, porque tiene que memorizar el momento en que cada uno vota y luego calcular en consecuencia. No creo que sea un impedimento tecnico insalvable pero seguro que es algo que se tendría que mirar.
Artículo original de hugolp
2 Comments for this entry
1 Trackback or Pingback for this entry
-
meneame.net
novembre 15th, 2007 on 23:08Propuesta para evitar el karmawhoring
Vaya por delante que estoy de acuerdo con el sistema de karma, y con que las personas más activas en meneame, tengan más peso que las que no participan tanto, etc… Esto no es un post para criticar el sistema de karma y decir que es injusto, que no …









novembre 15th, 2007 on 23:23
Así se hace desde bastante tiempo atrás. Lo puedes ver en el SVN
La consulta donde se hace ese cálculo es:
$user_votes = $db->get_row(“SELECT SQL_NO_CACHE count(*) as count, $sql_points_calc FROM votes,links WHERE vote_type=’links’ and vote_user_id = $user->id and vote_date > $history_from and vote_value > 0 AND link_id = vote_link_id AND link_status = ‘published’ and vote_date < $sql_points_date_ignored and link_author != $user->id”);
La clave está en $sql_points_calc:
$sql_points_calc = ’sum((unix_timestamp(link_published_date) – unix_timestamp(vote_date))/(unix_timestamp(link_published_date) – unix_timestamp(link_date))) as points’;
Eso hace exactamente lo que propones.
Además tiene otros controles anto “karmawhores”, en el mismo fichero puedes ver:
// Bot and karmawhoring warning!!!
if ($karma2 > 0 && $published_links > 6 && $published_given > $published_links/3 && $published_average < 0.5 &&
($published_given > $nopublished_given * 5 || ($published_given > $nopublished_given * 2 && $total_comments == 0 && $sent_links == 0) )) {
$punishment = -(0.5 – $published_average)/0.5 * 5;
printf (“%07d “, $user->id);
print “$user->username bot or karmawhore suspected, karma2 = $karma2 -> $punishment\n”;
$karma2 = $punishment;
}
novembre 15th, 2007 on 23:27
El post no es mio, es de un compañero que me ha pedido que lo publicara, si dejais comentarios al respecto supongo que ya lo leera, saludos !