Federation support for Discourse

Une mise à jour ici. Pavilion et CDCK (Discourse.org) discutent de la création d’un plugin ActivityPub pour Discourse. Après quelques discussions, nous sommes arrivés à la spécification ci-dessous. Tous les commentaires ou suggestions sont les bienvenus avant que nous ne la finalisions. Notez que

  • La prise en charge du contenu entrant (par exemple, les publications sur Mastodon, etc. importées dans Discourse) est intentionnellement exclue. Il sera possible d’ajouter cela dans une version ultérieure.

  • La prise en charge du suivi des utilisateurs (par opposition aux catégories) est également intentionnellement exclue. Il serait également possible d’ajouter cela dans une version ultérieure.

  • Des parties substantielles de la spécification suivent l’approche adoptée par Lemmy.

  • Pavilion construira le plugin MVP (je vais y travailler), et CDCK le possédera et l’hébergera (c’est-à-dire qu’il s’agira d’un plugin CDCK, pas d’un plugin Pavilion).

Vue d’ensemble

Un plugin ActivityPub (AP) pour Discourse.

L’objectif du plugin est une implémentation MVP des spécifications ActivityPub, ActivityVocab et ActivityStreams dans Discourse avec une intégration démontrée de la fonctionnalité MVP pour une plateforme conforme à l’AP, à savoir Mastodon. Dans la mesure du possible, l’implémentation sera conçue pour prendre en charge davantage les protocoles et toute extension.

Cette spécification concerne l’activation de la prise en charge de l’AP sur une base par catégorie, où seule la première publication de chaque sujet dans une catégorie activée pour l’AP est fédérée (“première publication uniquement”).

Utilisateurs

L’utilisation du plugin sera documentée de manière exhaustive sur meta dans un sujet de plugin.

Utilisateur normal

  1. S’abonne à (également appelé “suit”) une catégorie Discourse activée pour la fédération (FDC) sur Mastodon (ou tout autre service fediverse) en utilisant le pseudonyme de la catégorie, par exemple @announcements@meta.discourse.org.

  2. Voit un extrait de la première publication de tous les sujets FDC (publiés après leur abonnement) dans son flux Mastodon, chacun avec un lien vers le sujet associé, par exemple “Discuter sur notre forum”.

  3. Toute action liée à la publication dans Mastodon n’apparaît pas dans Discourse.

  4. Toute action liée à la publication dans Discourse n’apparaît pas dans Mastodon.

  5. Les extraits de publications fédérées peuvent être contrôlés par l’auteur de la publication à l’aide d’une balise similaire à celle utilisée pour contrôler les extraits de sujets, par exemple <div>{text}</div>

Administrateur

  1. Active la fédération sur une base par catégorie à l’aide d’un paramètre de catégorie. La fédération ne peut être activée que dans les catégories visibles par “tout le monde” sur les instances publiques.

  2. Définit le nom d’utilisateur fédéré de la catégorie via l’interface de paramètres de catégorie (ne peut pas être modifié).

  3. Définit des listes d’autorisation et de refus de domaines via les paramètres du site à partir desquels l’activité est automatiquement acceptée ou rejetée.

  4. Définit une “liste de blocage” de noms d’utilisateur fédérés pour faire partie d’un objet(s) de blocage dans la boîte d’envoi du serveur.

  5. Définit la longueur maximale des caractères d’une note fédérée à l’aide d’un paramètre de site, c’est-à-dire activitypub_note_excerpt_maxlength.

  6. Définit le texte associé au lien inclus dans la première publication d’un sujet Discourse fédéré dans “Personnaliser > Texte”.

  7. Définit si le lien de retour (et le texte) vers le forum est inclus dans les publications fédérées sur une base par catégorie.

  8. Ajoute une paire clé via les paramètres du site pour signer le contenu fédéré.

Technique

  1. Le plugin inclura des tests complets (tests unitaires / d’intégration et tests js).

  2. La catégorie est un Acteur ActivityPub automatisé au sein de Discourse (en tant que Groupe de type Acteur). Le preferredUsername fédéré est défini par l’administrateur lors de l’activation de la fédération et stocké dans un champ personnalisé de catégorie. Le nom fédéré (alias nom d’affichage) est le full_name de la catégorie.

  3. Les utilisateurs sont des Acteurs dans le contenu fédéré par l’Acteur de catégorie. Le preferredUsername fédéré est le nom d’utilisateur Discourse de l’utilisateur au moment de la fédération. Le preferredUsername d’un utilisateur est stocké dans un champ personnalisé d’utilisateur au cas où l’utilisateur changerait son nom d’utilisateur Discourse. Le nom fédéré (alias nom d’affichage) est le nom d’utilisateur Discourse.

  4. En général, les objets ActivityPub seront associés à leurs objets Discourse équivalents à l’aide de champs personnalisés le cas échéant (par exemple, identifiants d’objet ou d’acteur), et de nouvelles tables le cas échéant (par exemple, boîte de réception et boîte d’envoi).

  5. L’activité ActivityPub principale à implémenter est Suivre et les activités et modèles associés requis pour l’implémenter, c’est-à-dire la boîte de réception, la boîte d’envoi et les Actions et Collections associées requises.

  6. Les publications Discourse seraient fédérées en tant que Notes ActivityStream, avec le contenu en HTML.

  7. L’authentification sera gérée à l’aide de signatures HTTP, voir ici et ici. Toutes les autres Considérations de sécurité dans la spécification ActivityPub seront traitées de manière appropriée.

  8. Les points de terminaison de fédération seront protégés comme il convient à la spécification, c’est-à-dire que redirect_to_login_if_required sera utilisé dans les contrôleurs, et que le gardien sera ajouté pour la permission que tout le monde puisse voir la catégorie.

34 « J'aime »