Complemento ActivityPub

Es posible que tengas que explicármelo como si tuviera 5 años.

Si mi organización está en Mastodon en https://example.social/@MyOrganization

¿Puedo tener una categoría en Discourse que muestre todas las publicaciones de la organización en Mastodon?

https://discourse.example.org//c/fediverse/67

¿Y cualquier interacción con esas publicaciones (Favorito o Responder) en Mastodon se representará en las publicaciones de Discourse en esa categoría?

¿Y cualquier interacción con esas publicaciones en Discourse será visible en Mastodon?

Esperaré a que confirmes o desmientas antes de hacer mis preguntas de seguimiento.

1 me gusta

Respondo por todos aquellos de los que estoy seguro.

Sí, puedes. Entonces esa categoría sigue a tu cuenta de Mastodon.

Respuestas sí. Favoritos (estrellas) no, porque su función es solo mostrar esos “me gusta” localmente a esos usuarios de Mastodon. Otros, como tu categoría o quienquiera que siga a ese usuario, es decir, tu organización, nunca ven los favoritos dados.

Este es mi problema en este momento, pero no en el sentido de que los comentarios escritos bajo un tema en una categoría no viajan a Mastodon.

Pero si lo permites, entonces esa categoría puede ser seguida desde Mastodon y entonces todo lo que se escribe es público en Mastodon — dependiendo de tu configuración, temas y publicaciones, o solo la primera publicación de los temas. Las reacciones no se mueven a Mastodon.

Básicamente:

  • si una categoría sigue a un usuario de Mastodon: Discourse recibe de Mastodon
  • si un usuario de Mastodon sigue una categoría: Mastodon recibe de Discourse

Así que el énfasis es, desde un punto de vista simplificado, por supuesto,

  • si el punto principal es informar a los usuarios del foro, y los usuarios de Mastodon solo ven si siguen, entonces la publicación ocurre en los temas y los usuarios de Mastodon solo ven si alguien sigue esa categoría (o saben cómo encontrar esa categoría como usuario de ActivityPub)
  • si el punto principal es informar a los usuarios de Mastodon, y los usuarios del foro ven si siguen esa categoría, y no se necesita participación federada de la categoría, entonces esa categoría sigue a tu usuario de Mastodon

Casi lo mismo, pero los mensajes se muestran de manera diferente en Mastodon.

Una cosa. Debido a los límites de Mastodon, prácticamente todas las etiquetas markdown se muestran tal cual, lo que significa que, por ejemplo, el negrita no se aplica en Mastodon, y los seguidores ven **negrita** en lugar de negrita. Y las etiquetas no se mueven de aquí para allá.

2 Me gusta

Tengo un sandbox de Discourse, si necesitas un beta tester.

1 me gusta

[quote=“Jakke Lehtonen, post:388, topic:266794, username:Jagster”]ninguna cuenta es @ScienceScholar@mastodon.social
[/quote]

La razón por la que actualmente no puedes seguir esa cuenta es porque es un bot. Todavía no hemos agregado soporte para seguir bots.

Esto parece deberse a que la obtención autorizada de Mastodon está habilitada en mastodonapp.uk. Lo revisaré de nuevo en el próximo día más o menos.

Cabe señalar que cuando sigues una etiqueta en Mastodon, solo verás las publicaciones con esa etiqueta que ya están en el servidor en el que te encuentras. Si hay publicaciones con esa etiqueta en otro servidor de Mastodon, no las verás. Dicho de otra manera, Mastodon no ha agregado soporte principal de ActivityPub a sus etiquetas (por ejemplo, no las ha convertido en Actores como lo hace el Plugin de Discourse para las etiquetas de Discourse). Consulta la documentación y la discusión aquí. Aún podría ser posible hacerlo, pero requerirá algún tipo de retransmisión o quizás sondeo.

Necesitarás compartir el mensaje en sí para que pueda decirte más (es decir, no solo la traza). Cuando tengas habilitado el registro detallado, el plugin registrará los fallos al procesar objetos entrantes. Puede haber muchas razones para un fallo al procesar, muchas de las cuales no están relacionadas con Discourse. El fediverso tiene muchos objetos volando todo el tiempo. Puede que cambie el nivel de registro de estos fallos al procesar a solo “info”, ya que creo que sugieren a las personas un problema con el plugin en sí, cuando en la mayoría de los casos no hay ningún problema en el extremo de Discourse.

Sí, deberían aparecer como respuestas en Mastodon. Los ejemplos específicos son siempre los mejores, ya que puedo analizar lo que ha sucedido y abordar cualquier cosa que deba abordarse (si es que algo necesita abordarse).

Sí, así es como funciona la configuración de “Tema completo”. Ver más

1 me gusta

No sé a qué mensajes se refiere, pero recibí muchos de esos. Intentaré averiguarlo (estoy bastante seguro de que tengo habilitado el registro detallado, pero mi memoria es realmente poco confiable). Por otro lado, no veo ningún comportamiento extraño en ninguna parte.

Etiquetas, bots, etc. — gracias, eso lo explicó mucho.

¿Cómo hago eso? Porque eso sucede con cada uno, no con algunos.

editar

No sé si esto ayuda un poco, pero esto apareció un minuto antes de esa advertencia:

[Discourse Activity Pub] Failed to process https://mastodon.social/users/fesshole: Object is not supported

Fue un mensaje impulsado por mí.

Y con la misma marca de tiempo que esa advertencia estaba esto:

[Discourse Activity Pub] Failed to process https://mastodon.social/users/moa333#delete: Object is not ready

Si tengo que adivinar, ¿el último está relacionado con handlers::warning, y ambos son informativos, y no necesito preocuparme por ellos en absoluto?

editar2

Sí, el problema era la firma HTTP. El plugin la quería, pero mi Mastodon no la usaba. Cuando se deshabilitó en ambos extremos (quizás habilitarla en ambos sitios haría lo mismo), los mensajes comenzaron a viajar aquí, allá y en todas partes.

Debo investigar más a fondo cuáles son los pros y los contras reales de usar esa configuración.

¡Gracias por guiarme en la dirección correcta!

1 me gusta

Gracias por compartirlo. La próxima día o así revisaré nuevamente nuestra implementación de firmas HTTP en el contexto de la consulta autorizada de Mastodon. Tal vez hayan cambiado cómo manejan las firmas, o necesitamos ajustar nuestro manejo.

Porque pensé (a nivel de imaginación, sin hechos) que si tengo firmas activadas en Discourse y desactivadas en Mastodon, los mensajes irían de Discourse a Mastodon (porque la instancia no usa firmas HTTP), pero no de Mastodon a Discourse (porque el foro quiere firmas HTTP). Pero lo que sucedió fue totalmente lo contrario.

Pero el actor de Mastodon (mi cuenta) está conectado a mi usuario de Discourse, y soy administrador, ¿puede significar algo?

De todos modos, cuando ambos no usan firma HTTP, todo funciona como se espera. Estoy bien con eso, pero tú como desarrollador podrías ser otra historia :smirking_face:

No estoy seguro de cuántos beneficios válidos y sólidos ofrece la firma HTTP. En algún momento, no hace mucho tiempo, Pixelfed tuvo problemas con Mastodon cuando se usaban firmas. Y también tenemos un tercer jugador: Wordpress.

De todos modos, me estoy desviando del tema.

1 me gusta

Esta cuenta debería ser detectable cuando esto se fusione y luego se implemente en tu servidor.

3 Me gusta

@Jagster Todas tus respuestas también se mostrarán correctamente en Mastodon cuando esto se fusione.

(Mastodon ajustó algunos manejos de su lado)

4 Me gusta

Esto está arreglado ahora @tvavrda. Disculpa por eso, me salté un paso en el proceso.

2 Me gusta

Intentando seguir una cuenta de peertube en una categoría pero no pasa de pendiente.

Aquí está lo que hay en los registros

La solicitud POST a https://spectra.video/accounts/spoilerdiacre/inbox falló: Expected([200, 201, 202]) <=> Actual(403 Forbidden)
https://community.derpandchill.com/ap/actor/ca233d6f9d47cde558877fb7609a6b3a no se pudo entregar a https://spectra.video/accounts/spoilerdiacre/inbox

Lo intenté varias veces. Sé que son diferentes, pero sería bueno publicar automáticamente videos en mi comunidad.

Gracias por el informe, investigaré más detenidamente más tarde esta semana.

Sobre la federación entre Discourse y Mastodon. Hay algunas cosas que no entiendo, no puedo o/y espero demasiado. Pongo algunos enlaces. El contenido está en finlandés, pero supongo que el contenido no es importante.

Actores del foro y boosting

Si entiendo bien, un actor de categoría federará un tema impulsándolo, porque el usuario real es un actor, pero las cosas simplemente no funcionan así, al menos por ahora. ¿Entonces el boosting es la única forma de federar?

Pero crea una situación en la que un usuario de Mastodon lo ve como impulsado y el remitente original es, por ejemplo, mi @Jagster@foorumi.katiska.eu. Pero ellos nunca siguen la cuenta que impulsa, sino la original, como mi cuenta personal del foro — pero no pueden, porque ven una solicitud de aprobación, y yo no puedo hacer eso. Así que nunca siguen a nadie.

Artículo vs. Nota

No entiendo qué debería esperar, pero creo que funcionan al revés.

Si uso el formulario Nota, Discourse federará la primera publicación tal como está. Como esto: Sokeriton kofeiini voi olla terveellistä - Ihminen, luonto & maailma - Katiskan foorumi (y como siempre los enlaces de ActivityPub, etc. se encuentran como de costumbre; por cierto, me gusta esa nueva forma de mostrarlo, aunque no la uso por completo)

Ese muestra “Leer más” pero al hacer clic abre el contenido en Mastodon.

Este es un Artículo: Onko koiran peitsaaminen aina merkki ongelmasta? - Koiramaailma - Katiskan foorumi
Muestra solo el título y enlaces a ese tema. Así que leer en Mastodon es imposible.

edición: lo siento por el desorden después de la edición, pero acabo de darme cuenta de que este tipo de artículo se mostraba viniendo de mi actor del foro, no impulsado por el actor de la categoría. Lo hace cada vez; dos cosas diferentes: original e impulso :man_facepalming: Eso estuvo bien, sin embargo. Pero seguir a mi actor del foro sigue siendo imposible debido a la aprobación; actúa como una cuenta bloqueada.

Intenté leer este (mega)tema, y también me molesté en preguntar en ask.discourse.com. ¿Es la capacidad de mostrar el artículo completo hecha exactamente usando enlaces, no mostrando el contenido en sí? Si es así, es innecesario para Mastodon, porque también puede mostrar contenidos más largos, y usaré nota en lugar de artículo.

Federación de discusión

Cuando he federado un tema, y alguien está comentando allí, eso aparecerá debajo de ese tema muy bien. Pero si comento en ese tema en el foro, eso se federará, pero nadie lo verá como un comentario de ese tema (o hilo en Mastodon), ¿porque ha sido enviado como un impulso por el actor de la categoría?

¿Es esta una situación en la que la aplicación (oficial) de Mastodon dice que tal vez no todos los comentarios están en esta instancia, y deberías abrir la original — y nadie la abre nunca?

Este es un tema en el que tuve dos discusiones independientes donde el foro vio todo, pero Mastodon no supo de los comentarios escritos en el foro: Pikkulasten ruuat? - Retkeily & Melonta - Katiskan foorumi

Edición ese tema tiene ~5 días en el momento de escribir esto, y ha sido impulsado y publicado por el actor de la categoría, no por mi usuario del foro. ¿Ha cambiado algo entre entonces y ahora (sí, estoy reconstruyendo casi todos los días)?

1 me gusta

No es la única forma, pero es la forma principal utilizada por plataformas similares a foros para federar grupos de temas/hilos (es decir, con una etiqueta o categoría en particular). El proceso se describe en algo llamado FEP-1b12 que seguimos, y en el que hemos estado trabajando con otros implementadores.

Lo siento, no entiendo muy bien cuál es el problema aquí. ¿Podrías intentar reformularlo?

La razón por la que esto sucede es que Mastodon dejó de convertir el contenido de los Artículos y solo mostraba un enlace al contenido original. Dado el auge de los foros en el fediverso, por ejemplo, nosotros, puede que pronto sea el momento de un nuevo PR para Mastodon para reintroducir ese soporte.

Sí, hubo algunos cambios a este respecto recientemente, porque Mastodon realizó varios cambios en su extremo. Es probable que haya más cambios en el futuro a medida que busquemos refinar el enfoque aquí. Si pudieras presentar ejemplos específicos de cosas que no cumplen tus expectativas, por ejemplo, Publicación 1 (Discourse), Respuesta 1 (Mastodon), Respuesta 2 (Discourse), etc., o algo similar, sería útil.

1 me gusta

No tengo demasiadas expectativas, pero sí algunos deseos :joy:. Todo lo demás está ahora claro, pero esa cosa de boost/escritor. Puede que ya no tenga ningún problema.

Me refiero a cómo se muestra en Mastodon.

  • impulsado por el actor de la categoría
  • el original soy yo, mi usuario del foro

Cuando hice clic en mi actor del foro, se mostró esto (captura de pantalla de la aplicación Mona, pero la PWA oficial mostró lo mismo, pero a su manera)

Ese icono rojo es una solicitud de seguimiento, igual que si fuera un perfil bloqueado.

Luego hice la reconstrucción.

Ahora la PWA oficial muestra lo que debería:

Pero Mona todavía muestra ese icono rojo.

Por alguna razón, yo, ni nadie más, podía seguir a mi actor del foro debido a eso. Pero ahora está arreglado (algún problema extraño entre dos sistemas :man_shrugging:). Y la aplicación mastodon que se usa ahora no actualiza su contenido, pero eso no es tu problema en absoluto.

Así que esta publicación fue solo informativa mostrando… algo :joy:

1 me gusta

Una pequeña solicitud de característica cosmética: ¿podríamos tener un indicador gráfico para mostrar cuándo una publicación proviene de un actor de ActivityPub? Al igual que vemos un icono de sobre cuando alguien usa correo electrónico.

La razón de esto es que mis usuarios están confundidos porque no ven la diferencia entre los usuarios del foro local y los usuarios de Mastodon.

¿Por qué deberían saber eso? No lo sé. La gente simplemente actúa así y me gusta mantenerlos tranquilos. Y también indicamos los correos electrónicos, y eso tampoco es necesario ni es un detalle importante en absoluto.

Hay un indicador cuando una publicación es de un actor remoto, es un icono azul de AP, en el mismo lugar exacto que el icono de correo, junto a la fecha de la publicación.

Eso es para las respuestas, para el OP, el mismo icono en azul más detalles se muestran justo debajo del mapa del tema.

1 me gusta

Ahora que lo dices, puedo ver la diferencia, apenas :joy:

¿Recuerdas el CSS para cambiar alguno de los colores de forma más clara?

Editar

Cambiar esos dos colores podría ser más fácil, pero como dice mi perfil, solo soy otro copión y pegador. Así que tomé esto de la fuente.

Como tengo cero entendimiento de lo que son todas esas terciarias, etc. en el mundo real, usé colores web básicos.

.activity-pub-topic-status,
.activity-pub-post-status {

  &.published .d-icon-discourse-activity-pub,
  &.updated .d-icon-discourse-activity-pub {
    color: #808080;
  }
  &.published-remote .d-icon-discourse-activity-pub {
    color: #008000;
  }
}
2 Me gusta

EDITAR

El siguiente problema está relacionado con el usuario @a.gup.pe. Todas las categorías federadas encuentran al usuario @koirat@a.gup.pe y lo siguen mostrando el estado esperando. Al cambiar de página y volver, no se muestra nada, como si el seguimiento hubiera desaparecido.

Sin embargo, las categorías pueden seguir a humanos reales.

Ese actor es, de facto, un bot, y Discourse no puede seguir a bots — pero, que yo sepa, no se identifica como tal. E incluso si el problema fuera la botitud (¿es que eso es una palabra? :flushed_face:), Discourse no debería haberme permitido seguirlo en primer lugar (a menos que Discourse no lo supiera en ese momento). De todos modos, no debería terminar el seguimiento sin decírmelo. ¿O lo hizo…? No he revisado los registros, mi error.

EDITAR2

Esto es todo lo que encontré.

falló la entrega a https://a.gup.pe/u/koirat/inbox
[Discourse Activity Pub] https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd falló la entrega a https://a.gup.pe/u/koirat/inbox
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: https://foorumi.katiska.eu/ap/activity/e05428a3d5d0d9637c8b191bc4556063
type: Follow
to: https://a.gup.pe/u/koirat
published: '2025-02-23T07:11:19Z'
updated: '2025-02-23T07:11:19Z'
actor: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  id: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd
  type: Group
  updated: '2025-02-20T08:03:45Z'
  url: https://foorumi.katiska.eu/c/koiramaailma/33
  name: 'Katiska.eu: koiramaailma'
  inbox: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd/inbox
  outbox: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd/outbox
  followers: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd/followers
  preferredUsername: koiramaailma
  publicKey: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
    id: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd#main-key
    owner: https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd
    publicKeyPem: |
      -----BEGIN PUBLIC KEY-----
     (Esto no es relevante, supongo. Solo ocupa espacio)
      -----END PUBLIC KEY-----
  icon: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
    type: Image
    mediaType: image/png
    url: https://cdnfoorumi.katiska.eu/original/1X/c51c0a678551648d73e3f8729ec95ecd1fc0bb73.png
  "@context": https://www.w3.org/ns/activitystreams
"@context": https://www.w3.org/ns/activity...

Webfinger encuentra al usuario de a.gup.pe, así que esa no puede ser la razón.

¿Es este un caso extremo, o estoy intentando hacer algo extraño de nuevo?

Discourse no puede seguir listas de Mastodon (y estas también tienen sus propios problemas en Mastodon). Así que probé con el “pseudo usuario” de a.gup.pe.

Creé @koirat@a.gup.pe siguiendo al mismo usuario en mi instancia — recopilará toots donde se use la etiqueta #koirat (perros en finés, por cierto). Eso fue bien.

Luego envié un mensaje desde Mastodon y se mencionaron tanto la etiqueta como el usuario. Apareció en la lista, que seguía al usuario de guppe.

En mi Discourse, pedí a la categoría X que siguiera al usuario @koirat@a.gup.pe. Tengo otra categoría Y siguiendo a mi actor @jagster@kvarkki.nexus, estaba en estado esperando. Así que esperaba recibir ese mensaje dos veces, una de mí y otra a través de guppe (oh, por el amor de Dios, ¿es ese el problema? :thinking:).

El mensaje enviado por mi actor se publicó en la categoría Y, como se esperaba. La categoría X no recibió nada entregado por el actor de guppe.

Cuando abrí la federación de la categoría X, ya no estaba siguiendo a @koirat@a.gup.pe.

Entonces, ¿cuáles son las suposiciones?

  • @a.gup.pe funciona de alguna manera diferente y Discourse no puede entenderlo
  • Intenté publicar dos temas idénticos desde Mastodon (esto puedo probarlo fácilmente, tardará unos momentos)

Este no es un problema puramente académico, porque resolvería los problemas de listas de Mastodon.

La razón por la que eso no funciona es porque cuando Discourse intenta enviar un Follow a a.gup.pe/u/koirat/inbox, recibe un error interno del servidor 500 como respuesta.

HTTP/1.1 500 Internal Server Error\r\n

En otras palabras, hay un error en Guppe.

Observo que el enfoque colectivo del fediverso para los grupos está evolucionando actualmente. Lo estoy discutiendo, junto con otros temas relacionados, con personas de NodeBB, Wordpress, Mastodon y otros. Véase, por ejemplo:

El otro problema al que se enfrentará Guppe es que el propio Mastodon ha estado trabajando en una función de “Grupo” durante algún tiempo, lo que puede entrar en conflicto con el enfoque de Guppe.

4 Me gusta