ActivityPub-Entwicklung ist schlimm

29.12.2022 12:12
ca. 4 Minuten Lesezeit

Ich denke, ich muss niemandem mehr erklären, was das Fediverse ist.
Was ich aber schlimm finde: das Chaos im Entwicklungsbereich.

Mein Ziel

Ich möchte dieses Blog und das Hugo dahinter sinnvoll mit dem Fediverse verbinden. Dabei sollen neue Beiträge an die Follower gepusht werden. Antworten könnten (muss ich noch überlegen, ob ich das will) als Kommentare in die Posts einfließen.

Vielleicht, wenn ich noch ganz viel Lust und Laune habe, würde ich mir wünschen, einfach ein kleines Tool zu haben, mit dem ich selbst das Microblogging getrennt, aber doch verbunden mit diesem Blog zu haben.

Warum nicht Mastodon, Pleroma, usw.?

Derzeit habe ich meine eigene Mastodon-Instanz laufen. Die will ich loswerden. Das Hosting ist eine Katastrophe. Klar, ich habe das im Docker-Container laufen, aber wenn ich schon sehe, dass dieser Ruby-On-Rails-Dreck über 2 Stunden benötigt, um das Docker-Image zu erzeugen, könnte ich gar nicht so viel essen, wie ich kotzen möchte.

Ich bin auf meiner Instanz komplett allein, aber sie verbraucht mehr als 2 GB RAM. Warum?
Das Aufräumen der Bilder-Caches ist unfassbar schlecht umgesetzt, meine vor 3 Tagen neu aufgesetzte Instanz hat jetzt nur für mich allein schon über 2 GB an Cache angesammelt.
Wie soll das erst werden, wenn man 10.000 User auf einer Instanz hat?

Pleroma, in Elixir geschrieben, benötigt zur Erstellung knapp über eine halbe Stunde. Uff, was machen die alle? Mal abgesehen davon sind beide nicht für eine Integration in andere Dinge zu gebrauchen. Die Posts über Feeds, APIs oder manuell in die Software zu bekommen wäre zwar eine Lösung, aber ungeil. Es gibt dank fehlender Spezifikation keine sinnvolle DNS-Discovery – also ein Betrieb unter der Domain mthie.com, aber transparent wird der Service unter einer subdomain.mthie.com betrieben. So etwas ist beim Matrix-Messenger möglich, das Fediverse hat das irgendwie komplett vergessen.

Nimm eine Library!

LOL, welche denn?

Meine bevorzugte Programmiersprache wäre Go. ActivityPub wurde ursprünglich für nicht-typsichere Script-Sprachen gebaut. Das merkt man daran, dass im JSON einfach mal random „irgendwelche“ Typen verwendet werden, die sich zwischendrin verändern: Beispiel 1 vs. Beispiel 2 - VIELLEICHT ist ein String, vielleicht aber auch ein Slice von Strings ODER ein Slice von „irgendwas“.

Natürlich gibt es da draußen bereits Libraries:

Go Fed

Wurde einfach mal als „fertig“ deklariert und wird seit Jahren nicht mehr sinnvoll weiterentwickelt. Die Doku beinhaltet dann direkt mal ein paar Under Constructions, aber wir reden hier von der am häufigsten erwähnten Implementierung für Go. Außerdem ist die Implementierung viel zu komplex und ist eigentlich nur für die Verwendung in deren Webserver-Implementierung geeignet.

ActivityPub

Ich habe so meine Problemchen mit Libraries und Software, die nur von einer einzigen Person betreut wird und wenn ich mir den Source so anschaue, ist dieser unnötig komplex gebaut. Ist KISS in der Entwicklung inzwischen so out?

Die Spezifikation ist ja wirklich nicht so komplex, aber warum wird dann Software gebaut, die die Spezifikation unnötig komplex abbildet? Die Code-Qualität hindert mich an der Nutzung, weil man es nicht sinnvoll debuggen kann.

GotoSocial – Activity

GotoSocial selbst ist ja eine ActivityPub-Server-Lösung in Go und funktioniert schon ziemlich gut. Leider bringt es keine großartige Oberfläche mit, sodass ich es nicht als Mastodon-Alternative betiteln würde. Allerdings haben die Entwickler einen Fork der Go-Fed-Implementierung erstellt, wahrscheinlich aus meinem oben genannten Grund der fehlenden Weiterentwicklung. Hier sind aber die Änderungen zum Original auch nicht so groß, trotz dass sich viele Zeilen Code geändert haben, als dass man dieses Repository jetzt als große Evolution ansehen könnte.


Das ist dann auch schon alles an öffentlich auffindbaren Repositories.

Ist es denn zu viel verlangt, meinen eigenen Webserver und Router verwenden zu wollen? Ich will den Quatsch aus den Requests doch einfach nur in ein Objekt parsen lassen und die Informationen verarbeiten und speichern. Ich werd’s dann also doch wieder selbst machen und in Verbindung mit einer statisch gehosteten Seite verbinden. Dauert dann vielleicht 3 bis 4 Abende, aber dann macht es wenigstens genau das, was ich brauche und ich muss dahinter dann nicht weiter eine sinnlose Datenbank, Indexierungen und Services (was macht Mastodon da?) hosten.


Hier gibt es keinen Kommentarbereich. Hast du etwas zu kommentieren? Dann blogge einfach selbst. Oder schreib darüber mit deinem Kommentar in einem sozialen Netzwerk deiner Wahl.