Plugin ActivityPub

Vous devrez peut-être me l’expliquer comme si j’avais 5 ans.

Si mon organisation est sur Mastodon à l’adresse https://example.social/@MyOrganization

Puis-je avoir une catégorie dans Discourse qui montre tous les messages de l’organisation sur Mastodon ?

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

Et toute interaction avec ces messages sur Mastodon sera-t-elle représentée dans les messages Discourse de cette catégorie ?

Et toute interaction avec ces messages dans Discourse sera-t-elle visible sur Mastodon ?

J’attendrai votre confirmation ou infirmation avant de poser mes questions de suivi.

1 « J'aime »

Je réponds pour tout ce que je sais avec certitude.

Oui, vous le pouvez. Ensuite, cette catégorie suit votre compte Mastodon.

Les réponses oui. Les favoris (étoiles) non, car leur rôle est simplement d’afficher ces « likes » localement pour cet utilisateur Mastodon. Les autres, comme votre catégorie ou quiconque suit cet utilisateur, alias votre organisation, ne voient jamais les favoris donnés.

C’est mon problème pour le moment, mais non, dans le sens où les commentaires écrits sous un sujet dans une catégorie ne voyagent pas vers Mastodon.

Mais si vous le permettez, alors cette catégorie peut être suivie depuis Mastodon et alors tout ce qui est écrit est public sur Mastodon — en fonction de vos paramètres, des sujets et des messages, ou juste du premier message des sujets. Les réactions ne vont pas sur Mastodon.

En gros :

  • si une catégorie suit un utilisateur Mastodon : Discourse reçoit de Mastodon
  • si un utilisateur Mastodon suit une catégorie : Mastodon reçoit de Discourse

Donc l’accent est mis, d’un point de vue simplifié bien sûr,

  • si le point principal est de le dire aux utilisateurs du forum, et que les utilisateurs de Mastodon ne voient que s’ils suivent, alors la publication se fait dans les sujets et les utilisateurs de Mastodon ne voient que si quelqu’un suit cette catégorie (ou s’ils savent comment trouver cette catégorie en tant qu’utilisateur ActivityPub)
  • si le point principal est de le dire aux utilisateurs de Mastodon, et que les utilisateurs du forum voient s’ils suivent cette catégorie, et que la participation fédérée n’est pas nécessaire de la part de la catégorie, alors cette catégorie suit votre utilisateur Mastodon

Presque la même chose, mais les messages sont affichés différemment sur Mastodon.

Une chose. En raison des limites de Mastodon, pratiquement toutes les balises markdown sont affichées telles quelles, ce qui signifie par exemple que le gras ne se fait pas sur Mastodon, et les abonnés voient **gras** au lieu de gras. Et les balises ne bougent ni d’ici ni de là.

2 « J'aime »

J’ai un bac à sable Discourse, si vous avez besoin d’un bêta-testeur.

1 « J'aime »

[quote=“Jakke Lehtonen, post:388, topic:266794, username:Jagster”]aucun compte n’est @ScienceScholar@mastodon.social
[/quote]

La raison pour laquelle vous ne pouvez pas suivre ce compte actuellement est qu’il s’agit d’un bot. Nous n’avons pas encore ajouté la prise en charge du suivi des bots.

Cela semble être dû à la fonction “Authorized fetch” de Mastodon activée sur mastodonapp.uk. Je vais réexaminer cela dans les prochains jours.

Je note que lorsque vous suivez un hashtag sur Mastodon, vous ne verrez que les publications avec ce hashtag qui se trouvent déjà sur le serveur auquel vous êtes connecté. Si des publications avec ce hashtag se trouvent sur un autre serveur Mastodon, vous ne les verrez pas. Autrement dit, Mastodon n’a pas ajouté de prise en charge principale d’ActivityPub à ses hashtags (par exemple, ils ne les ont pas transformés en Acteurs comme le fait le plugin Discourse pour les tags Discourse). Voir la documentation et la discussion ici. Il est peut-être encore possible de le faire, mais cela nécessitera une sorte de relais ou peut-être une interrogation.

Vous devrez partager le message lui-même pour que je puisse vous en dire plus (c’est-à-dire pas seulement la trace de la pile). Lorsque vous avez activé la journalisation détaillée, le plugin enregistrera les échecs de traitement des objets entrants. Il peut y avoir de nombreuses raisons pour un échec de traitement, dont beaucoup ne sont pas liées à Discourse. Le fediverse a beaucoup d’objets qui circulent en permanence. Je vais peut-être changer le niveau de journalisation de ces échecs de traitement en “info” car je pense qu’ils suggèrent aux gens un problème avec le plugin lui-même, alors que dans la plupart des cas, il n’y a pas de problème du côté de Discourse.

Oui, ils devraient apparaître comme des réponses sur Mastodon. Des exemples spécifiques sont toujours les meilleurs car je peux analyser ce qui s’est passé et résoudre tout ce qui doit être résolu (si quelque chose doit être résolu).

Oui, c’est ainsi que fonctionne le réglage “Sujet complet”. Voir plus loin

1 « J'aime »

Je ne sais pas à quels messages cela se rapporte, mais j’en ai beaucoup. Mais je vais essayer de comprendre (je suis tout à fait sûr d’avoir activé la journalisation détaillée, mais ma mémoire est vraiment peu fiable). D’un autre côté, je ne vois aucun comportement étrange nulle part.

Tags, bots, etc. — merci, cela a beaucoup expliqué.

Comment puis-je faire cela ? Parce que cela se produit avec chacun d’entre eux, pas avec certains.

edit

Je ne sais pas si cela aide un peu, mais ceci est apparu une minute avant cet avertissement :

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

C’était un message boosté par moi.

Et avec le même horodatage que cet avertissement, il y avait ceci :

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

Si je dois deviner, ce dernier est lié à handlers::warning, et les deux sont informatifs, et je n’ai pas à m’en soucier du tout ?

edit2

Oui, le problème était la signature HTTP. Le plugin la voulait, mais mon Mastodon ne l’utilisait pas. Lorsqu’elle a été désactivée des deux côtés (peut-être que l’activer des deux côtés aurait fait de même), les messages ont commencé à voyager ici, là et partout.

Je dois approfondir ce que sont les avantages et les inconvénients réels de l’utilisation de ce paramètre.

Merci de m’avoir mis sur la bonne voie !

1 « J'aime »

Merci de partager cela. Je vais examiner à nouveau notre implémentation des signatures HTTP dans le courant de la journée ou demain, dans le contexte de l’examen du fetch autorisé de Mastodon. Peut-être ont-ils modifié leur gestion des signatures, ou devons-nous ajuster notre gestion.

Parce que je pensais (au niveau de l’imagination, pas des faits) que si j’avais les signatures activées sur Discourse et désactivées sur Mastodon, les messages iraient de Discourse à Mastodon (parce que l’instance n’utilise pas les signatures HTTP), mais pas de Mastodon à Discourse (parce que le forum veut des signatures HTTP). Mais ce qui s’est passé était totalement le contraire.

Mais l’acteur de Mastodon (mon compte) est connecté à mon utilisateur Discourse, et je suis un administrateur — cela peut-il signifier quelque chose ?

Quoi qu’il en soit, quand les deux n’utilisent pas la signature HTTP, tout fonctionne comme prévu. Ça me convient, mais vous, en tant que développeur, c’est peut-être une autre histoire :smirking_face:

Je ne suis pas sûr des avantages concrets et solides que procure la signature HTTP. À un moment donné, il n’y a pas si longtemps, Pixelfed a eu des problèmes avec Mastodon lorsque les signatures étaient utilisées. Et nous avons aussi un troisième acteur — Wordpress.

Enfin, je suis hors sujet maintenant.

1 « J'aime »

Ce compte devrait être découvrable une fois que cela sera fusionné, puis déployé sur votre serveur.

3 « J'aime »

@Jagster Toutes vos réponses s’afficheront également correctement sur Mastodon une fois cela fusionné.

(Mastodon a ajusté certains traitements de leur côté)

4 « J'aime »

C’est corrigé maintenant @tvavrda. Désolé pour ça, j’ai manqué une étape dans le processus.

2 « J'aime »

Essayer de suivre un compte peertube dans une catégorie mais cela ne dépasse pas le statut en attente.

Voici ce qu’il y a dans les journaux :

La requête POST vers https://spectra.video/accounts/spoilerdiacre/inbox a échoué : Expected([200, 201, 202]) <=> Actual(403 Forbidden)
https://community.derpandchill.com/ap/actor/ca233d6f9d47cde558877fb7609a6b3a n'a pas pu être livré à https://spectra.video/accounts/spoilerdiacre/inbox

J’ai essayé plusieurs fois. Je sais qu’ils sont différents, mais ce serait bien de publier automatiquement des vidéos sur ma communauté.

Merci pour le rapport, je vais enquêter plus en détail plus tard cette semaine.

À propos de la fédération entre Discourse et Mastodon. Il y a quelques points que je ne comprends pas, que je ne peux pas ou/et que j’attends trop. J’ai mis quelques liens. Le contenu est en finnois, mais le contenu n’est pas important je suppose.

Acteurs du forum et boost

Si je comprends bien, un acteur de catégorie fédère un sujet en le boostant, car l’utilisateur réel est un acteur, mais les choses ne fonctionnent pas comme ça, pas encore en tout cas. Donc, le boost est la seule façon de fédérer ?
Mais cela crée une situation où un utilisateur de Mastodon le voit comme un sujet boosté et l’expéditeur d’origine est, par exemple, mon @Jagster@foorumi.katiska.eu. Mais ils ne suivent jamais le compte qui booste, mais celui d’origine, comme mon compte personnel du forum — mais ils ne le peuvent pas, car ils voient une demande d’approbation, et je ne peux pas le faire. Donc, ils ne suivent jamais personne.

Article vs. Note

Je ne comprends pas ce que je devrais attendre, mais je pense que ceux-ci fonctionnent à l’inverse.
Si j’utilise le formulaire Note, Discourse fédérera le premier message tel quel. Comme ceci : Sokeriton kofeiini voi olla terveellistä - Ihminen, luonto & maailma - Katiskan foorumi (et comme d’habitude les liens ActivityPub etc. trouvent comme d’habitude ; au fait, j’aime cette nouvelle façon de le montrer, même si je ne l’utilise pas totalement)
Celui-ci affiche “Lire la suite” mais cliquer dessus ouvre le contenu dans Mastodon.

Celui-ci est un Article : Onko koiran peitsaaminen aina merkki ongelmasta? - Koiramaailma - Katiskan foorumi
Il affiche uniquement le titre et des liens vers ce sujet. Donc, la lecture dans Mastodon est impossible.

edit : désolé pour le désordre après l’édition, mais je viens de réaliser que ce type d’article était montré comme venant de mon acteur de forum, pas comme boosté par l’acteur de catégorie. Il le fait à chaque fois ; deux choses différentes : l’original et le boost :man_facepalming: C’était sympa, cependant. Mais suivre mon acteur de forum est toujours impossible à cause de l’approbation ; il agit comme un compte verrouillé.

J’ai essayé de lire ce (méga)sujet, et j’ai aussi dérangé ask.discourse.com. Est-ce que la capacité d’afficher un article complet est faite exactement en utilisant des liens, sans afficher le contenu lui-même ? Si oui, c’est inutile pour Mastodon, car il peut aussi afficher des contenus plus longs, et j’utiliserai la note au lieu de l’article.

Fédération de la discussion

Quand j’ai fédéré un sujet, et que quelqu’un commente là-bas, cela s’affiche sous ce sujet très bien. Mais si je commente ce sujet sur le forum, cela sera fédéré, mais personne ne le verra comme un commentaire de ce sujet (ou fil de discussion dans Mastodon), car il a été envoyé comme un boost par l’acteur de catégorie ?
Est-ce une situation où l’application Mastodon (officielle) indique que peut-être tous les commentaires ne sont pas sur cette instance, et qu’il faut ouvrir l’original — et personne ne le fait jamais.

Ceci est un sujet où j’ai eu deux discussions indépendantes où le forum voyait tout, mais Mastodon ne connaissait pas les commentaires écrits sur le forum : Pikkulasten ruuat? - Retkeily & Melonta - Katiskan foorumi

Edit ce sujet a environ 5 jours au moment de la rédaction, et il a été boosté et publié par l’acteur de catégorie, pas par mon utilisateur de forum. Quelque chose a-t-il changé entre alors et maintenant (oui, je reconstruis presque tous les jours).

1 « J'aime »

Ce n’est pas le seul moyen, mais c’est le moyen principal utilisé par les plateformes de type forum pour fédérer des groupes de sujets/fils (c’est-à-dire avec une étiquette ou une catégorie particulière). Le processus est décrit dans quelque chose appelé FEP-1b12 que nous suivons, et sur lequel nous avons travaillé avec d’autres implémenteurs.

Désolé, je ne comprends pas bien quel est le problème ici. Pourriez-vous essayer de reformuler cela ?

La raison pour laquelle cela se produit est que Mastodon a arrêté de convertir le contenu des Articles et affiche simplement un lien vers le contenu original. Compte tenu de la montée en puissance des forums dans le fediverse, par exemple nous !, il est peut-être temps de soumettre une nouvelle demande d’extraction à Mastodon pour rétablir ce support.

Oui, il y a eu quelques changements à cet égard récemment, car Mastodon a apporté diverses modifications de son côté. Il y aura probablement d’autres changements à venir à mesure que nous chercherons à affiner l’approche ici. Si vous pouviez présenter des exemples spécifiques de choses qui ne répondent pas à vos attentes, par exemple, Message 1 (Discourse), Réponse 1 (Mastodon), Réponse 2 (Discourse) etc., ou quelque chose de similaire, ce serait utile.

1 « J'aime »

Je n’ai pas trop d’attentes, mais j’ai quelques souhaits :joy:. Tout le reste est maintenant clair, sauf ce truc de boost/écrivain. Je n’aurai peut-être plus de problème.

Je parle de la façon dont cela s’affiche dans Mastodon.

  • boosté par l’acteur de la catégorie
  • l’original est mon utilisateur du forum

Quand j’ai cliqué sur mon acteur du forum, cela a montré ceci (capture d’écran de l’application Mona, mais le PWA officiel a montré la même chose, mais c’est comme ça)

Cette icône rouge est une demande de suivi, comme si c’était un profil verrouillé.

Ensuite, j’ai reconstruit.

Maintenant, le PWA officiel montre ce qu’il faut :

Mais Mona montre toujours cette icône rouge.

Pour une raison quelconque, je, ou quiconque d’autre, ne pouvais pas suivre mon acteur du forum à cause de cela. Mais maintenant, c’est résolu (un étrange problème entre deux systèmes :man_shrugging:). Et l’application Mastodon utilisée maintenant ne met pas à jour son contenu — mais ce n’est pas votre problème du tout.

Ce post était donc seulement informatif montrant… quelque chose :joy:

1 « J'aime »

Une petite demande de fonctionnalité cosmétique : pourrions-nous avoir un indicateur graphique pour montrer quand un message provient d’un acteur ActivityPub ? Tout comme nous voyons une icône d’enveloppe lorsque quelqu’un utilise un e-mail.

La raison en est que mes utilisateurs sont confus car ils ne voient pas la différence entre les utilisateurs du forum local et les utilisateurs de Mastodon.

Pourquoi devraient-ils le savoir ? Je ne sais pas. Les gens agissent simplement ainsi et j’aime les calmer. Et nous indiquons également les e-mails, ce qui n’est pas nécessaire non plus et n’est pas un détail important du tout.

Il y a un indicateur lorsqu’un message provient d’un acteur distant, c’est une icône AP bleue, exactement au même endroit que l’icône de courrier, à côté de la date du message.

Ceci est pour les réponses, pour l’OP, la même icône en bleu plus de détails sont affichés juste en dessous de la carte du sujet.

1 « J'aime »

Maintenant que vous l’avez dit, je vois la différence, à peine :joy:

Vous souvenez-vous du CSS pour changer plus clairement l’une ou l’autre couleur ?

Édition

Changer ces deux couleurs pourrait être plus facile, mais comme mon profil l’indique, je ne suis qu’un autre copieur-colleur. J’ai donc pris cela de la source.

Comme je n’ai aucune idée de ce que sont toutes ces tertiaires, etc. dans le monde réel, j’ai utilisé des couleurs web de base.

.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 « J'aime »

MODIFICATION

Le problème suivant est lié à l’utilisateur @a.gup.pe. Toutes les catégories fédérées trouvent l’utilisateur @koirat@a.gup.pe et le suivent en affichant le statut en attente. Changer de page et revenir en arrière ne montre rien, le suivi a disparu.

Les catégories peuvent cependant suivre de vrais humains.

Cet acteur est de facto un bot, et Discourse ne peut pas suivre les bots — mais à ma connaissance, il ne s’identifie pas comme un bot. Et même si le problème était le fait d’être un bot (est-ce même un mot :flushed_face:), Discourse ne devrait pas me permettre de le suivre en premier lieu (sauf si Discourse ne le sait pas à ce moment-là). Quoi qu’il en soit, il ne devrait pas arrêter le suivi sans me le dire. Ou l’a-t-il fait… Je n’ai pas vérifié les logs, c’est ma faute.

MODIFICATION 2

C’est tout ce que j’ai trouvé.

échec de la livraison à https://a.gup.pe/u/koirat/inbox
[Discourse Activity Pub] https://foorumi.katiska.eu/ap/actor/b37cda0cddecb02465691872595307dd a échoué à livrer à 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-----
     (Ce n'est pas pertinent, je suppose. Ça prend juste de la place)
      -----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 trouve cet utilisateur a.gup.pe, donc ce ne peut pas être la raison.


Est-ce un cas extrême, ou est-ce que j’essaie encore de faire quelque chose d’étrange ?

Discourse ne peut pas suivre les listes Mastodon (et celles-ci ont aussi leurs propres problèmes dans Mastodon). J’ai donc essayé le “pseudo utilisateur” a.gup.pe à la place.

J’ai créé @koirat@a.gup.pe en suivant le même utilisateur sur mon instance — il collectera les toots où le tag #koirat est utilisé (chiens en finnois, soit dit en passant). Cela s’est bien passé.

Ensuite, j’ai envoyé un message depuis Mastodon et le tag ainsi que l’utilisateur ont été mentionnés. Il est apparu dans la liste, qui suivait l’utilisateur guppe.

Dans mon Discourse, j’ai demandé à la catégorie X de suivre l’utilisateur @koirat@a.gup.pe. J’ai une autre catégorie Y qui suit mon acteur @jagster@kvarkki.nexus, elle était en statut en attente. J’attendais donc de recevoir ce message deux fois, une fois de moi et une fois via guppe (oh, bon sang, est-ce que c’est ça le problème :thinking:).

Le message envoyé par mon acteur a été publié dans la catégorie Y, comme prévu. La catégorie X n’a rien reçu de l’acteur guppe.

Lorsque j’ai ouvert la fédération de la catégorie X, elle ne suivait plus @koirat@a.gup.pe.

Alors, quelles sont vos hypothèses :

  • @a.gup.pe fonctionne d’une manière différente et Discourse ne peut pas le comprendre
  • J’ai essayé de publier deux sujets identiques depuis Mastodon (cela, je peux facilement le tester, cela prendra quelques instants)

Ce n’est pas un problème purement académique, car cela résoudrait les problèmes de listes de Mastodon.

La raison pour laquelle cela ne fonctionne pas est que lorsque Discourse essaie d’envoyer un Follow à a.gup.pe/u/koirat/inbox, il reçoit une erreur interne du serveur 500 en réponse.

HTTP/1.1 500 Internal Server Error\r\n

En d’autres termes, il y a un bug dans Guppe.

Je noterais que l’approche collective du fediverse pour les groupes est actuellement en quelque sorte en évolution. J’en discute, ainsi que de quelques autres problèmes connexes, actuellement avec des personnes de NodeBB, Wordpress, Mastodon et d’autres. Voir par exemple :

L’autre problème auquel Guppe sera confronté est que Mastodon lui-même travaille sur une fonctionnalité de « Groupe » depuis un certain temps, ce qui pourrait entrer en conflit avec l’approche de Guppe.

4 « J'aime »