IndieConnector 2

Nach knapp einem halben Jahr Entwicklung, ist es soweit: IndieConnector 2 ist da und bringt zahlreiche neue Funktionen mit.

Das große Ziel der neuen Version war, IndieConnector unabhängiger von externen Diensten zu machen. Deshalb wollte ich im ersten Schritt IndieConnector von webmention.io loslösen.

Ich bin dann ziemlich schnell in das Rabbit-Hole Webmentions gestürzt. Denn anders als ich erst dachte, beutetet das Empfangen von Webmentions nicht nur, auf eine Anfrage zu lauschen und diese dann zu verarbeiten.

Microformats

Die Reise in die Welt der Webmentions ist eher eine Reise in die Welt der Mikroformate. IndieConnector konnte schon immer anzeigen, um welche Art Webmention es sich handelt. Ist das ein Like, ein Lesezeichen oder eine Antwort? Den größten Teil der Arbeit hatte bisher webmention.io übernommen.

Um unterschiedliche Arten von Webmentions zu unterscheiden und herauszufinden, wer die Autorin ist, müssen auf der Seite hinterlegte Microformats ausgelesen werden. Nicht alle Seiten binden die Formate gleich ein und so steckt dort eine Menge Arbeit hinter. Trotz hilfereichen Bibliothek.

Entsprechend kommt IndieConnector 2 mit ein paar Kirbytags daher, die euch das definieren von Webmentions erleichtern sollen. Damit könnt ihr eben sagen, dass ihr ein Like verschicken wollt, usw.

Empfangen ohne Webmention.io

Webmention.io ist ein toller Service, auf dem das IndieConnector-Plugin lange fußte. Meiner Meinung nach ist es aber wichtig, sich möglichst unabhängig von externen Diensten zu machen und so war es schon immer das Ziel, Webmentions nativ - also ohne webmention.io - zu empfangen.

Das ist die größte Neuerung im Plugin.

IndieConnector empfängt nun automatisch Webmentions, ihr müsst nichts mehr konfigurieren, damit es das tut!

Das war bisher die größte Hürde. Die Konfiguration von IndieConnector und webmention.io, das Einrichten eines Hooks, das Empfangen einer initialen Webmention, damit das überhaupt klappt. Alles nicht mehr notwendig. Installiert einfach die neue Version des Plugins und sowohl das Empfangen und Senden funktioniert ohne weitere Konfiguration.

Natürlich unterstützt IndieConnector weiterhin webmention.io, solltet ihr den Dienst weiter nutzen wollen.

Mastodon

Es ist weiterhin möglich, eigene Beiträge automatisch bei Mastodon zu posten. Beim Veröffentlichen der jeweiligen Seite, wird dann ebenfalls ein Post bei Mastodon erstellt.

Neu hinzugekommen sind vor allem Filtermöglichkeiten. Ihr habt, ähnlich wie bei den Webmentions, die Möglichkeit festzulegen, welche Templates Posts erstellen sollen oder welche das nicht dürfen. Zudem könnt ihr im Panel bei jeder Seite die Funktion deaktivieren.

Ihr könnt festlegen, welches Feld als Quelle für den Text bei Mastodon dient und neu hinzugekommen: Ihr könnt Bilder posten und dafür ebenfalls eine Quelle festlegen.

Bluesky

Da immer mehr Menschen Bluesky nutzen, habe ich mich für eine Integration entschieden. Ihr könnt neue Beiträge ebenfalls automatisch bei Bluesky posten. Die Konfiguration von Bluesky und Mastodon sind identisch.

Queues

Webseiten die viele Webmentions empfangen, sollen dadurch nicht verlangsamt werden. Deshalb kommt IndieConnector 2 mit einer Queue daher. Die Queue muss separat aktiviert werden und benötigt eine SQLite Datenbank. Eingehende Webmentions werden zunächst in der Queue gespeichert und dann nach und nach abgearbeitet.

Das Abarbeiten funktioniert am einfachsten über einen Cronjob, der eine Webhook-URL aufruft. Klingt komplizierter als es ist und sollte in wenigen Minuten eingerichtet sein.

Statistiken

Weiterhin gibt es eine Panel-View mit Statistiken. Diese wurde komplett überarbeitet und bietet nun noch mehr Details, teilt eingehende Webmentions z.B. in verschiedene Quellen auf, Mastodon und Bluesky bspw. Außerdem seht ihr noch besser, welche eurer Seiten zu welchen anderen Seiten Webmentions verschickt hat und ob das geklappt hat.

Filtermöglichkeiten

Alle neuen Funktionen kommen mit Filtermöglichkeiten. Ihr könnt zum Beispiel Hosts blockieren, die euch zuspammen oder von denen ihr wisst, dass sie gar keine Webmentions empfangen können.

uvm.

Neben den großen neuen Funktionen gibt es zahlreiche weitere Änderungen unter der Haube. Das Plugin versucht im Fehlerfall mehrfach erneut eine Webmention zu verschicken und gibt dann nach drei Fehlversuchen auf. Auf diese Weise versucht das Plugin beim Speichern einer Seite nicht ständig Webmentions zu verschicken, obwohl es vorher bereits etliche Male nicht funktioniert hat.

IndieConnector erstellt außerdem nicht nur Posts bei Mastodon, sondern merkt sich auch noch die Post-URL, so dass ihr diese auf eurer Seite anzeigen könnt und eure Besucher dann auf Mastodon antworten können.

BREAKING CHANGES

Ich habe versucht möglichst abwärtskompatibel zu bleiben. Durch die umfangreichen Änderungen war ich allerdings gezwungen, die Optionen aufzuräumen, die ihr in der config.php vornehmen könnt. Alle alten Optionen sind (noch) verfügbar und werden ausgelesen, ich würde allerdings empfehlen, diese anzupassen und das vorher lokal zu testen.

Alle Datenbank-Migrationen laufen automatisch. Vor einem Update ist es ratsam, ein Backup der Datenbank vorzunehmen, falls unerwartet etwas schief läuft.

Kirby-Hooks enthalten andere Webmention-Typen. Solltet ihr den Hook nutzen, müsst ihr diese anpassen.

Pläne

Während der Entwicklung sind mir viele neue Ideen und Feature-Wünsche gekommen, ich musste jetzt aber irgendwo einen Schlussstrich ziehen, sonst wäre ich nie fertig geworden.

Geplant sind:

  • Queue für das Senden von Webmentions
  • Queue für das Erstellen von Mastodon-Posts
  • Queue für das Erstellen von Bluesky-Posts
  • Blockieren von Hosts im Panel
  • Manuelles Erstellen von Mastodon und Bluesky Posts
  • Unabhängigkeit von brid.gy zum Einsammeln von Mastodon/Bluesky Replies

Ich hoffe, dass ihr auch so viel Freude am neuen Release habt, lasst es mich gerne in den Kommentaren wissen - oder schickt mir einfach eine Webmention 😎

Release v2.0.0 · mauricerenck/indieConnector
2.0.0 (2024-08-06) Features native webmentions (#13) (38321f6) BREAKING CHANGES rewrite of receive classes and tests feat: stats enabled option the configuration stats = true has been mov...