Archivos Mensuales: junio 2008

Organización, organización…

Después del follón que se montó después del partido contra Italia (y antes con otros partidos) hubo que definir criterios claros que fueron decisivos para que ayer no hubiese ningún problema. La noticia salió publicada en cuatro minutos, todo un record, sin ninguna discusión (aunque hay algunos muy despistados).

También ayudó mucho el tercer servidor que pusimos en marcha en Amazon EC2 (que se puso al 100% de CPU todo el tiempo que estuvo sirviendo páginas para meneame.net, mientas que los dos habituales no llegaban ni al 30%).

Muchas gracias a los admins que estuvieron muy alertas, han colaborado y tomaron las decisiones correctas muy rápidamente.

Al final es todo cuestión de organización y fijar criterios, vamos aprendiendo. Como el cuento aquél del tío chillando:

¡Organización! ¡organización! que no todavía no hice nada y ya me han dado varias veces por… :-)

Novedades: votos a comentarios, anotaciones, cálculo del karma, promote, Amazon EC2 y fútbol

Estos últimos días hemos hecho varias mejoras importantes (si fuésemos anglosajones diríamos algo como estamos realmente excitados). La principal es que los votos a comentarios son públicos desde hace unos días, se muestran en una ventana modal.

Votos de comentarios públicos

La idea de los votos a comentarios es para resaltar a los buenos comentarios y penalizar a aquellos que insultan o provocan gratuitamente. Al principio no pensábamos que hiciese falta hacer público los datos de estos votos, ya que hay suficientes controles para evitar los abusos de negativos y en general funcionan bastante bien.

Pero hay usuarios que abusan y votan negativo sólo para expresar su desconformidad con los argumentos expuestos, otros como “venganza”, esto generaba bastantes cabreos y consultas a los admins.

Así que habíamos decidido hace tiempo hacerlos públicos, sólo nos demoramos porque estábamos buscando la forma de hacerlo usable, simple y que no afecte la velocidad de todo el sitio. Creo que lo hemos logrado, so we are excited:-)

Servidor adicional en Amazon EC2

El otro cambio importante es más técnico y de las tripas del Menéame, pero casi obligaron a acelerar la implementación de las otras  características, tiene que ver con la avalancha de visitas que recibimos durantes las hora siguientes al partido contra Italia, tanto que la primera hora el sitio iba muy lento por llegar al límite de las 800 conexiones simultáneas.

Para prepararnos para el partido contra Rusia tuvimos que hacer modificaciones importantes al código del Menéame –pre-diseñada, pero pendientes de implementar– para permitir agregar servidores y réplicas remotas temporales de la base de datos.

Así fue que implementamos esta característica y ya está funcionan en un servidor alquilado en Amazon EC2 (amazon1.meneame.net). Si esta noche se produce otra vez la saturación lo habilitaremos para que también sirva al dominio meneame.net.

Sólo tiene un problema importante.

Los tiempos de latencias entre los centros de datos de Amazon en EEUU y nuestros servidores de Ferca en Madrid son muy elevados. Cuando un usuario modifica algo –comentario, voto, chat en la fisgona–, el servidor de Amazon tiene que enviar sincrónicamente los datos al de Madrid para que la visualización sea consistente. Así que en estos casos mencionados veréis –si lo habilitamos para después del partido– que la respuesta es lenta [*]. Pero compensa con la velocidad de navegación que aportará.

[*] No habría este problema si tuviésemos todos los servidores en Amazon EC2, pero los tiempos de ping de estos con Europa son muy malos.

Anotaciones

Al permitir tener varios servidores distribuidos y con altas latencias  ya no podíamos usar ficheros estáticos (compartidos vía NFS). Eso nos generó problemas con los logs públicos del promote y del karma que son visibles en el perfil de usuarios. Para solucionarlo hemos implementado un sistema de “anotaciones” de texto que permiten guardar los logs en la base de datos y así ser accesibles desde cualquier servidor.

Está diseñado para ser muy rápida y de uso genérico. En el futuro seguramente usaremos esta característica para otros tipos de avisos.

Cálculo del karma

En el perfil de cada usuario se puede consultar los resultados del karma. Al mismo tiempo que implementamos la visualización de votos comentarios hicimos algo similar para visualizar el log del cálculo.

Al tener las anotaciones hicimos los cambios para adaptarla y además tradujimos todo el texto al castellano, con mensajes más comprensibles.

Además aprovechando las características de las anotaciones, también se añaden en “tiempo real” los registros de cambios en el karma, por ejemplo con registros de incremento de karma por publicación de una noticia, las penalizaciones por votos cowboys, el descarte de noticias, comentarios con spam, etc. Esta información adicional al usuario ayudará a mejorar todavía más la “transparencia” del Menéame.

Promote

Al igual que tuvimos que adaptar el karma, también el log del promote donde se muestra el ajuste de karma que se hace a cada noticia (cada cinco minutos), o cuándo son seleccionadas para publicarse. Ahora tiene una nueva dirección meneame.net/promote.php.

Fútbol

Algunos dicen que el fútbol es pan y circo. Otros lo defienden. A otros les es indiferente (¿recordáis que podéis seleccionar o “anular” categorías en vuestro perfil?).

En cambio a nosotros nos da no sólo problemas y flames, también mucho trabajo de programación… y algo de gastos adicionales. But, it was quite exciting. ;-)

El problema al final de los partidos: disculpas y criterio que seguiremos desde ahora

Cada vez que hay algún partido de fútbol importante se repite el siguiente problema:

  • Antes que acabe el partido ya hay varios usuarios con el borrador preparado para enviar.
  • Al no poder enlazar a noticias ya redactadas enlazan habitualmente a páginas webs que transmiten o actualizan en tiempo real (“marcadores”).
  • Pocos segundos antes o después del pitido final envían la noticia, casi todos simultáneamente.
  • Se produce una saturación de noticias sobre lo mismo en la cola de pendientes, con votos por erróneas, duplicadas más los ya infaltables irrelevantes.
  • Durante varios minutos se siguen enviando noticias de lo mismo, a veces por no darse cuenta, otras por simple cachondeo o para molestar.
  • Con todo ese cruce de votos negativos al final terminan tardando mucho tiempo en salir o en casos extremos –como la del Madrid cuando ganó la liga– acaba no saliendo la noticia publicada.

Resultado: Acusaciones de mafia o que desde el Menéame censuramos esas noticias. No sé que sentido tendría censurar algo que es harto conocido y que al fin y al cabo es una tontería. Pero desde lo del Madrid, ese tema ha sido el centro de muchos flames e incluso de preguntas en alguna conferencia.

Con la Eurocopa el problema se agravó aún más y entre los admins estábamos discutiendo cómo solucionar el problema. Habíamos visto que el mayor problema eran los envíos precipitados de esos sitios de “marcadores” que muchas veces no están actualizados al momento del envío a la cola, y otras –como me pasó a mí– muestran información desactualizada.

La opción que discutimos es la de no permitir el envío de esos “marcadores” para así premiar al que envíe ya un artículo redactado –los periódicos deportivos los suelen publicar muy rápido–. Fue una opción discutida pero no decidida… y de aquí vino el error que cometimos. Con toda la buena voluntad pero fue un error.

Al momento que terminó el partido de España contra Italia se envió esta noticia de un “marcador”. Varios admins que estaban presentes recordaron la discusión anterior y además vieron que el marcador no estaba actualizado con el resultado final de los penaltis. Eso, junto con el nerviosismo porque el servidor estaba saturado –teníamos el límite de conexiones simultáneas, 800, un record nunca alcanzado– llevó a cometer el error de descartarla cuando no habíamos avisado claramente que seguiríamos esa política ni tan siquiera la habíamos aplicado en casos anteriores.

Aunque le decisión al final tuvo tuvo un buen resultado –se publicó una que sí era completa–, fue un claro error. Así que disculpas nuevamente, la intención era buena pero cometimos tres errores: exceso de celo, no avisar antes, falta de “mano izquierda” al tomar una decisión en principio sin demasiada importancia pero que generó malentendidos y discusiones.

Desde anoche que estamos discutiendo cómo mejorar y evitar estos problemas y flames. Había varias opciones que se discutieron (copia literal):

1) dejar hacer y listo

2) lo de hoy (pero previo aviso en el blog oficial)

3.a) avisar en el blog de los marcadores no darán karma y aplicar un
SDK al día siguiente al afortunado que consiga portada
3.b) lo mismo que 3) pero editando el meneo en portada para poner una
URL decente.

Después de decenas de intercambio de correos y ante la difícil de rebatir las siguientes dos opiniones de dos admins diferentes (copia literal):

Al fin y al cabo, no vamos a conseguir evitar que la gente mande los resultados en seguida. Ni aunque mandar noticias deportivas reste karma […] Creo que debemos tener presente, en la medida de lo posible, la opinión de los usuarios. Y en este caso, claramente se prefiere inmediatez sobre calidad del artículo.

En principio las normas “de calidad” son para que el usuario esté contento… y aquí el usuario objetivo de esas noticias se contenta con un marcador o cualquier cosa, ¿así que por qué preocuparnos? No es contenido chungo, porno ni similar […] Si están contentos con un marcador, pues ya está, que ellos lo disfruten.

Después de escuchar las opiniones y alternativas hemos decidido con Benjamí que la criterio para estos casos será la siguiente.

Reglas y recomendaciones para el envío de noticias de “eventos singulares”

  1. Se permitirá el envío de “marcadores” siempre y cuando se haga al final del evento y el enlace sea correcto y con datos actualizados. No se considerarán “marcadores” válidos artículos sin casi texto ni explicaciones  y envíados con el único objetivo de autobombo o spam comercial.
  2. El envío de noticias similares, ya sea en forma masiva o para entorpecer el voto a las anteriores será considerado un abuso (por lo que se descartaría la noticia y quizás anulación de la cuenta del que la envía).
  3. Si vemos que hay muchas noticias sobre lo mismo que entorpece la votación de la/s primera/s las descartaremos.
  4. Nos reservamos el derecho a descartar todas las otras duplicadas una vez que haya salido publicada una de ellas, o que esté a punto de salir publicada (se puede controlar en el promote –atención que es una direción nueva–).
  5. Antes de enviar una noticia sobre el evento mira que no haya sido enviada, seguramente ya está en la cola.
  6. Si envías una noticia y te das cuenta que está duplicada, edítala y ponla en autodescartada. Así no afecta el karma de nadie y permite que la primera enviada tenga más votos de los interesados.
  7. Antes de votar a una noticia sobre el evento, busca cuál es la primera y vota a ella. Así ayudarás a que sea publicada más rápidamente.

Inmediatamente después que publique este apunte lo enviaré al Menéame, para informar a sus usuarios y sobre todo para que den sus sugerencias en los comentarios, por lo que cerraré los comentarios aquí y así centralizar la discusión en el sitio donde más interesa.

De nuevo, disculpas por los malentendidos, sobre todo al usuario new y a los que votaron ese primer envío.

Discusión en Menéame.

Bonus temporal de las noticias

Casi desde el primer día del menéame, el programa que selecciona la noticia a publicar aplica un bonus a las noticias más recientes. El único objetivo de dichos bonus es publicar rápidamente las noticias que captan el interés de los que votan, en son aquellas que impactan más o que se refieren a un suceso importante.

Obviamente, una noticia que sale publicada en poco tiempo gracias a ese bonus tiene menos votos que las “normales”. Así, cada vez que se publica una noticia gracias a su bonus surgen comentarios conspiranoicos de que hay manipulación o que existe una “mafia” que hace que ocurra esto. Nada más lejos de la realidad, es así como funciona el algoritmo y se puede verificar en los resultados del cálculo: la columna BONUS indica el coeficiente que se le aplica, normalmente vale uno, pero en caso de noticias recientes se observará que el coeficiente es mayor que uno.

Cómo funciona

La parte fundamental del código es el siguiente

// BONUS
// Give more karma to news voted very fast during the first two hours (ish)
if ($link->content_type != 'image'
		&& $link->negatives < ($link->votes/10)
		&& $now - $link->date < 7200
		&& $now - $link->date > 600) {
	$link->new_coef = 2 - ($now-$link->date)/7200;
	// if it's has bonus and therefore time-related, use the base min_karma
	if ($decay > 1)
		$karma_threshold = $past_karma;
	else
		$karma_threshold = $min_karma;
} else {
	// Otherwise use normal decayed min_karma
	$karma_threshold = $min_karma;
	$link->new_coef = 1;
}

Lo que hace es muy sencillo. Si una noticia fue enviada hace menos de 2 horas y más de 10 minutos –para evitar que salga demasiado rápido sin que otros tengan oportunidad de votar– su karma se verá multiplicado por un coeficente mayor que  1 y menor 2. Este es el valor que se puede ver en la columna BONUS explicada anteriormente.

El valor del coeficiente depende del tiempo que ha pasado –decae proporcionalmente–, es lo que se hace la primera línea resaltada.  Valdrá casi 2 a los pocos minutos de haber sido enviada y decaerá proporcionalmente a 1 al llegar a las 2 horas

Además hay otra restricción. El bonus no se aplica si la noticia tiene más de un 10% de votos negativos.

No hay magia, no hay manipulación. Es un algoritmo que está implementado desde el principio y que funcionó en general muy bien para publicar rápidamente aquellas noticias que los votantes consideran muy relevantes.

Voto negativos a publicadas (II), ahora con efecto

En setiembre del año pasado pusimos en marcha los votos negativos a publicadas.   Ahora estamos a punto de introducir una modificación que hará que los votos negativos sí tengan efecto: enviar de nuevo a cola de pendientes a las noticias con más votos negativos que positivos durante la primer hora de publicación.

Es una prueba atendiendo a la sugerencia de muchas personas –Digg lo hace así desde que puso el voto negativo –o bury–. Si no funciona o no cumple los objetivos, lo cambiaremos, mejoraremos o quitaremos. Las reglas son muy restrictivas y se aplica sólo a los votos errónea y copia/plagio:

  1. La noticia tiene que haber sido publicada en las últimas tres horas.
  2. El total de votos negativos debe ser al menos un 25% del número de votos positivos.
  3. Para las siguientes reglas sólo se cuentan los votos de usuarios autentificados y emitidos después que la noticia haya sido publicada.
  4. La suma del karma negativo de los votos debe ser superior al karma de los votos negativos en el mismo período.
  5. La suma del karma negativo debe ser como mínimo el 25% del karma con que ha salido publicada una noticia (para asegurar que haya los votos suficientes y evitar efectos ping-pong).
  6. En los logs de la noticia se verá un evento nuevo para este caso: link_depublished.

Nota: las fórmulas y parámetros pueden verse en el values.php, en el apartado “fórmulas”. El algoritmo actual (la versión 4) está implementado en discard.php (casi al principio, comienza justo debajo del comentario Count only those votes with karma > 6 to avoid abuses with new accounts with new accounts).

¿Qué quiere decir esto? Que si te das cuenta sólo al momento que sale publicada –como pasa algunas veces–  que una noticia es un magufo, un engaño claro, o es plagio evidente [*] puedes votarla negativo y ese voto tendrá efecto, no será inútil como hasta ahora.

Esperemos que mejore y que no haya abusos (aunque con las reglas tan restrictivas es bastante difícil).

Muchos no estarán de acuerdo o les parecerá mal. Esperad un tiempo por favor, veremos como funciona, estará todo visible y siempre podemos deshacerlo si es un error.  Otorgadnos la duda razonable que quizás sea una buena idea –además sugerida por muchas personas–.

[*] Tuvimos muchas quejas de autores que se quejaban por apuntes plagiados de ellos subieran a portada y no el original. Por eso hace tiempo agregamos el voto negativo copia/plagio y estamos sensibles con el tema.

Encuesta para los usuarios del Menéame

Jan Alyne Barbosa es investigadora de Comunicación por la Universidad Federal da Bahia y por la Universidad de Navarra. Actualmente está haciendo una tesis doctoral sobre “Agenda Setting”. Para ello necesita una colaboración de los usuarios habituales del Menéame, se trata de responder a una pequeña encuesta.

Estáis invitados a colaborar, en nombre de la ciencia ;-)