ActivityPub-Plugin

|||
-|-|-|
:discourse2: | Zusammenfassung | Discourse ActivityPub ermöglicht es Ihnen, Discourse-Beiträge über ActivityPub zu veröffentlichen, sodass sie auf Diensten gelesen werden können, die ActivityPub unterstützen, wie z. B. Mastodon.
:hammer_and_wrench: | Repository-Link | GitHub - discourse/discourse-activity-pub: Adds ActivityPub support to Discourse.
:open_book: | Installationsanleitung | So installieren Sie Plugins in Discourse

Wenn Sie mit ActivityPub nicht vertraut sind, sehen Sie sich zunächst dieses kurze Video an:

Wenn Sie bereit sind, mit der Einrichtung des Plugins zu beginnen, sehen Sie sich unsere Themen activitypub Documentation > Integrations an:

65 „Gefällt mir“

Vielen Dank für Ihre Arbeit hier! Ich freue mich wirklich darauf, dies einzuschalten, und danke, dass Sie es zum Testen freigegeben haben, damit diejenigen von uns mit verschiedenen Setups zumindest das Testen in einer breiteren Palette von Szenarien beitragen können.

Wenn ich darüber nachdenke, wann ich dies für meine Website einschalten soll, versuche ich, darüber nachzudenken, was die “Einwegtüren” sein könnten.

Unterkategorien

Ich habe 8 Hauptkategorien, aber zusätzlich habe ich 21 öffentliche Unterkategorien. 29 Akteuren folgen zu müssen, um die gesamte öffentliche Website-Aktivität zu verfolgen, erscheint viel. Außerdem könnte es für Benutzer eine Überraschung sein, dass das Folgen einer Kategorie nicht die Unterkategorien verfolgt.

Wenn ich in den ActivityPub-Einstellungen einer Kategorie eine Option für “auch öffentliche Unterkategorien föderieren” auswählen könnte, würde ich das tun. Ob Unterkategorien separat föderiert werden sollen, fühlt sich meiner Meinung nach aus Benutzersicht hauptsächlich wie eine Einwegtür an. Wenn Sie also eine Option “auch Unterkategorien föderieren” in Betracht ziehen würden, könnte dies meine Pläne beeinflussen. Unsere Standard-Seitenleiste zeigt nur die obersten Kategorien an, und die Discourse-Standardeinstellung, wenn man sie betrachtet, zeigt alle Inhalte der obersten Ebene und der Unterkategorien zusammen an, sodass dies den Erwartungen von Discourse einigermaßen entspricht.

Alles föderieren!

Ich denke, es wäre interessant, auch eine website-weite Einstellung für einen ActivityPub-Akteur hinzuzufügen, der alle öffentlichen Beiträge auf einer Website föderiert. Das würde ich selbst nutzen. Aber ich sehe das nicht als Einwegtür an – ich würde die Kategorienföderation einrichten, sobald sie ansonsten fertig ist, auch wenn ich später einen “all@” Akteur hinzufügen würde, um alles zu föderieren.

Bearbeitungsbeschränkungen

Eines der Dinge, die aus Ihrem Beitrag nicht ersichtlich sind, ist, dass er so gelesen werden kann, dass nur der wörtliche [note]...[/note] Abschnitt nicht bearbeitet werden kann. Für andere hier bedeutet es wirklich, dass, wenn Sie föderieren, die Bearbeitung derzeit für alle Beiträge deaktiviert ist, sobald sie föderiert sind (außer für Beiträge mit einem wörtlichen [note]...[/note] Abschnitt); diese Meldung wird nur angezeigt, wenn Sie versuchen, Ihre Bearbeitung zu speichern:

Meine Website erlaubt absichtlich ausreichend vertrauenswürdigen Benutzern, unbegrenzt zu bearbeiten, daher kann ich dies nicht einschalten, ohne die Möglichkeit zu haben, diese Kontrolle zu deaktivieren (oder die Kontrolle zu entfernen, da Bearbeitungen föderiert werden). Als allgemeines Beispiel, das über solche vertrauenswürdigen Websites hinausgeht, wird jede Kategorie mit Wiki-Modus-Beiträgen durch die Einrichtung der Föderation für diese Kategorie beschädigt.

Ich habe versucht, einen föderierten Beitrag, den ich zu einem Wiki gemacht hatte, zu löschen, und erhielt Folgendes:

Der Beitrag wurde jedoch gelöscht und die Löschung wurde föderiert.

Persönlichkeit

Es wäre schön, jedem bestimmten Akteur ein Profilbild zur Verfügung zu stellen. In Mastodon sehe ich nur das graue Elefantenbild für jeden Kategorie-Akteur, und ich würde hier gerne ein wenig Persönlichkeit hinzufügen. :smiling_face:

Fehlerprotokolle

Ich habe bisher zwei Arten von Fehlern in meinen Protokollen vom ActivityPub-Plugin erhalten:

Message (3 copies reported)

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'

Nochmals vielen Dank für Ihre Arbeit daran!

8 „Gefällt mir“

Ich freue mich, sagen zu können, dass SocialHub bereits läuft:

… Tipp, Tipp, Tipp…

Es sollte jetzt im Fediverse erschienen sein… Schauen wir uns die Protokolle an…

Oh, es gibt Probleme mit dem ersten Versuch, einem Akteur zu folgen:

  • 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`
Hier ist der Backtrace für den letzten Eintrag
active_model-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'

Die Notiz scheint nicht in meinem Feed zu erscheinen :cry:

(Fühlen Sie sich frei, diese Nachricht an einen geeigneteren Ort zu verschieben)

8 „Gefällt mir“

Langfristig stimme ich zu, dies sollte pro Akteur spezifisch und konfigurierbar sein. Aber im Moment sollte das Website-Logo übernommen werden. Bei mir funktioniert das für @feature@meta.discourse.org:

4 „Gefällt mir“

Ok, das hing wahrscheinlich mit einem der Fehler zusammen, die ich gesehen habe. Das Website-Logo ergibt für mich viel Sinn.

Wenn ich darüber nachdenke… Wenn es die Möglichkeit gäbe, die Kategorie-Farbe dort zu verwenden, wäre das großartig, aber ich weiß nicht, ob es dafür Platz gäbe.

4 „Gefällt mir“

Ich habe es erneut versucht und…

Teilweise funktionsfähig: Die Notiz wurde etwas zu stark gekürzt (71 Zeichen) vom Original:

Wir haben darauf gewartet: Dank Angus McLeod und dem #Pavilion-Team sowie CDCK, Inc., dem Unternehmen hinter #Discourse, ist der #SocialHub jetzt föderiert! Sie können @fediverse@socialhub.activitypub.rocks für allgemeine Ankündigungen und @feps@socialhub.activitypub.rocks für Fediverse Enhancement Proposals folgen.
:hugs:

4 „Gefällt mir“

Allgemeine Empfehlung:

Denken Sie ein paar Tage darüber nach, bevor Sie die ActivityPub-Integration aktivieren.
Denken Sie daran, dass diese Konten für immer im Fediverse der sozialen Netzwerke aufgeführt werden und Verwirrung stiften können, wenn Sie feststellen, dass der Konto-/Kategoriename nachträglich geändert werden muss. :heart:

2 „Gefällt mir“

Ich glaube, dass es auf lange Sicht möglich wäre, zusätzlich die Kontenbewegung zu implementieren, um den Akteur für eine Kategorie umzubenennen. Es ist nur mehr Arbeit, die für jemanden, der bereit ist, die Arbeit zu tun, wertvoll sein muss, daher bezweifle ich, dass es kurzfristig etwas ist. :smiling_face: Zumindest hoffe ich, dass es später als andere wertvollere Arbeiten kommt! :grin: Das macht Ihren Punkt überhaupt nicht ungültig.

3 „Gefällt mir“

Danke für das Feedback, Leute :slight_smile:

@hellekin Dies wird die Ausnahmen beheben, über die Sie berichtet haben. @mcdanlj Dies wird auch die zweite Ausnahme beheben, über die Sie berichtet haben (gleiches Problem).

@mcdanlj Das erste von Ihnen gemeldete Problem ist etwas seltsamer. Wie oft tritt es bei Ihnen auf? Könnten Sie möglicherweise weitere Details mitteilen?

Danke für das Feedback dazu, werde es in Phase 2 der Arbeit auf jeden Fall berücksichtigen :+1:

Ich denke, das wird wahrscheinlich nicht in Phase 2 passieren, aber zur Kenntnis genommen :+1:

Die Bearbeitung ist nur für den Inhalt des Beitrags deaktiviert, der die Notiz ausmacht. Wenn Sie die Notiz-Tags nicht verwenden, sind das die ersten 500 Zeichen oder was auch immer Sie für activity pub note excerpt maxlength eingestellt haben. Eines der Dinge, die ich definitiv für Phase 2 in Betracht ziehe, ist, die [note][/note]-Tags zu verpflichten, um die Notiz vom Rest des Inhalts zu trennen, da ich sehe, dass dies zu Verwirrung führen kann.

Sie können dies beheben, indem Sie [note][/note]-Tags verwenden, um die Notiz vom anderen Inhalt zu trennen.

Zur Kenntnis genommen! Wir haben dies mit Wiki-Beiträgen noch nicht explizit getestet. Ich konnte Ihr Problem mit dem Löschen von Wiki-Beiträgen bisher nicht reproduzieren. Können Sie es zuverlässig reproduzieren? Ich habe in diesem PR einige Spezifikationen hinzugefügt, die für dieses Szenario alle erfolgreich sind, aber ich möchte diesem Problem auf den Grund gehen.

Die Auszugsanalyse wird derzeit vom selben System gehandhabt, das auch für die Auszugsanalyse von Themen in Discourse verwendet wird (für die Zwecke der Themenliste), weshalb wahrscheinlich ein beträchtlicher Teil davon abgeschnitten wurde (Themenlisten-Auszüge hätten das auch getan). Ich denke, wir müssen möglicherweise einen separaten Parser verwenden, da ich absehen kann, dass dies zu einigen Problemen führt. Bleiben Sie bei dieser Sache dran; sie wird definitiv in Phase 2 behoben.

Denken Sie daran, dass Sie den Anzeigenamen beliebig ändern können und dass die Einschränkung bei der Änderung des Benutzernamens nicht einzigartig für dieses Plugin ist. Was Sie sagen, ist also wahr, aber das gilt für einen beträchtlichen Teil des Fediverse.

Darüber hinaus habe ich den Benutzernamen nicht in die ID des Akteurs aufgenommen, teilweise um die Möglichkeit zu eröffnen, den Benutzernamen in Zukunft ändern zu können.

Die ActivityPub-Daten des Plugins sind von den Discourse-Daten abstrahiert. Es gibt keine inhärente Einschränkung bei der Änderung des Discourse-Modells (d. h. welcher Kategorie) ein Akteur zugeordnet ist. Sie könnten den Akteur sogar möglicherweise einem anderen Typ von Discourse-Modell in der Zukunft zuordnen, d. h. einem Akteur, den Sie für eine Kategorie erstellt haben, stattdessen einem Benutzer zuordnen (die Beziehung zwischen Akteuren und Discourse-Modellen ist polymorph). Ich sage nicht, dass dies explizit als Funktion hinzugefügt wird, aber eher, dass es in dieser Hinsicht keine harten Einschränkungen gibt.

Im Allgemeinen ist es ja erwähnenswert, welche Kategorien Sie als Akteure haben möchten, aber insgesamt hat diese Implementierung einen relativ hohen Grad an Flexibilität, sodass Ihr Grad an Besorgnis relativ zu diesem Kontext sein sollte. Ich habe hier ein wenig mehr über die Art des Datenflusses im Plugin erklärt, was diesen Punkt weiter verdeutlicht.

Nochmals vielen Dank an alle! Es ist großartig, engagierte Benutzer zu haben.

5 „Gefällt mir“

Ich glaube, es hing mit dem Löschen von Beiträgen zusammen, da ich drei Testbeiträge gelöscht habe und es drei Fehlermeldungen gab.

Das würde es für meine Website absolut unbrauchbar machen. Ich versuche nicht, Discourse als eine schwierigere Methode zum Schreiben von Beiträgen ins Fediverse zu nutzen, als sie einfach in Mastodon zu schreiben. Meine gesamte Community zu zwingen, [note]...[/note] bbcode-Annotationen zu verwenden, einschließlich der häufig neuen Website-Benutzer, die Hilfe suchen, wäre ein No-Go.

Nein, das kann ich definitiv nicht. Es geht nicht um mich. Es geht um meine Website-Benutzer, die Discourse-Benutzer sind, nicht um discourse/discourse-activity-pub.git-Benutzer.

Es ist nur eine Bearbeitung.

Das Föderieren von Bearbeitungen ist normal. Nach meinem Verständnis erlauben die meisten weit verbreiteten ActivityPub-Implementierungen Bearbeitungen schon seit langem. Mastodon war bis letztes Jahr die einzige Ausnahme unter den beliebten Implementierungen, als sie endlich nachgaben und Bearbeitungen erlaubten.

Ich erkenne an, dass Bearbeitungen nicht Teil der MVP-Veröffentlichung waren, aber bis sie entweder Bearbeitungen föderieren oder mir die Option geben, das Nicht-Bearbeitbar-Machen der Notiz zu deaktivieren, kann ich dies für meine Website nicht aktivieren. Ich weiß natürlich nicht, ob mein Anwendungsfall seltsam oder normal ist.

Mein eigenes Ziel bei der Verwendung des ActivityPub-Plugins ist es, es meinen Community-Forum-Mitgliedern zu erleichtern, Inhalte zu verfolgen und zu teilen, während sie von ihnen erstellt werden, die Discourse verwenden. Es geht nicht darum, Discourse als seltsamen, nicht bearbeitbaren reinen Beitragsersatz für Mastodon zu verwenden. :smiling_face:

Nach meinem Verständnis beabsichtigen Sie, Bearbeitungen schließlich zu unterstützen, da die Fehlermeldung besagt “derzeit nicht unterstützt” – ist das richtig? In diesem Fall ist dies alles nur eine vorübergehende Einschränkung und unsere unterschiedlichen Anwendungsfälle sind nicht wichtig. Aber es lässt mich über die Investition von Aufwand in den Schutz von Bearbeitungen im Vergleich zur Unterstützung von föderierten Bearbeitungen wundern.

Ich hatte vergessen, das retort-Plugin von meiner Sandbox-Website zu entfernen, als ich es von meiner Produktions-Website entfernt hatte. Das Entfernen von retort hat sowohl das seltsame Fehlerprotokoll als auch die seltsame Fehlermeldung behoben. Mein Fehler!

Bedeutet dies, dass wir mit dem Plugin, wie es heute steht, denselben Akteur für mehrere Kategorien verwenden könnten? Oder dass das Datenmodell sehr flexibel ist und die Implementierungsdetails leicht geändert werden können?

Nur zur Info: In meinem Anwendungsfall wäre es meine Präferenz, das Ganze ohne Einschränkungen zu posten. Ich weiß, dass andere es vielleicht nicht so konfigurieren, aber ich denke, am Ende würde ich die maximale Größe auf dieselbe wie die maximale Größe für einen Beitrag auf meinem Discourse setzen, was… groß ist! :smiling_face:

2 „Gefällt mir“

Verstanden, ich werde das bald genauer untersuchen.

Verstanden. Mein Kommentar bezog sich eher darauf, dass die Bearbeitung von Nicht-Notiz-Inhalten nach der Veröffentlichung derzeit tatsächlich möglich ist. Sie haben Recht, dass diese erste Version für die allgemeine Nutzung durch jeden Benutzer nicht ohne UX-Probleme sein wird. Sie unterstützt jedoch andere Verwendungszwecke recht gut, z. B. die Föderation von Ankündigungen.

Ja, wir werden in Phase 2 die Unterstützung für die Bearbeitung von Notiz-Inhalten nach der Veröffentlichung hinzufügen. Beachten Sie, dass die Bearbeitung derzeit vor der Veröffentlichung der Notiz unterstützt wird. Wenn Sie so etwas entwickeln, müssen Sie die Anzahl der beweglichen Teile so weit wie möglich reduzieren.

Nein, noch nicht. Könnten Sie hier etwas genauer erklären, was Sie meinen? Denken Sie an einen Akteur für die gesamte Website oder eher an das Problem mit Unterkategorien?

Ja, obwohl ich den Begriff „einfach“ nicht unbedingt verwenden würde :wink:

Ich bin neugierig, wohin Sie die uneingeschränkten Inhalte föderieren wollen? Echte Frage; ich möchte besser verstehen, woher Sie kommen.

2 „Gefällt mir“

Ich habe vergessen, das zu bearbeiten, nachdem ich entdeckt hatte, dass das versehentliche Belassen von retort die Ursache des Fehlers war. :flushed:

Ups.

Gut genug! :pray:

Ich werde mich nicht weiter darum kümmern und in Phase 2 werde ich beim Testen helfen.

Ich habe vage an beides gedacht, aber es war eine Frage von geringem Wert. Ich war nur neugierig, wie weit ich meine Experimente mit meiner Staging-Site treiben könnte, und wollte nichts ausprobieren, was bereits als unmöglich bekannt war. :+1:

Ich werde es versuchen!

Kontext: Mastodon begrenzt die Länge von Beiträgen, die Benutzer verfassen dürfen, aber nicht die Länge von Beiträgen, die es anzeigt. Ich betreibe einen Mastodon-glitch-Server, der mit einer Zeichenbegrenzung von 2000 Zeichen konfiguriert ist; Ich habe mehrere Leute über die Konfiguration einer Zeichenbegrenzung von 31337 Zeichen (weil natürlich) schreiben sehen. Ich sehe lange Beiträge in meinem Feed von Leuten, die pleroma, akkoma usw. verwenden.

Wir haben von Zeit zu Zeit wirklich coole Inhalte auf Maker Forums (meinem Discourse) (meiner Meinung nach!), und ich möchte sie im Fediverse allgemein bewerben, um sie einem breiteren Publikum zugänglich zu machen. Ich weiß, dass Mastodon die Meinung vertreten hat, dass 500 Zeichen die magische Länge für Microblogging sind – aber ActivityPub ist nicht auf Microblogging beschränkt. Es ist Föderation, einschließlich, aber nicht beschränkt auf Microblogging. Wenn ich einem ActivityPub-Akteur in meinem Mastodon-Konto folge, bin ich nicht auf kurze Beiträge beschränkt. Ich kann längere Beiträge lesen, kommentieren und weiterleiten.

Daher ist die Frage “wohin Sie föderieren wollen” für mich verwirrend.

  • Ich würde die Inhalte von meinem Mastodon-glitch-Server weiterleiten. Weiterleitungen wenden nicht die Zeichenbegrenzung an, die für das Verfassen von Beiträgen gilt, selbst bei Standard-Mastodon.
  • Ich würde erwarten, dass Community-Mitglieder von jedem ActivityPub-Server folgen (in der Erkenntnis, dass dies im Moment eher Mastodon als andere sein werden), und sie werden nicht alle die gleiche meinungsstarke Ansicht darüber haben, wie lang eine ActivityPub-Notiz sein sollte.

Letztendlich habe ich als Serveradministrator keine Kontrolle darüber, wohin diese Inhalte föderiert werden. Das ist die Entscheidung jedes Followers. Es ist mir nicht klar, warum das Auslassen vs. das Föderieren des gesamten Discourse-Beitrags als ActivityPub-Notiz selbst für Follower auf Mastodon, aber mehr noch im gesamten Fediverse, die Standardeinstellung sein sollte.

Ich bin mir nicht sicher, ob das Ihre Frage beantwortet. Aber ich bin mir auch nicht sicher, ob ich sie gut verstehe. :grin: Gerne gehe ich tiefer darauf ein, wenn Sie möchten.

2 „Gefällt mir“

Kein Problem! Schön, dass wir die Ausnahmen vorerst behandelt haben. Lasst uns wissen, wenn ihr weitere seht. @hellekin Ebenso, lasst uns wissen, wenn ihr weitere Probleme oder seltsames Verhalten seht.

Großartig! Danke.

Das tut es! Danke, es sind nützliche Informationen für unsere Planung von Phase 2.

5 „Gefällt mir“

Ich werde bald auf die neueste Version upgraden. Eine nützliche Funktion wäre die Wahl der Zielgruppe: ob der Beitrag öffentlich oder nur für Follower bestimmt ist. Derzeit ist er letzteres, sodass wir ihn nicht bewerben können und dem Konto folgen müssen, bevor wir Benachrichtigungen erhalten. Ich schätze, dass er noch experimentell ist, aber es sollte definitiv eine Option geben, ihn öffentlich zu posten, damit wir die Funktion breiter im Fediversum bewerben können :slight_smile:

5 „Gefällt mir“

Ja, das ist etwas, das wir in Phase 2 berücksichtigen werden :+1:

6 „Gefällt mir“

Haben Sie eine öffentliche Roadmap für die Entwicklungsphasen?

3 „Gefällt mir“

Es gibt keine öffentliche Roadmap, aber ich werde Sie informieren, sobald wir die Einzelheiten geklärt haben. Alle vernünftigen Vorschläge, was enthalten sein sollte, sind willkommen! Spezifische Anwendungsbeispiele wie die von @mcdanlj sind ebenfalls immer hilfreich.

6 „Gefällt mir“

Ich habe einige Vorschläge auf SocialHub gemacht, die hier schon vor einiger Zeit gemacht wurden…

2 „Gefällt mir“

Ich war in meinen Tests von einem Staging-Server noch nicht so weit, dies zu bemerken, aber ich möchte anerkennen, dass das Bewerben auch für meinen eigenen Anwendungsfall von zentraler Bedeutung ist.

6 „Gefällt mir“

Behandlung von 410 Gone

Meine Protokolle enthalten viele (geänderte URL):

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

Ich glaube, das hängt damit zusammen: Die Objekt-Abfrage SOLLTE den Statuscode 410 Gone zurückgeben, wenn sich Tombstone im Antwortkörper befindet, andernfalls wird 404 Not Found zurückgegeben (server:object-retrieval:deleted-object:410-status): Das Konto wurde auf eine andere Instanz verschoben.


Außerdem erhalte ich einige:



[Discourse Activity Pub] update_stored_from_json konnte den Actor nicht speichern. AR-Fehler: Ap ist bereits vergeben. 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": "--...\n\n```

----

Und

[Discourse Activity Pub] GET-Anfrage an https://mastodon.social/users/ejovoni46709 fehlgeschlagen: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(410 Gone)
[Discourse Activity Pub] Konnte https://mastodon.social/users/ejovoni46709 nicht verarbeiten: Konnte Actor nicht auflösen
[Discourse Activity Pub] Konnte https://mastodon.social/users/ejovoni46709#delete nicht verarbeiten: Konnte Actor nicht erstellen
[Discourse Activity Pub] Konnte https://mastodon.social/users/epybisezax9438#delete nicht verarbeiten: Konnte Objekt nicht finden

3 „Gefällt mir“