Los últimos días el amigo Krusher hizo un «estudio de campo» y lo cuenta en su blog (parte 1 y parte 2). Antes que lo escribe me comentó brevemente que había hecho ese «experimento» y le prometí que si lo contaba en su blog le contestaría. Lo prometido es deuda.

Antes de responder a los puntos que creo son los más interesantes deseo remover (:-)) algunos mitos que hay por allí.

1. «El sistema de Digg es una persona un voto». Es falso, Digg tiene métodos complejos para promover las noticias: origen de la noticia, historial de cada usuario, niveles de tráfico de cada categoría, reportes de usuarios, etc. Así que aunque no lo digan explícitamente tienen un sistema de «karma», no es una persona un voto. Además sus métodos y algoritmos son «secretos», a diferencia del menéame donde es todo absolutamente público (de hecho si ocultásemos la visualización del karma en el menéame obtienes un «digg», la diferencia fundamental es que en uno se oculta información, en otro no).

2. «Una persona un voto». Eso es posible en sistemas donde se puede asegurar con total seguridad la identidad de una persona, o como mínimo que cada una de ellas tenga una –y sólo una– clave única que sirve para saber quién ha votado y quién no. En sistemas como Digg o Menéame eso es totalmente imposible, cualquier persona puede registrarse más de una vez, tener varias cuentas de correo, reiniciar sus routers para cambiar la dirección IP o directamente usar proxies anónimos. En este sentido Menéame ha sido más estricto que Digg desde el principio (no sé cómo está ahora), además de usuario controla la dirección IP (además en las «democracias formales» tampoco existe una persona un voto, los votos de uno de Formentera tienen mucho más «karma» que uno de Madrid.. o de Mallorca, aquí en Mallorca lo sabemos muy bien, aunque tiene otros nombre, «federalismo», «regionalismo», incluso el mismo Sistema D’Hondt 🙂 )

3. «Un sistema de karma –o de meritocracia– no es democrático». También es falso, las sociedades democráticas se basan en el reconocimiento de las diferencias. Si yo clavo un cuchillo a una persona voy a la cárcel, si lo hace un cirujano cobra un buen dinerillo. Como profesor de universidad gano un dinerillo y tengo X días de vacaciones, un comandante de avión gana mucho más y tiene muchas más vacaciones, etc. Si yo digo que el cáncer tendrá cura en 6 meses me toman por loco, si lo dice un premio Nóbel sale en todos los noticieros. Lo que pasa es que en sistemas sociales establecidos tienen otros nombres: reputación, profesión, acreditación, experiencia profesional, curriculum vitæ…

4. «El sistema de karma favorece a los karmawhores«. Seguramente hay intentos y tendencias, pero los karmawhores están fuertemente penalizados por el algoritmo de cálculo. Estos problemas de karmawhorismo también se dan en la vida real, por ejemplo los «trepas» o la «titulitis» 🙂

5. Ningún sistema social es perfecto. Ningún sistema de «leyes» que intenta regular y hacer que ese sistema social sea «justo» es perfecto. Por lo tanto el «sistema social» del menéame tampoco puede ser perfecto y los algoritmos que regulan su funcionamiento –que en nuestro caso son además tan públicos como las leyes de países democráticos– tampoco lo son.

6. Un sistema como el menéame no tiene porqué cumplir ninguna de las condiciones anteriores, es como es, con sus ventajas y problemas. Como tampoco el Monopoly tiene que usar el Mibor ni tener la misma especulación inmobiliaria que la realidad española 🙂

¿Por qué el karma?

En primer lugar el tema «ideológico», no creo en el sistema de «una persona un voto».

No me cabe en la cabeza que el voto de una persona muy activa en el menéame pueda tener el mismo valor que uno que acaba de registrarse. El problema está en cómo hacerlo de tal forma que los errores e «injusticias» al menos sean razonables y lo menos molestas posibles.

Pero es que desde el momento que decidimos permitir el voto anónimo nos vimos obligados a poner un sistema de ponderación de al menos dos niveles: anónimos y usuarios registrados.

El voto anónimo introdujo otro problema. Aunque con los usuarios autentificados ya es posible «engañar» con usuarios e IPs diferentes, con los votos anónimos el problema es significativamente mayor. Así que había que poner métodos automáticos para detectar y «castigar» a los «spams de votos». La solución más sencilla y obvia es dar un puntaje mayor a uno a cada voto y en caso de detectarse «votos spams» disminuir el valor de ese voto a la hora de promover una noticia a la página principal.

Así que de entrada ya tenemos tres niveles diferentes de votos, ergo, ya hay un «karma», o como se quiera llamar.

Pero analizando más en profundidad el problema también existe el mismo problema de «spams de votos» en usuarios registrados.

La mayoría de las personas mantendrán sólo un usuario y lo usarán siempre para sus envíos y votos, pero habrá una minoría que podría tener varios usuarios –en menéame contamos hasta 8 64, en Digg dicen que había personas con más de 20 usuarios diferentes–. Así que usando la misma lógica, habría que «penalizar» a ese tipo de abuso de votos, la forma más simple y lógica es que se mida la acción de los usuarios por la cantidad de votos. Así, si una persona tiene muchos usuarios no podrá votar de forma «tan sencilla» (sin recurrir a sistemas como Tor, con la lentitud que tiene) a todas las noticias con los diferentes usuarios gracias al control de direcciones IP. Lo lógico entonces es que los que más voten tengan más karma para diferenciarlos de los usuarios más activos.

Con esto ya tenemos al menos cuatro niveles diferentes de «karma». Es obvio que si se aplica este sistema es «más justo» que tenga un rango de valores y no solamente cuatro valores.

Aparecen otros problemas adicionales

¿Qué se puede hacer contra las personas que votan «a lo loco» –con fines de promover o perjudicar algunas noticias– o que directamente pueden usar «bots»? Para esto en cada voto –anónimo o de usuarios– se analiza la frecuencia de votos, si supera un cierto valor se muestra el «tranquilo cowboy». ¿Qué hacer en estos casos? ¿Banear al usuario? ¿Eliminar todos sus votos? ¿Banear la direcciones IP que usó? Creo que es casi obvio que lo más fácil y menos «intrusivo» de todos es el de bajarle un poco su karma. Además si sigue insistiendo –por ejemplo– con votos negativos ya no podrá hacerlo nuevamente por unas cuantas horas.

Otro más, ¿qué hacer con los que dedican a enviar cientos de comentarios con «spam» o textos sin sentido? ¿lo baneamos? ¿borramos los comentarios?… lo mismo, se le baja el karma (si sigue insistiendo no podrá seguir comentando).

Esas modificaciones en «tiempo real» del karma además afectan al karma de las noticias que haya votado el usuario. Cuando las noticias entran a la lista del «promote» el valor de karma de cada una de esas candidatas es recalculado para que sea la suma exacta del karma actual de cada uno de sus votantes.

Lo anterior creo que explica más o menos los fundamentos de tener un karma: es un sistema básico de protección «anti abusos» que evita tener que tomar medidas más «drásticas», además hace posible el voto anónimo.

Por otro lado, para el cálculo del karma también se toman medidas contra los karmawhores como expliqué anteriormente, y lo más positivo del tema es que el karma que obtiene cada usuario por sus votos es mayor cuando más pronto haya votado a una noticia antes de ver cómo evolucionan sus votos: se usa una función temporal decreciente. Así uno que vota apenas se envió una noticia que luego sale publicada obtiene el máximo de beneficio, uno que lo hace 15 minutos antes ya no obtiene ninguna bonificación.

Dicho eso, seguramente se producen «errores» –o quizás mejor dicho «injusticias»– y seguro que es mejorable. Pero creo que por ahora es una forma bastante razonable de evitar abusos y además de hacerlo de una forma totalmente pública: tanto el algoritmo como las cuentas que éste hace está publicados en «tiempo real», no necesitamos tener «algoritmos secretos», ni justificar que deban ser secretos «para asegurar que no lo engañen» (no soy un experto en seguridad, pero estoy convencido que esa justificación de «seguridad por oscuridad» es una auténtica gilipollez y justificación de alguien que no se ha tomado el tiempo en pensar una buena solución, o que le conviene esconder algo para su propio beneficio).

Respuestas

En principio el Karma sirve para lo descrito anteriormente, sin embargo, no tiene utilidad final.

Como expliqué antes el karma sí que tiene un valor bastante importante que va más allá del karma de los usuarios individuales.

Salvo que alcances 17 puntos de karma (algo bastante jodido) no existen privilegios por tener un karma más alto. Entonces, ¿por qué preocuparse por mantenerlo?

Sí, a nivel individual no tiene demasiado, por eso no tiene mucho sentido el karmawhorismo porque la influencia que pueden tener una pocas personas es cada vez menor. Pero a nivel global y de medias, sí que influye bastante. En términos físicos se podría explicar con masas e inercias.

Una vez formada la «cultura» de la comunidad es difícil cambiarla de un día para otro. Esto tiene problemas, pero también ventajas. Por ejemplo, evita que de un día para otro se convierta en un panfleto de intereses políticos (como lo han intentado de forma organizada, y es un tema de discusión de cada día), o de noticias sin sentido, etc.
Si el sistema no tuviese esa «inercia» podría ser manipulado de forma bastante sencilla. Bastaría que un conjunto pequeño de personas se pusiesen de acuerdo para registrarse, enviar las noticias que les interesan y votarlas a todas, seguramente saldrían publicadas si eligen el momento adecuado.

Con el karma actual les daría bastante más trabajo, durante al menos unos pocos días cada uno de ellos debería participar y votar para elevar su karma. Afortunadamente este tipo de personajes no tienen esa paciencia ni les gusta tomarse tanto trabajo para «spamear» (demostrado matemáticamente, el volumen de spam en un sistema es inversamente proporcional a la «resistencia» o «coste de transmisión» en ese sistema).

Pero no pasa nada: Al día siguiente me pongo a votar todas las noticias que tienen pinta de salir en portada. El caso es que en 5 días vuelvo a tener 12 de karma.

Esto está hecho a posta para permitir que un usuario nuevo pueda rápidamente subir su karma si participa mucho. Para el cálculo del karma se usa una media ponderada dependiendo de si el nuevo karma es mayor o menor al karma anterior del usuario. Si se analiza el código se verán las siguientes líneas:

if ($user->karma > $karma) {
	// Decrease slowly
	$user->karma = 0.9*$user->karma + 0.1*$karma;
	echo ...;
} else {
	// Increase faster
	$user->karma = 0.8*$user->karma + 0.2*$karma;
	echo ...;
}

El karma crece mucho más rápido de lo que decrece. Se podría haber puesto de otra forma, pero preferimos que sea así, que un usuario que participa activamente vea crecer su karma rápidamente. Es más motivador, y menos «injusto» si cabe.

Entonces, ¿para qué sirven los votos negativos? Se supone que para quitar Karma, pero por lo visto es contraproducente, por que es más fácil ganar karma cuando se tiene poco… Luego, los votos negativos parecen ser un problema derivado del karma.

Las razones del voto negativo son diferentes. Está explicado en Votos negativos y “spams”.

Entonces llego a la conclusión de que el Karma no es útil, por que no tiene utilidad real, mide algo que no llega a servir para nada.

Lo dicho, contando como voto individual no, pero visto en global sí que lo tiene. Quizás habría otro método mejor, pero no está probado, y los «diferentes» como Digg al fin y al cabo son lo mismo –además con el problema que parece lo deben mantener en secreto para que «funcione»–.

Entonces, ¿lo dejamos o lo quitamos? Pues yo votaría por quitarlos,

Y habría que pensar cómo gestionar los abusos, spams, votos anónimos, etc.

por que está demostrado que genera un gran problema de fondo: el karma-whorismo. Es decir, prostituir la opinión de uno en pos del karma.

Como expliqué anteriormente, este tipo de comportamiento está fuertemente penalizado. Quizás haya que mejorarlo si se detectan casos que se salten el control. Pero hay varios bots de terceros que están programados para buscar karma y por lo visto hasta ahora no tienen demasiado éxito. Por ejemplo el usuario superkarma.

Si se detecta algún otro que obtiene mejores resultados estaría bien que aviséis (si queréis) para analizar como contrarrestarlo.

Esto hace que el Karma suba como la espuma, pero tiende a medio plazo a dañar el sistema por que tiende a crearse un clima de monos en una jaula: el último mono en llegar es al que más caña dan.

Lo que «suba como la espuma» está explicado más arriba. Lo de dar «caña» no creo que tenga nada que ver con el karma, sino con la propia naturaleza humana, tanto de los «viejos» como de los «nuevos» (esos que reaccionan mal, por eso algunos usuarios del Menéame –Hass y otros– empezaron a escribir una guía corta para principiantes).

La norma general será que las noticias que siempre han salido a portada, lo sigan haciendo: Versiones de Firefox, productos de Apple, etc.

Lo de Apple no lo es tanto, pero sí, en general hay temáticas parecidas. Pero eso pasa en todos sitios, tanto si es la comunidad o un grupo pequeño de editores los que eligen las noticias. De hecho creo que es aún peor en el segundo caso.

Alguien que envíe masivamente noticias o que menee todas las que están a punto de salir puede con un poco de suerte pasar por un valioso usuario pero al mismo tiempo

Este tema ya expliqué con lo de la función temporal decreciente y la detección de «bots» y karmawhores. Los votos de noticias a punto de salir no cuentan para nada (o casi nada si hay más de 15 minutos de diferencia).

Aún así, cuestiono el hecho de que se le de más voto a los usuarios más valiosos: Primero por que no es equitativo (un voto, una persona) y segundo por que no es de necesidad lógica

Lo dije antes, es imposible asegurar «un voto una persona», a menos que pidamos DNI o Pasaporte y además verifiquemos que sea real y que no votan sus familiares. Aún así es complicado y caro, entre otras cosas, todavía no se extendió el DNI y la firma electrónica para todo tipo de transacciones. Por ahora lo descartaría para el menéame, al menos hasta que tengamos mucho cash para quemar 🙂

que la opinión de un usuario con más karma sea más correcta.

No, por supuesto que no. Tampoco es la intención.

Se dice que Digg es más justo por que da un voto a cada usuario.

No, Digg está aún más lejos que el Menéame de «un voto un usuario».

Un comentario muy interesante sugiere que el Karma no debería aparecer en perfiles, comentarios o noticias, sólo el número de votos.

Sí, se discutió este tema –de hecho al principio no se mostraba, y había aún más flames–, pero iría en contra de la idea fundamental de full disclosure que hemos adoptado. Además si ahora que es todo absolutamente público nos acusan de manipular, censurar o de hacer trampas, imagina lo que se diría si el karma no fuese visible. Es el problema que nos vemos cada día, además de serlo debes parecerlo. Aún así se montan conspiranoias (unas de verdad, otras puro FUD interesado).

Como ya he comentado con anterioridad, aunque son útiles para descartar noticias son muy discriminatorios, y a veces cuando hace falta de verdad descartar una noticia son insuficientes.

Esto es verdad. Pero me parece un problema más «humano» que de algoritmos (sobre todo creo que hay horas bajas de que son más «cuidadosos» mirando las noticias). Es un tema para pensar.

Sí, admitimos que no es perfecto, ni de lejos, pero el karma ha sido fundamental para controlar y evitar abusos sin tener que recurrir a medidas extremas y un coste de administración que hubiese sido prohibitivo para nosotros.

Pero es que si fuera todo perfecto, ¿cómo nos divertiríamos entonces con las conspiranoias, flames y «experimentos»? Creo que es parte de la gracia del sistema 😉

Bueno, perdón por el ladrillo, no revisé todavía el texto para eliminar los errores, es muy largo. Lo publicaré e iré corrigiendo los defectos que tenga. Si me quedó algo sin contestar, o mal contestado, espero poder hacerlo en los comentarios.