Plugin ActivityPub

|||
-|-|-|
:discourse2: | Résumé | Discourse ActivityPub vous permet de publier des messages Discourse via ActivityPub afin qu’ils puissent être lus sur des services qui prennent en charge ActivityPub tels que Mastodon.
:hammer_and_wrench: | Lien vers le dépôt | GitHub - discourse/discourse-activity-pub: Adds ActivityPub support to Discourse.
:open_book: | Guide d’installation | Comment installer des plugins dans Discourse

Si vous ne connaissez pas ActivityPub, commencez par regarder cette courte vidéo :

Lorsque vous êtes prêt à commencer la configuration du plugin, consultez nos sujets activitypub Documentation > Integrations :

65 « J'aime »

Merci pour votre travail ici ! J’ai vraiment hâte de mettre cela en service, et merci de l’avoir rendu disponible pour les tests, afin que ceux d’entre nous qui ont diverses configurations puissent contribuer au moins aux tests dans un ensemble plus large de scénarios.

En réfléchissant à quand activer cela pour mon site, j’essaie de réfléchir à ce que pourraient être les « portes à sens unique ».

Sous-catégories

J’ai 8 catégories de niveau supérieur, mais en plus j’ai 21 sous-catégories publiques. Avoir à suivre 29 acteurs pour suivre toute l’activité publique du site semble beaucoup. De plus, cela pourrait être une surprise pour les utilisateurs que suivre une catégorie ne suive pas les sous-catégories.

Si je pouvais sélectionner une option dans les paramètres ActivityPub de la catégorie pour « fédérer également les sous-catégories publiques », je le ferais. La décision de fédérer séparément les sous-catégories semble être une porte principalement à sens unique du point de vue de l’utilisateur, je pense. Donc, si vous pouviez envisager une option « fédérer également les sous-catégories », cela pourrait éclairer mes projets. Notre barre latérale par défaut n’affiche que les catégories de niveau supérieur, et le comportement par défaut de Discourse lors de leur consultation regroupe tout le contenu de niveau supérieur et de sous-catégorie, ce qui semble raisonnablement cohérent avec les attentes de Discourse.

Fédérer toutes les choses !

Je pense qu’il pourrait être intéressant d’ajouter également un paramètre à l’échelle du site pour un acteur ActivityPub qui fédère tous les messages publics d’un site. Je l’utiliserais moi-même. Mais je ne vois pas cela comme une porte à sens unique — je configurerais la fédération des catégories dès qu’elle serait prête, même si plus tard j’ajoutais un acteur « all@ » pour tout fédérer.

Limitations de modification

L’une des choses qui n’est pas évidente dans votre publication est qu’elle peut être interprétée comme si seule la section littérale [note]...[/note] ne pouvait pas être modifiée. Pour les autres ici, ce que cela signifie réellement, c’est que si vous fédérez, la modification est actuellement désactivée sur tous les messages dès qu’ils sont fédérés (sauf pour les messages avec une section littérale [note]...[/note]); ce message s’affiche uniquement lorsque vous essayez d’ enregistrer votre modification :

Mon site permet intentionnellement aux utilisateurs suffisamment fiables de modifier indéfiniment, je ne peux donc pas activer cela sans la possibilité de désactiver ce contrôle (ou que le contrôle soit supprimé car les modifications sont fédérées). À titre d’exemple général applicable au-delà de tels sites de confiance, toute catégorie avec des messages en mode wiki sera rompue en configurant la fédération pour cette catégorie.

J’ai essayé de supprimer un message fédéré que j’avais transformé en wiki, et j’ai obtenu ceci :

Cependant, le message a été supprimé et la suppression a été fédérée.

Personnalité

Il serait agréable de fournir une image de profil pour chaque acteur désigné. Dans Mastodon, je ne vois que l’image du pachyderme gris pour chaque acteur de catégorie, et j’aimerais ajouter un peu de personnalité ici. :smiling_face:

Journaux d’erreurs

J’ai rencontré deux types d’erreurs dans mes journaux du plugin activitypub jusqu’à présent :

Message (3 copies signalées)

NoMethodError (undefined method `ap_type' for nil:NilClass)
(eval):7:in `_fast_attributes'
app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
app/controllers/application_controller.rb:418:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:367:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:18:in `object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:18:in `_object'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/activity_serializer.rb:9:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:50:in `json'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `map'
plugins/discourse-activity-pub/app/serializers/discourse_activity_pub/ap/collection/ordered_collection_serializer.rb:7:in `ordered_items'
(eval):7:in `_fast_attributes'
Message

Job exception: undefined method `model' for #<DiscourseActivityPubActivity id: 2, ap_id: "https://social.makerforums.info/cf2e1e8d-83e3-447e...", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 3, object_id: "1", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 02:23:13.798564000 +0000", updated_at: "2023-06-01 02:23:13.798564000 +0000">

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activemodel-7.0.4.3/lib/active_model/attribute_methods.rb:458:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/app/models/discourse_activity_pub_activity.rb:79:in `after_deliver'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:42:in `perform_request'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:13:in `execute'
/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform'
/var/www/discourse/app/jobs/base.rb:232:in `each'
/var/www/discourse/app/jobs/base.rb:232:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.9/lib/sidekiq/processor.rb:202:in `execute_job'

Merci encore pour votre travail sur ce sujet !

8 « J'aime »

Je suis heureux de dire que le SocialHub l’exécute déjà :

… tap, tap, tap…

Il aurait dû apparaître sur le Fediverse maintenant… En regardant les logs…

Oh, il y a des problèmes avec la première tentative de suivre un acteur :

  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 2, ap_id: "https://ps.s10y.eu/820e6bf2-ec02-49f8-ab5e-e3cefbb…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 4, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:30:16.131136000 +0000", updated_at: "2023-06-01 13:30:16.131136000 +0000"\u003e`
  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 8, ap_id: "https://mastodon.social/ce62fd77-fe03-4060-a951-79…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 8, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:39:14.512966000 +0000", updated_at: "2023-06-01 13:39:14.512966000 +0000"\u003e`
  • Job exception: undefined method model’ for #\u003cDiscourseActivityPubActivity id: 6, ap_id: "https://social.coop/4236c87a-0d22-402d-8546-e37a21…", ap_key: nil, ap_type: "Follow", local: nil, actor_id: 6, object_id: "2", object_type: "DiscourseActivityPubActor", summary: nil, published_at: nil, created_at: "2023-06-01 13:38:54.493118000 +0000", updated_at: "2023-06-01 13:38:54.493118000 +0000"\u003e`
Voici la trace de la dernière
activemodel-7.0.4.3/lib/active_model/attribute_methods.rb:458:in `method_missing'

/var/www/discourse/plugins/discourse-activity-pub/app/models/discourse_activity_pub_activity.rb:79:in `after_deliver'

/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:42:in `perform_request'

/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:13:in `execute'

/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'

rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform'

/var/www/discourse/app/jobs/base.rb:232:in `each'

/var/www/discourse/app/jobs/base.rb:232:in `perform'

sidekiq-6.5.9/lib/sidekiq/processor.rb:202:in `execute_job'

sidekiq-6.5.9/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'

/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'

sidekiq-6.5.9/lib/sidekiq/middleware/chain.rb:182:in `invoke'

sidekiq-6.5.9/lib/sidekiq/processor.rb:169:in `block in process'

sidekiq-6.5.9/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_retry.rb:113:in `local'

sidekiq-6.5.9/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'

sidekiq-6.5.9/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/processor.rb:263:in `stats'

sidekiq-6.5.9/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_logger.rb:13:in `call'

sidekiq-6.5.9/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_retry.rb:80:in `global'

sidekiq-6.5.9/lib/sidekiq/processor.rb:124:in `block in dispatch'

sidekiq-6.5.9/lib/sidekiq/job_logger.rb:39:in `prepare'

sidekiq-6.5.9/lib/sidekiq/processor.rb:123:in `dispatch'

sidekiq-6.5.9/lib/sidekiq/processor.rb:168:in `process'

sidekiq-6.5.9/lib/sidekiq/processor.rb:78:in `process_one'

sidekiq-6.5.9/lib/sidekiq/processor.rb:68:in `run'

sidekiq-6.5.9/lib/sidekiq/component.rb:8:in `watchdog'

sidekiq-6.5.9/lib/sidekiq/component.rb:17:in `block in safe_thread'

La Note ne semble pas apparaître dans mon flux :'(\n\n\n(n’hésitez pas à déplacer ce message à un endroit plus approprié)

8 « J'aime »

À long terme, je suis d’accord, cela devrait être spécifique à chaque acteur et configurable. Mais pour le moment, le logo du site devrait être récupéré. C’est le cas pour moi pour @feature@meta.discourse.org :

4 « J'aime »

Ok, c’était probablement lié à l’une des erreurs que j’ai vues, alors. Le logo du site a beaucoup de sens pour moi.

En y réfléchissant… S’il y avait une possibilité d’utiliser la couleur de la catégorie là-dedans, ce serait génial, mais je ne sais pas s’il y aurait de la place pour cela.

4 « J'aime »

J’ai réessayé et…

Partiellement fonctionnel : la note a été raccourcie un peu trop (71 caractères) par rapport à l’original :

Nous l’attendions : grâce à Angus McLeod et à l’équipe pavilion, ainsi qu’à CDCK, Inc., la société derrière #Discourse, le #SocialHub est maintenant fédéré ! Vous pouvez suivre @fediverse@socialhub.activitypub.rocks pour les annonces générales, et @feps@socialhub.activitypub.rocks pour les Fediverse Enhancement Proposals.
:hugs:

4 « J'aime »

Recommandation générale :

Réfléchissez-y quelques jours avant d’activer l’intégration Activitypub.
N’oubliez pas que ces comptes seront répertoriés pour toujours dans le fediverse des réseaux sociaux et peuvent créer de la confusion si vous réalisez que le nom du compte/de la catégorie doit être modifié après coup. :heart:

2 « J'aime »

Je pense qu’à long terme, il serait possible d’implémenter en plus le déplacement de compte pour renommer l’acteur pour une catégorie. C’est juste plus de travail qui doit avoir de la valeur pour quelqu’un prêt à faire le travail, donc je doute que ce soit une chose à court terme. :smiling_face: Au moins, j’espère que cela viendra plus tard que d’autres travaux plus précieux ! :grin:
Cela n’invalide pas du tout votre point.

3 « J'aime »

Merci pour vos commentaires à tous :slight_smile:

@hellekin Cela permettra de résoudre les exceptions que vous signaliez. @mcdanlj Cela permettra également de résoudre la deuxième exception que vous avez signalée (même problème).

@mcdanlj Le premier problème que vous avez signalé est un peu plus étrange. À quelle fréquence le rencontrez-vous ? Pourriez-vous partager plus de détails ?

Merci pour vos commentaires à ce sujet, nous en tiendrons certainement compte dans la phase 2 du travail :+1:

Je pense que cela ne se produira probablement pas dans la phase 2, mais c’est noté :+1:

La modification n’est désactivée que sur le contenu du message qui constitue la Note. Si vous n’utilisez pas les balises Note, il s’agit des 500 premiers caractères, ou de ce que vous avez défini pour activity pub note excerpt maxlength. L’une des choses que j’envisage absolument pour la phase 2 est d’exiger des balises [note][/note] pour une Note, car je peux voir que cela crée de la confusion.

Vous pouvez résoudre ce problème en utilisant les balises [note][/note] pour séparer la Note du reste du contenu.

Noté ! Nous n’avons pas explicitement testé cela avec des messages wiki. Je n’ai pas encore réussi à reproduire votre problème de suppression de messages wiki. Pouvez-vous le reproduire de manière fiable ? J’ai ajouté quelques spécifications dans cette PR qui passent toutes pour ce scénario, mais je tiens à résoudre ce problème.

L’analyse de l’extrait est actuellement gérée par le même système que celui utilisé pour l’analyse des extraits de sujet dans Discourse (aux fins de la liste des sujets), ce qui explique probablement pourquoi une bonne partie a été coupée (les extraits de la liste des sujets l’auraient également été). Je pense que nous devrons peut-être utiliser un analyseur distinct, car je peux prévoir que cela créera quelques problèmes. Tenez bon pour celui-ci ; il sera certainement résolu dans la phase 2.

Gardez à l’esprit que vous pouvez modifier le nom d’affichage autant que vous le souhaitez et que la limitation de la modification du nom d’utilisateur n’est pas propre à ce plugin. Donc, bien que ce que vous dites soit vrai, c’est vrai pour une bonne partie du fediverse.

De plus, je n’ai pas inclus le nom d’utilisateur dans l’ID de l’acteur, en partie pour permettre la possibilité d’ajouter la possibilité de modifier le nom d’utilisateur à l’avenir.

Les données ActivityPub du plugin sont abstraites des données de Discourse. Il n’y a aucune limitation inhérente à la modification du modèle Discourse (c’est-à-dire de la catégorie) auquel un acteur est associé. Vous pourriez même potentiellement associer l’acteur à un type différent de modèle Discourse à l’avenir, c’est-à-dire associer un acteur que vous avez créé pour une catégorie à un utilisateur à la place (la relation entre les acteurs et les modèles Discourse est polymorphique). Je ne dis pas que cela sera explicitement ajouté en tant que fonctionnalités, mais plutôt qu’il n’y a pas de limitations strictes à cet égard.

En général, oui, il est utile de réfléchir aux catégories que vous souhaitez en tant qu’acteurs, mais dans l’ensemble, cette implémentation a un degré de flexibilité relativement élevé, donc votre degré de préoccupation devrait être relatif à ce contexte. J’ai expliqué un peu plus la nature du flux de données dans le plugin, ce qui élucide davantage ce point, ici

Merci encore à tous ! C’est formidable d’avoir des utilisateurs engagés.

5 « J'aime »

Je pense que c’était associé à la suppression de messages, puisque j’ai supprimé trois messages de test et qu’il y a eu trois occurrences de l’erreur.

Ce serait absolument inutilisable pour mon site. Je n’essaie pas d’utiliser Discourse comme un moyen plus difficile d’écrire des messages sur le fediverse que de simplement les écrire dans Mastodon. Forcer toute ma communauté à commencer à utiliser les annotations bbcode [note]...[/note], y compris les nouveaux utilisateurs du site qui cherchent de l’aide, serait un non-starter.

Non, je ne peux absolument pas. Il ne s’agit pas de moi. Il s’agit des utilisateurs de mon site, qui sont des utilisateurs de Discourse, pas des utilisateurs de discourse/discourse-activity-pub.git.

C’est juste une édition.

La fédération des modifications est normale. D’après ce que je comprends, la plupart des implémentations ActivityPub largement utilisées permettent les modifications depuis longtemps. Mastodon était le seul à faire exception parmi les implémentations populaires jusqu’à l’année dernière, où ils ont finalement cédé et autorisé les modifications.

Je reconnais que les modifications ne faisaient pas partie de la version MVP, mais tant qu’elle ne fédérera pas les modifications ou ne me donnera pas la possibilité de désactiver le caractère non modifiable de la note, je ne pourrai pas l’activer pour mon site. Je ne sais pas si mon cas d’utilisation est étrange ou normal, bien sûr.

Mon propre objectif en utilisant le plugin ActivityPub est de faciliter le suivi et le partage du contenu tel qu’il est créé par les membres de ma communauté sur le forum en utilisant Discourse. Il ne s’agit pas d’utiliser Discourse comme un remplacement étrange et non modifiable de Mastodon, uniquement pour les publications. :smiling_face:

Je comprends que vous avez l’intention de supporter à terme la fédération des modifications, puisque le message d’erreur indique “pas encore pris en charge” — est-ce exact ? Dans ce cas, tout cela n’est qu’une limitation temporaire et nos différences d’utilisation ne sont pas importantes. Mais cela me fait me demander si je dois investir des efforts dans la protection des modifications par rapport au support de la fédération des modifications.

J’avais oublié de supprimer le plugin retort de mon site sandbox lorsque je l’ai supprimé de mon site de production. La suppression de retort a résolu à la fois le journal d’erreurs étrange et le message d’erreur étrange. Ma faute !

Cela signifie-t-il qu’avec le plugin tel qu’il est aujourd’hui, nous pourrions utiliser le même acteur pour plusieurs catégories ? Ou que le modèle de données est très flexible et que les détails d’implémentation sont faciles à modifier ?

Pour information, dans mon cas d’utilisation, ma préférence serait de publier l’intégralité sans aucune limitation. Je sais que ce n’est pas ainsi que d’autres pourraient le configurer, mais je pense qu’au final, je réglerais la taille maximale à la même que la taille maximale d’un message sur mon Discourse, qui est… grande ! :smiling_face:

2 « J'aime »

Compris, je vais enquêter plus en détail bientôt.

Compris. Mon commentaire était plutôt que la modification de contenu non-note est en effet possible après publication actuellement. Vous avez raison, cette première version ne sera pas sans problèmes d’UX pour une utilisation générale par n’importe quel utilisateur. Elle prend cependant en charge d’autres utilisations assez bien, par exemple la fédération d’annonces.

Oui, nous ajouterons la prise en charge de la modification du contenu des Notes après publication dans la phase 2. Notez que la modification est actuellement prise en charge avant que la note ne soit publiée. Lorsque vous construisez quelque chose comme ceci, vous devez réduire autant que possible le nombre de pièces mobiles.

Non, pas encore. Pourriez-vous expliquer un peu plus ce que vous entendez par là ? Pensez-vous à un acteur pour l’ensemble du site ou pensez-vous plutôt au problème des sous-catégories ?

Oui, bien que je n’utiliserais pas nécessairement le terme “facile” :wink:

Je suis curieux de savoir où vous prévoyez de fédérer le contenu non restreint ? Question sincère ; je veux mieux comprendre votre point de vue.

2 « J'aime »

J’ai oublié de supprimer ça après avoir découvert que le fait de laisser retort en place était accidentellement la source de l’erreur. :flushed:

Oups.

Suffisamment bon ! :pray:

Je ne m’en soucierai plus, et dans la phase 2, j’aiderai à tester cela.

Je me suis vaguement interrogé sur les deux, mais c’était une question de faible valeur. Je voulais juste savoir jusqu’où je pouvais pousser mes expérimentations sur mon site de staging, et je ne voulais pas essayer des choses qui étaient déjà connues pour être impossibles. :+1:

J’essaierai !

Contexte : Mastodon limite la longueur des publications que les utilisateurs peuvent rédiger, mais pas la longueur des publications qu’il affiche. J’utilise un serveur Mastodon-glitch configuré avec une limite de 2000 caractères ; j’ai vu plusieurs personnes parler de la configuration d’une limite de 31337 caractères (parce que bien sûr). Je vois de longues publications dans mon flux de personnes utilisant pleroma, akkoma, etc.

Nous avons du contenu vraiment intéressant qui apparaît sur Maker Forums (mon discourse) de temps en temps (à mon avis, en tout cas !), et j’aimerais le promouvoir sur le Fediverse en général pour le rendre accessible à un public plus large. Je sais que Mastodon a été catégorique sur le fait que 500 caractères est la longueur idéale pour le microblogging — mais ActivityPub n’est pas limité au microblogging. C’est la fédération, y compris mais pas seulement le microblogging. Lorsque je suis un acteur ActivityPub sur mon compte Mastodon, je ne suis pas limité aux courtes publications. Je peux lire, commenter et relayer des publications plus longues.

Donc, la question “où vous prévoyez de fédérer” est confuse pour moi.

  • Je relayerai le contenu de mon serveur Mastodon-glitch. Les relais n’appliquent pas la limite de caractères qui s’applique à la rédaction de publications, même sur Mastodon standard.
  • Je m’attendrais à ce que les membres de la communauté suivent depuis n’importe quel serveur ActivityPub (en reconnaissant que ce sera plus Mastodon que d’autres pour le moment), et ils n’auront pas tous la même opinion sur la longueur d’une note ActivityPub.

En fin de compte, en tant qu’administrateur du serveur, je ne contrôle pas où ce contenu est fédéré. C’est la décision de chaque abonné. Il ne m’est pas évident de comprendre pourquoi exclure ou fédérer l’intégralité de la publication discourse en tant que note ActivityPub serait la norme, même pour les abonnés sur Mastodon, mais encore plus dans tout le Fediverse.

Je ne suis pas sûr que cela réponde à votre question. Mais je ne suis pas sûr de bien la comprendre non plus. :grin: Je serais heureux d’approfondir si vous le souhaitez.

2 « J'aime »

Pas de soucis ! Heureux que nous ayons couvert les exceptions pour le moment. Faites-nous savoir si vous en voyez d’autres. @hellekin De même, faites-nous savoir si vous constatez d’autres problèmes ou comportements étranges.

Super ! Merci.

Si ! Merci, c’est un contexte utile pour notre planification de la phase 2.

5 « J'aime »

Je suis sur le point de passer à la dernière version. Une chose qui serait utile est de choisir le public : si la publication sera publique ou réservée aux abonnés. Maintenant, c’est la dernière option, donc nous ne pouvons pas la promouvoir, et nous devons suivre le compte avant de recevoir des notifications. J’apprécie cela car cela reste expérimental, mais ce devrait vraiment être une option pour publier publiquement afin que nous puissions faire plus largement la publicité de cette fonctionnalité auprès des Fedizens :slight_smile:

5 « J'aime »

Oui, c’est quelque chose que nous considérerons dans la phase 2 :+1:

6 « J'aime »

Avez-vous une feuille de route publique pour les phases de développement ?

3 « J'aime »

Il n’y a pas de feuille de route publique, mais je vous informerai lorsque nous aurons défini les spécificités. Toutes les suggestions raisonnables sur ce qu’elle devrait contenir sont les bienvenues ! Des exemples de cas d’utilisation spécifiques comme celui de @mcdanlj sont toujours utiles également.

6 « J'aime »

J’ai fait quelques propositions sur le SocialHub qui avaient déjà été faites ici il y a quelque temps…

2 « J'aime »

Je n’en étais pas encore arrivé à ce point dans mes tests depuis un serveur de staging, mais j’aimerais reconnaître que la promotion est également centrale dans mon propre cas d’utilisation.

6 « J'aime »

Gestion du 410 Gone

Mes journaux contiennent beaucoup de (URL modifiée) :

[Discourse Activity Pub] GET request to https://activitypub.example/users/missing-account failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(410 Gone)

Je pense que cela est lié à : La récupération d’objet DOIT répondre avec un code d’état 410 Gone si Tombstone est dans le corps de la réponse, sinon répond avec 404 Not Found (server:object-retrieval:deleted-object:410-status) : le compte a été déplacé vers une autre instance.


Je reçois également quelques :



[Discourse Activity Pub] update_stored_from_json failed to save actor. AR errors: Ap has already been taken. Actor JSON: {@context:[https://www.w3.org/ns/activitystreams,https://w3id.org/security/v1,{@manuallyApprovesFollowers:as:manuallyApprovesFollowers,toot:http://joinmastodon.org/ns#,featured:{@id:toot:featured,@type:@id},featuredTags:{@id:toot:featuredTags,@type:@id},alsoKnownAs:{@id:as:alsoKnownAs,@type:@id},movedTo:{@id:as:movedTo,@type:@id},schema:http://schema.org#,PropertyValue:schema:PropertyValue,value:schema:value,discoverable:toot:discoverable,Device:toot:Device,Ed25519Signature:toot:Ed25519Signature,Ed25519Key:toot:Ed25519Key,Curve25519Key:toot:Curve25519Key,EncryptedMessage:toot:EncryptedMessage,publicKeyBase64:toot:publicKeyBase64,deviceId:toot:deviceId,claim:{@type:@id,@id:toot:claim},fingerprintKey:{@type:@id,@id:toot:fingerprintKey},identityKey:{@type:@id,@id:toot:identityKey},devices:{@type:@id,@id:toot:devices},messageFranking:toot:messageFranking,messageType:toot:messageType,cipherText:toot:cipherText,suspended:toot:suspended}],id:https://mas.to/users/rikvipcode,type:Person,following:https://mas.to/users/rikvipcode/following,followers:https://mas.to/users/rikvipcode/followers,inbox:https://mas.to/users/rikvipcode/inbox,outbox:https://mas.to/users/rikvipcode/outbox,featured:https://mas.to/users/rikvipcode/collections/featured,featuredTags:https://mas.to/users/rikvipcode/collections/tags,preferredUsername:rikvipcode,name:,summary:,url:https://mas.to/@rikvipcode,manuallyApprovesFollowers:false,discoverable:false,published:2023-05-04T00:00:00Z,devices:https://mas.to/users/rikvipcode/collections/devices,suspended:true,publicKey:{id:https://mas.to/users/rikvipcode#main-key,owner:https://mas.to/users/rikvipcode,publicKeyPem:--...


Et

[Discourse Activity Pub] GET request to https://mastodon.social/users/ejovoni46709 failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(410 Gone)
[Discourse Activity Pub] Failed to process https://mastodon.social/users/ejovoni46709: Could not resolve actor
[Discourse Activity Pub] Failed to process https://mastodon.social/users/ejovoni46709#delete: Could not create actor
[Discourse Activity Pub] Failed to process https://mastodon.social/users/epybisezax9438#delete: Could not find object
3 « J'aime »