blog · git · desktop · images · music · contact & privacy · gopher


twtxt

2020-10-13

twtxt ist eine Idee aus dem Jahre 2016 und es gab 2017 einen Thread auf nixers.net dazu. Das Ziel ist, ein dezentrales Microblogging-Netzwerk zu bauen. Um mitzumachen, hostet man eine twtxt.txt irgendwo. Die kann auch anders heißen, muss nur dem Format der Spec genügen.

Und das war’s.

Um Leuten zu „folgen“, fügt man deren URL in den eigenen Client ein.

Und das war’s.

Cool, nech? Nochmal:

Anderen zu folgen, ist ein bisschen umständlicher, aber eigene „twt“s sind ganz leicht erstellbar:

printf '%s\t%s\n' "$(date +%FT%T%:z)" "hello world!" >>twtxt.txt

Systeme, die so einfach sind, laden natürlich dazu ein, seine eigene Software dafür zu schreiben. Eh klar:

https://uninformativ.de/git/twtxt-tools

Das sollte vermutlich außer mir niemand benutzen, weil es arg auf mein Setup zugeschnitten ist (darum geht’s ja). Und vielleicht schmeiße ich das morgen weg und fange neu an. Aber zum Beispiel die Idee mit den „Auto-Avataren“ ist ganz nett, finde ich. Hatte auch schon darüber nachgedacht, einen twtxt-Client in Form eines WeeChat-Plugins zu schreiben.

Das ist meine twtxt-Datei via gopher oder https.

Wie man sehen kann, stehen da noch ein paar Metadaten oben drin. Das ist völlig optional. Eigentlich erwähnt die Spec das auch nicht. Zeilen mit following = sind zum Beispiel ein schöner Weg, um öffentlich zu machen, wem selbst man folgt.

Mein einziges Genörgel am Format gilt den Timestamps: Da hätte man sich ein festes Format aussuchen können, stattdessen heißt es aber „RFC 3339 date-time string“, was eine ganze Reihe von Subformaten meinen kann. Warum nicht auf eines festlegen? Oder warum nicht UNIX-Timestamps? In der Praxis hat diese Mehrdeutigkeit lustige Effekte.

RSS/Atom und twtxt sind im Kern quasi identisch: Man selbst hostet eine Datei, andere rufen sie regelmäßig ab. twtxt hätte auch auf Basis von RSS/Atom gebaut werden können. Aber, wie gesagt, hier geht’s um Einfachheit. Mit twtxt zu spielen, macht deutlich mehr Spaß, als das mit RSS/Atom zu tun, weil man sich eben nicht mit XML und dann zwei komplexen Standards oben auf XML drauf auseinandersetzen muss.

Im Moment gibt es nicht so viele aktive User. twtxt.net wurde kürzlich gelaunched, was quasi „twtxt as a service“ ist. Das könnte es „normalen Leuten“ deutlich einfacher machen, mitzumachen. Ist aber noch sehr jung, muss man also erstmal abwarten, was daraus wird.

So oder so, twtxt ist allgemein derzeit nur ein Spielzeug. Aber ein schönes. :)

Auffindbarkeit

Eine Sache, die twtxt nicht kann: Man kann nicht aktiv jemandem antworten. Also, klar, man kann das in seine eigene Datei reinschreiben, aber die andere Person bekommt keine Benachrichtigung dafür. Sie weiß vermutlich nicht einmal, dass man existiert.

Eine Liste mit funktionierenden Feeds gibt es hier:

https://github.com/mdom/we-are-twtxt

Löst aber das Problem nicht. Wenn ein User dir nicht folgt, bekommt er nie etwas von dir mit. Das ist dasselbe Problem, was Blogs haben. In der Blogosphäre haben wir versucht, das mit Pingback zu lösen, was manche Blogs – so auch dieses – komplett ignorieren.

Es ist ein Problem – und ein Feature. Man wird nicht von irgendwem genervt, der einem Pillen verkaufen will.

twtxt geht das Thema an, indem es „Registries“ einführt:

https://twtxt.readthedocs.io/en/stable/user/registry.html

Das ist quasi „optional“. Wenn man sich nicht für andere interessiert, muss man bei den Registry-Servern nicht nachfragen. Nur wenn man möchte, kann man.

Ich glaube, dass ich diesen Ansatz mag. Aber natürlich habe ich gerade erst angefangen, twtxt zu benutzen, also mal schauen. Ich mein’, wir reden hier von Microblogging. Die sind inhärent Ego-zentriert. Ich will da meinen Kram posten und ein paar (mehr oder weniger) unterhaltsamen Leuten folgen. Fertig. Microblogs sind keine gute Plattform für tiefgründige Diskussionen – dafür nehme man Newsgr^W Foren. Für Chats nehme man IRC. Microblogs sind für: „Mmhhh, schön Kaffee 🍮️“, „OH: GNU Positioning System“ oder mal schnell einen interessanten Artikel weiterschicken.


— Nachtrag: Huch, das fiel völlig hinten runter. Abgesehen von den Registries gibt es noch einen weiteren Mechanismus: twtxt-Clients sollen optional als User-Agent die Identität des aufrufenden Users mitschicken.

Im Access-Log sieht das dann so aus:

www.uninformativ.de $ip - - [18/Oct/2020:07:15:33 +0200] "GET /twtxt.txt HTTP/1.1" 200 8852 "" "twtxt/1.2.3 (+http://foo.sdf.org/twtxt/twtxt.txt; @nickname)"

Ein Grund, warum ich diesen Aspekt vergessen hatte, war, dass ich OpenBSD httpd benutze und der loggt standardmäßig keine User-Agents. Man kann’s ihm aber wieder angewöhnen:

server {
    log style combined
    ...
}

Wenn man leicht an die Logs rankommt, dann ist das schon ziemlich cool und den Registries natürlich deutlich überlegen. Auf der anderen Seite kommt man nicht immer so direkt an die Logs (man denke an Hosting via GitHub) und über Gopher funktioniert es auch nicht, weil es da keinen User-Agent gibt. Für nichttechnische Menschen wäre daher sowas wie twtxt.net schon geeigneter.

Comments?