En Soporte de ActivityPub: Borrador RFC de la Fase 1, esbocé un ejercicio de ideación para evaluar el caso de negocio de tener soporte de ActivityPub en Discourse, y pensar más allá de un MVP como si Discourse hubiera sido construido desde cero con la federación en mente:
Por lo tanto, iniciaré la ideación con algunas sesiones de lluvia de ideas, sin tener en cuenta las consideraciones técnicas prácticas dadas la base de código actual. Soy consciente de que hay muchos matices y casos extremos en todo esto. Esta es una visión de cómo podría ser el soporte de federación nativa. Aquí va..
La comunidad no tiene fronteras
(Foto de Pixabay de Pexels)
Todos compartimos un solo planeta
entremezclándonos en estructuras sociales complejas. ¿Por qué una comunidad de Discourse está restringida a un solo foro?
Soy administrador de Humane Tech Community (HTC) y cubrimos una amplia gama de temas relacionados con la tecnología, teniendo (sub)categorías de «Libertad > Privacidad», «Alineación > Ética», «Alineación > Estándares». Quizás demasiado amplio, y existen muchos otros foros de Discourse que se especializan en estas categorías, y en ese campo hacen un mejor trabajo que nosotros. Pero para las personas interesadas en obtener una visión general de todo el campo de la tecnología humana, la posición amplia tiene sentido.
Federando categorías
¿Qué pasaría si pudiera federar nuestra subcategoría «Privacidad» con, por ejemplo, la subcategoría «Publicaciones de blog» del foro PrivacyTools? Quizás solo para sincronizar temas en una dirección, ya que la subcategoría de privacidad de HTC es más amplia en alcance, donde los temas creados en PrivacyTools aparecen en el foro de HTC, y nuestros miembros pueden interactuar con ellos. Las publicaciones de los temas en el foro de HTC se transfieren luego de vuelta al tema en PrivacyTools y viceversa. Los temas en ambos foros se mantienen sincronizados. Quizás incluso quiera sincronizar en una dirección múltiples subcategorías de PrivacyTools con «Privacidad» en HTC. ¿Y por qué no sincronizar con diferentes comunidades relacionadas con la privacidad de manera similar?
Otro ejemplo. Tanto Feneas como SocialHub comparten una categoría de nivel superior «ActivityPub». Hay superposición en estas, duplicación, miembros de una comunidad desconocedores de lo que sucede en la otra comunidad. Esta es una oportunidad donde «ActivityPub» es candidato para sincronización bidireccional, donde cada foro contiene entonces las mismas listas de temas.
Federando etiquetas y temas individuales
Lo mismo puede aplicarse a las etiquetas, donde una etiqueta particular se configura para ser federada. Esto podría configurarse, por ejemplo, de tal manera que cualquier tema con la etiqueta #specification en SocialHub se federé a la subcategoría «Alineación > Estándares» en HTC.
Los temas también pueden federarse caso por caso, activados por un comando de la barra de herramientas, donde especificas el foro de destino al que federar, y quizás también selecciones la categoría remota bajo la cual debe aparecer el tema (es decir, la lista de Categorías del foro también se federará para la navegación remota).
Menciones de miembros y vistas de perfil
Cuando un tema se federé a otro foro, cualquier mención dentro de él debe adaptarse para reflejar dónde reside el miembro. Mi identificador @aschrijver en HTC podría aparecer como @aschrijver@humanetech en el foro de SocialHub después de la sincronización.
Dado que también soy usuario en SocialHub, en la configuración de mi perfil podría conectar las cuentas, y tras una verificación, esto significa que en los temas sincronizados se podrá mostrar mi identificador de cuenta local.
Al hacer clic en un identificador remoto o en la imagen de perfil de un miembro, se mostrará la tarjeta de perfil del foro remoto. Al hacer clic nuevamente para ver el resumen del perfil, podría mostrar solo las métricas de actividad en el foro local que resultaron de la interacción con temas sincronizados. Alternativamente, y más interesante, mostraría resúmenes de todos los foros conocidos que forman parte de la configuración de federación. Por ejemplo, podría descubrir que la respuesta provino de un miembro muy activo y experto en el otro foro.
Mensajes directos y notificaciones
Los mensajes directos (MD) serían posibles en todos los foros federados, no solo localmente, etiquetando/mencionando al miembro remoto en el MD. Aparte de eso, no habría diferencia en la forma en que se produce la comunicación por MD. Funciona igual que los MD actuales que son solo locales.
De todo lo descrito anteriormente sobre la federación surge la necesidad de federar también las notificaciones. Si respondo a la publicación de un miembro remoto, me gusta su publicación o lo menciono en un hilo de tema sincronizado, podría aparecer una notificación de interfaz de usuario en el foro remoto para notificar al miembro. Las notificaciones por correo electrónico también son gestionadas por el foro remoto. Sin embargo, si el miembro tiene cuentas vinculadas en ambos foros, las notificaciones podrían provenir del foro local donde se produjo la interacción por primera vez.
Inicio de sesión único (SSO)
Tenga en cuenta que en toda la funcionalidad descrita hasta ahora, no hay necesidad de tener SSO. Un miembro remoto no tiene acceso privilegiado automático a otro foro federado. ¿Entonces qué pasa si son mencionados en un hilo de tema sincronizado en una sola dirección? En ese caso, recibirán una notificación de interfaz de usuario y un correo electrónico provenientes de su propia instancia de foro, y al hacer clic en ellos serán redirigidos al otro foro (quizás en una nueva pestaña del navegador) donde podrán simplemente ver el tema. Si quieren responder, primero deben registrarse y vincular cuentas para poder hacerlo.
Tenga en cuenta que el SSO es algo complicado en el Fediverso, que aún no tiene una buena solución. Pero para la federación de Discourse a Discourse, la funcionalidad de SSO podría ser mucho más fácil de implementar. Si hubiera integración de SSO, al hacer clic en la notificación podría abrirse el tema en contexto dentro del foro actual (como una «vista remota»), y permitir al miembro interactuar con él de manera fluida.
Gestión y complejidad de la federación
Todo este caso de uso se describe como si Discourse hubiera sido construido desde cero con soporte de federación integrado. Si todo esto se implementa, afecta casi todas las funciones del producto. A diferencia del caso de uso que dio inicio a este hilo —para feeds personalizados estilo Facebook—, la federación aquí es cuidadosamente gestionada por el personal del foro, no por el capricho de miembros individuales.
Gran parte de la configuración de la federación es exclusiva de administradores. Debe hacerse de manera estratégica y con un buen plan, para mantener la organización de la comunidad y el contenido intuitivo y lógico. La configuración de la federación se construye gradualmente con el tiempo como parte del flujo de trabajo de construcción de la comunidad, no es algo que se agregue casualmente.
Interoperabilidad
Por supuesto, esta visión del soporte de ActivityPub no necesita restringirse a Discourse. Cualquier proyecto de software compatible podría formar parte del tejido comunitario distribuido. Por ejemplo, el software de construcción de comunidades de código abierto de forem y la plataforma de toma de decisiones colaborativas de loomio, a ambos de los cuales acabo de señalar en la dirección de esta publicación. Pero Discourse tiene la oportunidad de tomar la iniciativa en todo esto.
Integración con el Fediverso
Todo el soporte de federación hasta ahora se limitaba al dominio de negocio de foros/comunidad, pero con la integración de ActivityPub la interoperabilidad puede ahora expandirse para abarcar el Fediverso más amplio, habilitando numerosos casos de negocio emocionantes. Solo para listar algunos que me vienen a la mente al azar:
- Anunciar publicaciones de foros en todo el fediverso con toots en las plataformas de microblogging Mastodon / Pleroma.
- Las imágenes incrustadas se cargan automáticamente en PixelFed y se sirven desde allí (ideal para, por ejemplo, comunidades de Blender).
- La barra de herramientas de fecha/hora permite configurar un evento completo de Mobilizon dirigido al fediverso, con funciones completas de RSVP.
- La integración es bidireccional, donde los Discusiones de Mobilizon en el evento son en realidad temas de Discourse.
- Crear temas en PeerTube con funciones especiales de video, donde las publicaciones son el hilo de comentarios en PeerTube.
- Tu tema publicado se convierte automáticamente en una publicación de blog en Writefreely más un hilo de comentarios.
- Incrustar partes de tu foro en Nextcloud como una aplicación a través de su soporte de ActivityPub.
- Integrar funciones de podcast a través de Funkwhale (vea el reciente video sobre soporte de podcasting).
- Obtener información de perfil de Flockingbird, red social profesional en desarrollo (tipo directorio de LinkedIn).
Y mira la cantidad cada vez mayor de aplicaciones en la Lista de vigilancia de ActivityPub y deja que tu imaginación te guíe ![]()
Consecuencias
Olvídate por un momento de todos los obstáculos y dificultades técnicas y considera qué significa esto para Discourse como producto. O mejor dicho, como Discourse ya no siendo «solo un producto»: Discourse se ha convertido en un tejido comunitario distribuido.
El personal del foro ya no es solo eso. Adoptarán una perspectiva mucho más amplia para la construcción de la comunidad. Tanto la comunidad como el contenido de la comunidad existen en todo el tejido de Discourse. El personal buscará activamente otras instancias de Discourse, acercándose a su personal para forjar asociaciones y crear diseños de federación interesantes para dividir y organizar su comunidad y contenido de la manera más interesante para la base de miembros de la comunidad.
Los propios miembros de la comunidad también estarán mucho mejor atendidos. Contenido más interesante fluirá hacia su «portal» de foro y el foro será más activo que si fuera solo algo local. Los miembros de la comunidad podrán descubrir e interactuar con miembros de otras instancias de foros en todo el tejido. De hecho, la frontera de la comunidad ha sido eliminada: La comunidad no tiene fronteras.

