Reputación federada

En SocialHub, @keunes propuso federar la reputación en el sentido de que si Discourse admitiera ActivityPub, las personas podrían usar su reputación existente en una o más instancias de Discourse a través de Internet para saltarse los niveles de confianza iniciales 0 y 1 y pasar directamente al nivel 2 (miembro) al unirse a un nuevo foro.

Acabo de crear mi primer mensaje en esta instancia de Discourse y, como soy nuevo aquí, solo puedo publicar dos enlaces. Es comprensible, pero bastante molesto. Así que pensé: ¿no hay alguna manera de federar Discourse, especialmente mi reputación?

Por ejemplo, en el foro de AntennaPod podríamos establecer SocialHub como una «fuente de confianza confiable» y permitir que los usuarios se beneficien de sus niveles de confianza obtenidos en otros lugares.

Efectivamente, cuando eres un internauta conocido con buena reputación, las limitaciones de los niveles de confianza inferiores pueden resultar una carga al unirse a nuevos foros. Por otro lado, si adquieres una mala reputación, esto también podría impedirte obtener privilegios en nuevos foros (por ejemplo, actuar como un peso negativo en la promoción de tu nivel de confianza, aunque esto se elude fácilmente usando una nueva identidad).

La idea es, por tanto, facilitar el intercambio de la reputación por buen comportamiento entre distintas instancias de Discourse. Dado que ya existe una red global de instancias de Discourse, con varios usuarios aquí en Meta que también participan en múltiples otras instancias, resulta cada vez más deseable unificar las identidades entre instancias para los usuarios habituales, de modo que las conversaciones sean más fluidas. ActivityPub es una forma de lograrlo, y actualmente estamos explorando maneras de crear un plugin que añada soporte para ActivityPub en Discourse, lo cual podría servir como base para otras funciones federadas, incluida esta.

Historia paralela

@erlend_sh me recordó esta propuesta casual de hace tres años:

Resumen de las características interesantes propuestas

Adopción voluntaria (Opt-in)

Red de confianza

Descubribilidad

En el mensaje #4, @erlend_sh propuso añadir «comunidades en común» con otros usuarios y, finalmente, trasladar insignias entre comunidades para facilitar que los miembros descubran nuevas comunidades.

9 Me gusta

Primeras impresiones que me vienen a la mente sobre la “migración de reputación”:

  • esto debería ser optativo por foro
  • esto debería ser optativo por usuario (véase 1)
  • debería haber una lista blanca editable (quizás proporcionada por Discourse) de foros permitidos
  • debería haber una lista negra editable de foros permitidos

1: esto plantea la pregunta de si queremos molestar al usuario con esto en los primeros 5 minutos de usar el foro.

4 Me gusta

Pensaba que los niveles de confianza se trataban más bien de aprender las normas y costumbres de cada foro individual. Permitir que las personas omitan la fase de “aclimatación” de dos semanas o 15 visitas (por defecto) basándose en las reglas de otros foros podría no funcionar tan bien.

No me importaría un nivel de confianza adicional de “miembro asociado” que pudiera aplicarse a foros o usuarios registrados en un directorio central. Algo que me permitiera tener acceso de lectura a muchos foros y, quizás, la opción de votar en encuestas o dar “Me gusta”, mientras que aún fuera necesario registrarse en un foro en particular para obtener la membresía completa, publicar y avanzar en el nivel de confianza, etc.

2 Me gusta

Estoy ejecutando un puñado de instancias pequeñas de Discord y temo el día en que tenga que empezar a lidiar con bots de moderación para evitar el spam y otros comportamientos maliciosos.

La mayoría de las carencias de moderación de Discord podrían resolverse con Niveles de Confianza, que siguen siendo enormemente subutilizados en el software de comunidades.

Los niveles de confianza en red (federados) compartidos entre múltiples instancias interoperables habilitan dos características importantes:

Red de Confianza

Un usuario que haya alcanzado el Nivel de Confianza 2 (TL 2) en Meta debería pasar directamente al TL 1 al unirse a cualquier foro que tenga listado meta.discourse.org como Foro de Confianza. Es esencialmente el siguiente paso después de Let experienced users skip "new to Discourse" features.

Es un sistema muy sencillo, similar al PageRank.

Descubribilidad

Discord tiene esta práctica función que te permite ver qué comunidades de chat (servidores) tienes en común con otro usuario:

Esto me recordó lo que sigo pensando que es el caso de uso más atractivo para nuestro esquivo Discourse Hub:

Una forma similar de transferir insignias desde otras instancias también sería muy útil. Cuando alguien ha recibido su primera insignia de «Útil» (aún no existe tal insignia de forma predeterminada), cada instancia adicional en la que se muestra sirve como recordatorio y afirmación para esa persona de que es el tipo de miembro de la comunidad que ayuda a los demás.

6 Me gusta

Si se introdujera la red de confianza, me gustaría ver soporte para una Lista de Confianza de Confianza, además de la de Foro de Confianza. Es decir, una instancia de Discourse podría publicar su lista de Foros de Confianza y yo podría optar por confiar en meta.discourse.org/trusted-forums.json en mi instancia, por ejemplo. (Probablemente no recursiva).

3 Me gusta

¿Cómo ves que esto funcione? ¿De forma anónima sin datos de usuario o…?

No estoy seguro de qué datos de usuario serían relevantes específicamente para la lista de foros de confianza. Imagino que los Foros de Confianza serían algo que el administrador de la instancia elige y, si el administrador opta por publicarlo, solicitar meta.discourse.org/trusted-forums.json (o la URL que corresponda) produciría algo como esto:

{
  "trustedForums": [
    "meta.discourse.org",
    "bestforum.com",
    "marvellousdiscussions.org",
    ...
  ]
}

Entonces, como administrador de una instancia, podría ingresar “meta.discourse.org” en Foros de Confianza para confiar solo en esa instancia (no en las instancias que ella confía) o, en su lugar, podría ingresarlo en la Lista de Confianza de Confianza (con un nombre mejor…) para confiar en esa instancia y en las instancias que ella confía.

El JSON probablemente no contendría realmente una referencia a su propia instancia; eso es solo para ilustrar que confiar en la lista de otra instancia debería implicar también confiar en esa instancia.


Dado que mencionas datos de usuario, supongo que te refieres a cómo veo que funciona la confianza en sí. Eso está más allá del alcance de lo que comentaba, pero dado la idea de @erlend_sh de promocionar a un usuario a TL1, supongo que la instancia tendría que compartir algo como un hash sha256 de la dirección de correo electrónico con los foros de confianza en el momento del registro (o, más probablemente, en un trabajo de Sidekiq después del registro).

Aunque esto evita compartir directamente datos de usuario, puedo ver inmediatamente un fallo en eso usando el JSON anterior como ejemplo. Si un usuario tiene una cuenta en bestforum.com y luego se registra en meta.discourse.org, revelaría al primero que el usuario ha creado una cuenta en el segundo y podría revelar al segundo que el usuario ya tiene una cuenta en el primero, lo cual podría ser indeseable.

No estoy muy seguro de cómo resolver eso. Que el usuario opte por participar en el registro no se puede confiar realmente porque una instancia que quiera abusar de ese mecanismo podría simplemente eliminarlo.

Posiblemente el “Discourse Hub” podría resolver en gran medida ese problema al solo guardar (y solo recibir nunca) direcciones de correo electrónico hash con las instancias asociadas y los niveles de confianza. Una instancia consultaría el hub con una dirección de correo electrónico hash y quizás usaría un sistema basado en puntuación con las instancias donde se ha visto ese hash y los niveles de confianza alcanzados, de modo que una instancia nunca vería qué otras instancias están involucradas, solo la puntuación resultante.

Aunque con un operador obvio de tal hub siendo Civilized Discourse Construction Kit, Inc., este arreglo también sigue planteando una pregunta importante: ¿quiero, como usuario de meta y otras instancias, que CDCK pueda ver qué otras instancias estoy utilizando? (Ya que sería posible que un operador de instancia+hub conecte a los usuarios de su propia instancia con las entradas en el hub).

Supongo que, para resumir, cómo podría funcionar la confianza es demasiado complicado para este cerebro confuso. :slight_smile:

Aunque encuentro el enfoque de “foros de confianza” interesante y útil, también veo un problema de seguridad potencial: los atacantes podrían apuntar a “foros de confianza” con menos supervisión para acceder a su objetivo real, al cual no podrían llegar directamente. Por lo tanto, si vamos a implementar un mecanismo de confianza transitiva, no debería ser fácilmente navegable y debe ir acompañado de un fuerte mecanismo de represalia que suspenda a un agresor en todas las instancias. Lo veo como una restricción estricta que añadiría una cantidad considerable de complejidad y que sería mejor dejar para una segunda fase de desarrollo.

Por otro lado, podría parecer más fácil mantener una lista privada de foros de confianza donde la reputación remota de un miembro en cada uno de estos foros reforzaría su estatus local. ¿Quizás el concepto de niveles de confianza podría extenderse tanto a instancias como a usuarios? Si una instancia, digamos Meta, tiene un N3, entonces las personas que provienen de allí podrían tener inicialmente un N2, con un factor de decaimiento si el usuario no participa. Esto añade otra capa de complejidad, pero estoy pensando en voz alta y quería bosquejar algunas posibilidades alternativas a confiar en instancias enteras.

Estoy de acuerdo en la discreción respecto a quién utiliza qué instancias. Debe tenerse en cuenta, aunque publicar en instancias públicas puede ser equivalente a revelar el hecho de que las estás utilizando de todos modos; esto podría aplicarse, sin embargo, a tableros privados.

2 Me gusta

Sigo buscando una lista de usuarios a nivel de directorio. :slightly_smiling_face:

https://DiscourseDiscovery.org -

Los usuarios anónimos verán un directorio de foros que se han registrado para incluirse en la lista pública (buscables por categoría o «etiquetas de foro»), y también podrán buscar palabras clave en todas las instancias del directorio.

Regístrate para crear una cuenta de usuario en DiscourseDiscovery. Las cuentas nuevas comenzarán en Hub_Level_0 y podrán avanzar a través de los demás Hub_Levels completando ciertas acciones y un entrenamiento adaptado del Discobot llamado «Forum Training» que cubra todas las habilidades necesarias que consideres que las personas necesitarán.

Los diferentes Hub_Levels permitirán acceder a más funciones en todo el directorio. Por ejemplo: ver categorías que normalmente no son visibles para usuarios anónimos, realizar acciones como dar Me gusta o votar en encuestas (las imágenes de avatar podrían estar rodeadas de un círculo rojo para indicar miembros asociados o de Hub_Level), o recibir notificaciones sobre contenido de temas, etc. Al tocar un avatar se abrirá su tarjeta de usuario de DiscourseDiscovery.

Los usuarios podrán luego agregar cualquier cuenta de foro de «miembro completo» a una página de usuario concatenada de DiscourseDiscovery (con la opción de excluir cualquiera que deseen). Aquí también se podrán acumular insignias, mostrar la actividad más reciente, etc., etc.

Los foros también podrían tener opciones en Seguridad para restringir el acceso a ciertos elementos (categorías, encuestas, etc.) solo a miembros completos. También podrían elegir si quieren incluirse en el directorio público, en uno más privado basado en los Hub_Levels de un usuario, o no incluirse en absoluto.

Solo algunas ideas. :slightly_smiling_face:

3 Me gusta