Eine Aktualisierung hier. Pavilion und CDCK (Discourse.org) diskutieren den Aufbau eines ActivityPub-Plugins für Discourse. Nach einiger Diskussion haben wir uns auf die unten stehende Spezifikation geeinigt. Kommentare oder Vorschläge sind willkommen, bevor wir sie finalisieren. Beachten Sie, dass
-
Die Unterstützung für eingehende Inhalte (z. B. Beiträge auf Mastodon usw., die in Discourse importiert werden) ist absichtlich ausgeschlossen. Es wird möglich sein, dies in einer späteren Version hinzuzufügen.
-
Die Unterstützung für das Folgen von Benutzern (im Gegensatz zu Kategorien) ist ebenfalls absichtlich ausgeschlossen. Es wäre auch möglich, dies in einer späteren Version hinzuzufügen.
-
Wesentliche Teile der Spezifikation folgen dem Ansatz von Lemmy.
-
Pavilion wird das MVP-Plugin bauen (ich werde daran arbeiten), und CDCK wird es besitzen und hosten (d. h. es wird ein CDCK-Plugin und kein Pavilion-Plugin sein).
Übersicht
Ein ActivityPub (AP) Plugin für Discourse.
Das Ziel des Plugins ist eine MVP-Implementierung der Spezifikationen ActivityPub, ActivityVocab und ActivityStreams in Discourse mit einer demonstrierten Integration der MVP-Funktionalität für eine AP-konforme Plattform, nämlich Mastodon. Soweit wie möglich wird die Implementierung so aufgebaut sein, dass sie die weitere Unterstützung der Protokolle und etwaige Erweiterungen ermöglicht.
Diese Spezifikation betrifft die Aktivierung der AP-Unterstützung auf Kategoriebasis, wobei nur der erste Beitrag jedes Themas in einer AP-aktivierten Kategorie föderiert wird („nur erster Beitrag“).
Benutzer
Die Plugin-Nutzung wird auf meta in einem Plugin-Thema umfassend dokumentiert.
Normaler Benutzer
-
Abonniert (auch „folgt“) eine Föderations-fähige Discourse-Kategorie (FDC) auf Mastodon (oder einem anderen Fediverse-Dienst) über den Handle der Kategorie, z. B.
@announcements@meta.discourse.org. -
Sieht einen Auszug des ersten Beitrags aller FDC-Themen (die nach dem Abonnement gepostet wurden) in seinem Mastodon-Feed, jeweils mit einem Link zurück zum zugehörigen Thema, z. B. „Diskutieren Sie in unserem Forum“.
-
Jede Aktion im Zusammenhang mit dem Beitrag in Mastodon erscheint nicht in Discourse.
-
Jede Aktion im Zusammenhang mit dem Beitrag in Discourse erscheint nicht in Mastodon.
-
Auszüge von föderierten Beiträgen können vom Autor des Beitrags mit Markup gesteuert werden, ähnlich dem, das zur Steuerung von Themenauszügen verwendet wird, z. B.
<div>{text}</div>
Administrator
-
Aktiviert die Föderation auf Kategoriebasis über eine Kategorieeinstellung. Die Föderation kann nur in Kategorien aktiviert werden, die für „jeden“ auf öffentlichen Instanzen sichtbar sind.
-
Legt den föderierten Benutzernamen der Kategorie über die Benutzeroberfläche der Kategorieeinstellungen fest (kann nicht geändert werden).
-
Legt Listen von Domains fest, von denen Aktivitäten automatisch akzeptiert oder abgelehnt werden (Allow- und Deny-Listen über Site-Einstellungen).
-
Legt eine „Blockliste“ von föderierten Benutzernamen fest, die Teil eines Block-Objekts im Server-Postausgang sind.
-
Legt die maximale Zeichenlänge einer föderierten Notiz über eine Site-Einstellung fest, z. B.
activitypub_note_excerpt_maxlength. -
Legt den Text fest, der mit dem Link verbunden ist, der im ersten Beitrag eines föderierten Discourse-Themas unter „Anpassen > Text“ enthalten ist.
-
Legt fest, ob der Link zurück (und der Text) zum Forum in föderierten Beiträgen auf Kategoriebasis enthalten ist.
-
Fügt über Site-Einstellungen ein Schlüsselpaar hinzu, um föderierte Inhalte zu signieren.
Technik
-
Das Plugin wird umfassende Tests enthalten (Unit-/Integrationstests und JavaScript-Tests).
-
Die Kategorie ist ein automatisierter ActivityPub Actor innerhalb von Discourse (als Group ActorType). Der föderierte
preferredUsernamewird vom Administrator beim Aktivieren der Föderation festgelegt und in einem benutzerdefinierten Feld der Kategorie gespeichert. Der föderierte Name (auch Anzeigename) ist derfull_nameder Kategorie. -
Benutzer sind Akteure in den Inhalten, die vom Kategorie-Akteur föderiert werden. Der föderierte
preferredUsernameist der Discourse-Benutzername des Benutzers zum Zeitpunkt der Föderation. DerpreferredUsernameeines Benutzers wird in einem benutzerdefinierten Feld gespeichert, falls der Benutzer seinen Discourse-Benutzernamen ändert. Der föderierte Name (auch Anzeigename) ist der Discourse-Name des Benutzers. -
Im Allgemeinen werden ActivityPub-Objekte mit ihren entsprechenden Discourse-Objekten über benutzerdefinierte Felder (z. B. Objekt- oder Akteur-IDs) und neue Tabellen (z. B. Posteingang und Postausgang), wo dies angebracht ist, verknüpft.
-
Die primäre ActivityPub-Aktivität, die implementiert werden soll, ist Follow und die zugehörigen Aktivitäten und Modelle, die zu ihrer Implementierung erforderlich sind, d. h. Posteingang, Postausgang und erforderliche zugehörige Aktionen und Sammlungen.
-
Discourse-Beiträge werden als ActivityStream Notes mit dem Inhalt als HTML föderiert.
-
Die Authentifizierung wird über HTTP-Signaturen gehandhabt, siehe hier und hier. Alle anderen Sicherheitsüberlegungen in der ActivityPub-Spezifikation werden entsprechend berücksichtigt.
-
Föderationsendpunkte werden entsprechend der Spezifikation geschützt, d. h. stellen Sie sicher, dass
redirect_to_login_if_requiredin Controllern verwendet wird, fügen Sie Guardian für die Berechtigung „Jeder kann sehen“ für Kategorien hinzu.