ActivityPub-Plugin

Nun, ein Mastodon-Benutzer wird es im Kontext einer Zeitleiste sehen, und Zeitleisten sind im Allgemeinen begrenzt. Auf Mastodon überschreitet eine vollständige Zeitleiste standardmäßig nicht 400 Beiträge. Wenn Sie sich das Original ansehen, sehen Sie es sowieso in Discourse. Obwohl es theoretisch stimmt, sehe ich nicht, dass dies in der Praxis zu tatsächlicher Verwirrung führt. Sie müssen bereits ein Follower sein, um den Inhalt zu sehen; ein Link zum Original führt Sie zu Discourse, wo die Verwirrung behoben wird.

Nicht perfekt, aber vielleicht eine “am wenigsten schlechte” Option?

Ich nehme an, als Alternative könnten Sie eine Bearbeitung föderieren, die den Beitrag als durch eine Eigentumsübertragung abgelöst kennzeichnet, ähnlich wie der Link “Diskutieren Sie dies in unserem Forum”?

Sicher, ich bestreite nicht, dass es ein Unterschied ist, sondern sage nur, dass es ein akzeptabler Unterschied zu sein scheint, verglichen mit der Blockierung einer nützlichen und genutzten Discourse-Funktion.

Das Löschen des Originals wird Threads im Kontext anderer Plattformen, zu denen Sie föderieren, verwaist lassen, da Sie den Akteur, dem eine Aktivität zugeordnet ist, in einer Bearbeitung nicht ändern können (soweit ich weiß).

Eine Alternative könnte darin bestehen, Bearbeitungen überhaupt nicht mehr zu föderieren, wenn der Beitrag in Discourse einen anderen Autor hat als zum Zeitpunkt der ersten Föderierung. Vielleicht mit einer Warnung? “Das Ändern des Eigentümers deaktiviert die Föderierung für diesen Beitrag. Möchten Sie wirklich fortfahren?”

Ja. So sieht es in Discourse für einen normalen Benutzer aus, der vielleicht nicht weiß, dass er auf das Stiftsymbol klicken und durch die Änderungen gehen kann, um sie zu überprüfen, oder keine Berechtigungen hat. Diese sind meiner Meinung nach in die normale Discourse-Nutzung integriert:

  • Einen Beitrag zu einem Wiki zu machen bedeutet, dass Sie akzeptieren, dass die Bearbeitungen anderer im normalen Gebrauch unter Ihrem eigenen Namen erscheinen.
  • Selbst wenn es kein Wiki ist, können Benutzer mit ausreichenden Rechten Ihren Beitrag in Discourse bearbeiten, abhängig von der Site-Konfiguration.

Aus meiner Sicht ist dies so nah wie möglich an einer Entsprechung, angesichts der Unterschiede im zugrunde liegenden Modell.

Soweit ich das sehe, zeigt “Klicken Sie, um den Beitrag auf der Originalseite anzuzeigen” bereits unterschiedliche Inhalte zwischen Implementierungen, die Fediverse-first sind, selbst wenn man dieses Plugin ignoriert. Unterschiedliche Kommentare sind sichtbar, unterschiedliche Formatierungen, unterschiedliche Handhabung von Artikeln. Daher überrascht es mich nicht, dass einige Unterschiede durch dieses Plugin sichtbar werden; ich denke, es ist unvermeidlich.

(Vielen Dank nochmals für Ihre sorgfältige Berücksichtigung dieser Ideen. Ich erkenne an, dass dies schwierige Grenzfälle sind, ich bin dankbar für die Arbeit, ich gehe nicht davon aus, dass meine Ideen die besten sind, und ich beabsichtige nicht, irgendeine Verpflichtung für diese oder irgendeine Phase der Arbeit daran zu schaffen, oder sogar auf etwas zu antworten, das ich schreibe.)

1 „Gefällt mir“

Ähnlich wie bei der Kategorieänderung denke ich, dass es wirklich auf das Szenario ankommt. Betrachten Sie zum Beispiel

  1. Beitrag 1 wird in Kategorie 1 von Benutzer 1 (Akteur 1) erstellt
  2. Der Autor von Beitrag 1 wird von Benutzer 3 (einem Administrator) 2 Minuten später zu Benutzer 2 (Akteur 2) geändert
  3. Kategorie 1 wird von 400 Akteuren aus 20 Domänen und 5 verschiedenen Softwareplattformen gefolgt, die jeweils leicht unterschiedliche Implementierungen von Timelines und Content Discovery haben.
  4. Innerhalb von 2 Minuten nach der Erstellung von Beitrag 1 werden 2 Notizen mit identischem Inhalt und unterschiedlichen Akteuren an diese 400 Follower gesendet.

Ich denke, das wird wahrscheinlich zu Verwirrung bei einer beträchtlichen Anzahl von Followern führen, ganz zu schweigen davon, dass Benutzer 2 möglicherweise nicht einmal merkt, dass sein Name jetzt mit diesen doppelten Inhalten verbunden ist, die er nicht geschrieben hat, und das über 20 verschiedene Domänen hinweg. Es mag ihm egal sein, wenn Administratoren das auf einer einzelnen Instanz tun, es ist eine Art implizite Zustimmung, wenn man auf dieser Instanz postet. Ich denke jedoch, wir sollten sehr vorsichtig sein, diese implizite Zustimmung auf das gesamte Fediverse auszudehnen, insbesondere unter den unvollkommenen Umständen der Duplizierung des Inhalts. Das Ändern von Beitragsbesitzern ist eine mächtige administrative Funktion, die spezifisch für Discourse ist und implizit an den „Gesellschaftsvertrag“ einer einzelnen Instanz gebunden ist.

Ich denke, die Argumentation für Wikis ist stärker, obwohl ich wieder auf das hinweisen möchte, was Sie bereits angedeutet haben. Wikis sind ein Konzept, das in der normalen Discourse-Nutzung verankert ist. Die Zuordnung der Bearbeitungen von beliebigen Benutzern (nicht nur Mitarbeitern) zum ursprünglichen Autor ist ein Discourse-Konzept ohne Analogon in ActivityPub. Wir sollten vorsichtig sein, dieses Konzept mit den Standardmethoden von ActivityPub auf das gesamte Fediverse auszudehnen. Diese Update-Aktivitäten werden auf vielen verschiedenen Instanzen und Softwareplattformen wie jede andere Update-Aktivität behandelt, dekontextualisiert von ihrem ursprünglichen Wiki-Kontext. Darüber hinaus gibt es, wie Sie auch angedeutet haben, bereits ein potenzielles Problem in dieser Hinsicht mit der Fähigkeit von Mitarbeitern und hoch vertrauenswürdigen Benutzern, die Beiträge anderer zu bearbeiten. Ich denke, diese eingeschränktere Frage bedarf weiterer Überlegung, bevor wir zur Frage der Wikis kommen.

Ich versuche nicht, eine binäre Wahl zwischen Discourse und ActivityPub für diese Funktionen aufzustellen. Was ich sage ist, dass wir sensible Discourse-Funktionalitäten nicht einfach auf das Fediverse abbilden sollten, ohne die Konsequenzen sorgfältig zu durchdenken. Der Standard sollte sein, dass diese sensibleren Funktionen bei ActivityPub-Posts deaktiviert werden, bis wir etwas mehr Vertrauen haben, dass wir nicht eine beträchtliche Anzahl von Benutzern oder Anwendungsfällen schädigen oder überraschen werden.

Persönlich habe ich das Gefühl, dass wir bei beiden noch nicht so weit sind, obwohl mein Bauchgefühl ist, dass die Wiki-Argumentation zu diesem Zeitpunkt mehr Potenzial hat, auch wenn ich noch keine gute Lösung sehe.

8 „Gefällt mir“

Diese beiden Punkte sind jetzt ebenfalls erledigt. Ich habe gerade den PR von @angus zur Identitätsprüfung über OAuth zusammengeführt. Abgesehen von Fehlerbehebungen und Leistungsverbesserungen schließt dies die aktuelle Phase der dem Plugin hinzugefügten Funktionen ab.

Wie es derzeit aussieht, ist das Plugin ziemlich funktionsreich. Um die Hauptfunktionen kurz zusammenzufassen, unterstützt das Plugin:

  • Veröffentlichung von Beiträgen nur für Follower in ActivityPub (Standard ist Öffentlich)
  • Veröffentlichung des ersten Beitrags oder des gesamten Themas (Standard ist der erste Beitrag)
  • Zwei-Wege-Synchronisation bei Verwendung der Veröffentlichung des gesamten Themas, d. h. alle von Discourse erstellten Beiträge in einem Thema werden in ActivityPub veröffentlicht und umgekehrt werden Antworten in ActivityPub in Discourse gepostet
  • Option zur Veröffentlichung von Beiträgen als Notizen (für kürzere Inhalt-Dienste wie Mastodon) oder Artikel (geeigneter für Dienste mit langen Inhalten)
  • Identitätsprüfung

Als Nächstes werden wir an der Feinabstimmung der aktuellen Funktionen und der Verbesserung der Benutzerfreundlichkeit arbeiten. Feedback ist natürlich weiterhin willkommen. Ich bin besonders an Wegen interessiert, wie man normalen Benutzern erklärt, wie das alles funktioniert, das ist keine leichte Aufgabe.

Ich bin ganz auf der gleichen Wellenlänge wie @angus. Unser Ziel ist es, das zu tun, was praktikabel und mit einem angemessenen Aufwand erreichbar ist. Zu diesem Zweck sind wir bereit, zu diesem Zeitpunkt einige reduzierte Funktionalitäten in Discourse zu akzeptieren. Das ist unsere beste Chance, herauszufinden, ob bestimmte Einschränkungen wichtig sind oder nicht (z. B. werden die Plugin-Benutzer oft auf Wiki-ActivityPub-Einschränkungen stoßen?).

6 „Gefällt mir“

Verstehe ich das richtig, dass wir an dem Punkt sind, an dem es sinnvoll ist, die Einschränkungen zu formulieren?

Hallo :slight_smile:

Zuerst einmal vielen Dank für die Entwicklung all dessen.

Dann bin ich sehr daran interessiert, verschiedene ActivityPub-Dienste miteinander zu verbinden, und soweit ich das gelesen habe, geht es hauptsächlich darum, Nachrichten zwischen Discourse und Mastodon hin und her zu senden.

Mir ist bewusst, dass das Protokoll dienstagnostisch ist, aber gibt es eine Art Dokumentation, um beispielsweise verschiedene Discourse-Instanzen zu verbinden oder Nextcloud oder PeerTube usw. zu integrieren?

1 „Gefällt mir“

Wir haben die Änderung von Beitragsautoren und Wikis in ActivityPub-Themen vorerst aus den von mir bereits genannten Gründen deaktiviert (ihre Annahmen funktionieren nicht out-of-the-box mit ActivityPub). Dies sind die einzigen beiden Funktionen, die in ActivityPub-Themen auf diese Weise vorübergehend deaktiviert wurden. Jede andere reduzierte Funktionalität sollte als Problem gemeldet werden.

Dies ist ein ActivityPub-Plugin, das die ActivityPub-Spezifikation genau befolgt, sodass es mit jedem Dienst funktioniert, der dieser Spezifikation folgt, einschließlich aller von Ihnen genannten (und anderer). Mastodon ist die erste ActivityPub-Plattform, mit der wir uns auf die Integration konzentriert haben, da Sie praktisch gesehen die Kompatibilität mit einem Dienst nach dem anderen sicherstellen müssen und es die größte ActivityPub-Plattform ist.

4 „Gefällt mir“

Zweimal versucht unter https://meta.discourse.org/u/rokejulianlockhart/preferences/activity-pub

```json { "errors": ["You are not permitted to view the requested resource."], "error_type": "invalid_access" } ```

Was soll ich tun?

2 „Gefällt mir“

Hallo @rokejulianlockhart, danke für das Feedback. Wie führen Sie den Autorisierungsablauf durch? Klicken Sie im obigen Screenshot auf „Autorisieren“ in einem Browser (welchen Browser?) Oder kopieren/fügen Sie die URLs in irgendeiner Weise ein? Ich frage, weil Sie sie in Ihrem Beitrag haben. Hier ist ein Video des Standardablaufs, der bei mir auf meta.discourse.org funktioniert

Machen Sie etwas anderes als das?

2 „Gefällt mir“

@angus,

  1. rokejulianlockhart@mastodon.social

  2. Sie sind dabei, sich mit dem Benutzernamen „rokejulianlockhart“ bei der Website „mastodon.social“ anzumelden, aber die Website erfordert keine Authentifizierung. Dies könnte ein Versuch sein, Sie zu täuschen.

    Ist „mastodon.social“ die Website, die Sie besuchen möchten?

    Hier klicke ich

    Ja

  3. Log in - Mastodon

    Autorisierung erforderlich
    meta.discourse.org möchte die Berechtigung, auf Ihr Konto zuzugreifen. Es handelt sich um eine Drittanbieteranwendung. Wenn Sie ihr nicht vertrauen, sollten Sie sie nicht autorisieren.
    Berechtigungen überprüfen

    Konten
    Lesezugriff
    Hier klicke ich

    Autorisieren

  4. Dann erscheint die vorherige

    Ist „mastodon.social“ die Website, die Sie besuchen möchten?

    Aufforderung, und ich mache dasselbe.

  5. https://meta.discourse.org/ap/auth/oauth/redirect?code=s2H3Og_3oLTb8cAsYN9Kmgeh8xPySeOaWSp2bdZ2sEE

    1. .JSON

      {"errors":["Sie dürfen die angeforderte Ressource nicht anzeigen."],"error_type":"invalid_access"}
      
    2. Headers

      X-Firefox-Spdy: h2
      content-encoding: gzip
      content-type: application/json; charset=utf-8
      date: Mon, 25 Sep 2023 11:39:30 GMT
      referrer-policy: strict-origin-when-cross-origin
      server: nginx
      vary: Accept-Encoding
      x-content-type-options: nosniff
      x-discourse-route: o_auth/redirect
      x-discourse-username: rokejulianlockhart
      x-download-options: noopen
      x-frame-options: SAMEORIGIN
      x-permitted-cross-domain-policies: none
      x-request-id: 01276bd6-77ea-42ae-8f60-6fa365a70e1f
      x-xss-protection: 0
      
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
      Accept-Encoding: gzip, deflate, br
      Accept-Language: en-GB,en;q=0.7,en-US;q=0.3
      Connection: keep-alive
      Host: meta.discourse.org
      Sec-Fetch-Dest: document
      Sec-Fetch-Mode: navigate
      Sec-Fetch-Site: cross-site
      Sec-Fetch-User: ?1
      Upgrade-Insecure-Requests: 1
      User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0
      

Hallo, nach dem letzten Update scheinen die Benutzerprofile (/u/user) defekt zu sein. Der Benutzername und das Profilbild würden angezeigt werden (plus die Liste der Benutzervergehen oben).

Wir haben unsere Plugin-Liste durchgesehen und jedes einzeln deaktiviert, bis das Problem behoben war. Es funktionierte auch mit aktiviertem Safe Mode. Hier sind einige der Client-Fehler, die wir erhalten würden:

Cannot read properties of null (reading 'getBoundingClientRect')
at Object.offset (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:5104:37)
at e.scrolled (https://amcforum.wiki/assets/discourse-9756bc4a118ac228ac6ac3f2b29c7d4a7d60a9f16ece25de4a772f0055c6eb94.js:2347:106)
at p.invoke (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4339:182)
at p.flush (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4331:141)
at h.flush (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4346:207)
at $._end (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4410:9)
at $.end (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4363:240)
at $._runExpiredTimers (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4417:192)

Hier ist, wie es mit dem Plugin aktiviert aussieht (für Ihr eigenes Konto)

Für einen anderen Benutzer (in diesem Fall 9pfs)

Hier ist ein weiterer lustiger Bug, der durch das Plugin verursacht wird:

Wir verwenden derzeit 3.2.0.beta2-dev von diesem Commit und wir verwenden Version 0.1.0 des Plugins von diesem Commit.

1 „Gefällt mir“

@rokejulianlockhart Haben Sie Cookies deaktiviert oder eine Art von Erweiterung für den Datenschutz aktiviert? Der Autorisierungsfluss ist derzeit auf ein sicheres Sitzungs-Cookie angewiesen, um zu funktionieren.

@aboutDavid Danke für den Bericht. Obwohl es möglich ist, scheint es unwahrscheinlich, dass das, was Sie teilen, durch ein Problem in diesem Plugin verursacht wird. Könnten Sie einen Link zu Ihrer Website teilen? Haben Sie auch Themes oder Theme-Komponenten aktiviert?

2 „Gefällt mir“

Aus der Fehlerbehebung im abgesicherten Modus wissen wir Folgendes mit Sicherheit:

  1. Es ist ein inoffizielles Plugin
  2. Es ist kein Theme oder keine Theme-Komponente.

Soweit ich weiß, haben wir zwei inoffizielle Plugins:

  1. Avatare animieren (manuell bestätigt, dass es nicht der Schuldige ist)
  2. ActivityPub

Was einen Website-Link betrifft:

3 „Gefällt mir“

Die Upgrade-Benutzeroberfläche zeigt neben allen Plugins ein Häkchen an, mit Ausnahme dieser beiden (was darauf hindeutet, dass es sich um offizielle Plugins handelt).

2 „Gefällt mir“

Das Problem auf Ihrer Website wird wahrscheinlich durch etwas verursacht, das den Plugin-Outlet user-profile-avatar-flair verwendet. Dieses Plugin verwendet diesen Outlet nicht. Das Plugin für animierte Avatare tut dies jedoch.

Wie haben Sie das bestätigt?

1 „Gefällt mir“

@aboutDavid hat überprüft und sichergestellt, dass das Plugin kein clientseitiges JS hat. Ist das Problem teilweise serverseitig?

1 „Gefällt mir“

Kein clientseitiges JS bedeutet nicht zwangsläufig, dass es keine clientseitigen Probleme gibt. In diesem Fall scheint das Problem von der Art und Weise zu stammen, wie ein Plugin-Outlet verwendet wird, möglicherweise in einer Vorlage. Könnten Sie versuchen, das Plugin für animierte Avatare zu entfernen und mir das Ergebnis mitteilen?

(Nebenbei bemerkt, das Plugin für animierte Avatare verfügt über clientseitiges JS. Siehe zum Beispiel).

1 „Gefällt mir“

Ich habe gerade hier auf Meta eine Kategorie bearbeitet (um einige Gruppenzugriffsberechtigungen zu ändern). Ich habe keine ActivityPub-bezogenen Einstellungen geändert, aber wir hatten diese drei Einträge im Admin-Log:\n\n

\n\nIch schätze, sie sind technisch von nil auf ihren Standardwert übergegangen, sodass es keine tatsächliche Verhaltensänderung gibt? Dennoch wäre es gut, diese Protokollierung zu vermeiden, um Verwirrung zu vermeiden.

2 „Gefällt mir“

Danke für den Bericht David, ich werde ihn mir bald ansehen.

1 „Gefällt mir“

Hoppla, ich bin heute ein bisschen dumm, Entschuldigung

Bearbeiten: Ja, es sind höchstwahrscheinlich animierte Avatare, Entschuldigung, dass ich Ihre Zeit verschwendet habe, lol

3 „Gefällt mir“

@angus, soweit ich weiß nicht.

und ich habe sichergestellt, dass ich uBlock Origin deaktiviert habe, obwohl ich die Datenschutzlisten sowieso nicht benutze.


Allerdings bin ich heute beim Testen auf ein anderes Problem gestoßen.

Log in - Mastodon

Client-Authentifizierung fehlgeschlagen aufgrund eines unbekannten Clients, keiner enthaltenen Client-Authentifizierung oder einer nicht unterstützten Authentifizierungsmethode.

Google Search.