Meneame ya dispone de un mecanismo automático que retira de portada las noticias que acumulan un volumen significativo de votos negativos. El script discard3.php se ejecuta periódicamente y evalúa las noticias publicadas en los últimos cuatro días. Sin embargo, algunos usuarios han observado que ciertas noticias con muchos negativos permanecen en portada. Este artículo explica cómo funciona el sistema actual, por qué algunas noticias sobreviven al proceso y abre la discusión sobre si los umbrales deberían ajustarse.
Cómo funciona el depublish
El script selecciona como candidatas las noticias publicadas que llevan al menos 14 minutos en portada y cuyo número de negativos supera un quinto de los positivos. Para cada candidata calcula dos valores: la suma del karma de los votantes negativos y la suma del karma de los votantes positivos, ambas limitadas a las últimas 24 horas. Solo cuentan los votos de usuarios con un karma mínimo (> 6.0 para negativos, > 7.4 para positivos), lo que filtra cuentas nuevas o de bajo karma para evitar abusos.
Después aplica un ajuste basado en la ratio votos/clics de la noticia respecto al conjunto de noticias publicadas. Si una noticia tiene muchos votos pero pocos clics, sus positivos pesan menos, facilitando el depublish.
La noticia se retira si se cumplen todas estas condiciones simultáneamente: al menos 10 de karma negativo acumulado, el karma negativo supera un sexto del karma de la historia, el número de negativos supera un sexto de los positivos, hay más de 5 votos negativos, y el karma negativo supera al positivo (o supera la mitad del karma de la historia y la mitad del positivo).
Cuando se retira, la noticia vuelve a estado pendiente con su karma dividido entre 20, el autor pierde 1 punto de karma, y los usuarios que votaron negativo ganan 0.16 de karma (con un límite de 5 recompensas por usuario en 48 horas).
Por qué algunas noticias con muchos negativos no se retiran
El sistema está diseñado para ser conservador. Hay varias razones por las que una noticia aparentemente muy votada en negativo puede sobrevivir.
El filtro de karma mínimo de los votantes es la razón más frecuente. Una noticia puede tener 30 negativos visibles, pero si la mayoría provienen de usuarios con karma inferior a 6.0, la suma de karma negativo real puede ser muy baja.
La condición de entrada también es exigente. Una noticia con 200 positivos necesita al menos 41 negativos solo para ser evaluada como candidata.
Las condiciones de despublicación son acumulativas. Basta con que falle una de las cinco para que la noticia permanezca en portada.
La ventana temporal limita el cálculo a las últimas 24 horas. Si los negativos llegan repartidos en varios días, puede que nunca se alcance el umbral dentro de esa ventana.
El ajuste por clics puede proteger noticias muy leídas. Si la ratio de clics es alta, el coeficiente infla los positivos y dificulta el depublish.
Las noticias patrocinadas se excluyen explícitamente del proceso.
Parámetros actuales y su configuración
Todos los valores son modificables en config.php sin necesidad de tocar el script.
depublish_negative_karma (actualmente 6.0) define el karma mínimo que debe tener un usuario para que su voto negativo cuente en el cálculo. depublish_positive_karma (actualmente 7.4) hace lo mismo con los positivos. depublish_karma_divisor (actualmente 20) determina cuánto se reduce el karma de la noticia cuando se retira. instant_karma_per_depublished (actualmente 1) es el karma que pierde el autor.
Qué se puede discutir
La pregunta es si los umbrales actuales son adecuados o si deberían ajustarse. Algunas opciones concretas para el debate: rebajar el karma mínimo de los votantes negativos de 6.0 a un valor inferior para que más votos cuenten en el cálculo, reducir las condiciones acumulativas para que el depublish sea menos conservador, ampliar la ventana temporal de 24 horas para que los negativos repartidos en el tiempo también sumen, o ajustar el divisor de karma (actualmente 20) que determina con cuánto karma vuelve la noticia a pendientes.
El código completo del mecanismo está disponible en el repositorio público del proyecto en scripts/discard3.php.
