Soziales Dateisystem
(overreacted.io)- Das Konzept des dateizentrierten Personal Computing wird auf Social Computing ausgeweitet und beschreibt eine Struktur, in der alle von Nutzern erstellten Inhalte ihnen selbst gehören statt einer App
- Auf Basis des AT-Protokolls wird das Konzept eines dezentralen sozialen Dateisystems vorgestellt, das Dateninteroperabilität zwischen Apps ermöglicht
- Jeder Nutzer hat seinen eigenen „everything folder“ bzw. ein Repository, in dem Beiträge, Likes und Follows als JSON-basierte Dateien (Records) gespeichert werden
- Durch DID (Decentralized Identifier) und das
at://-URI-Schema bleiben dauerhaft identifizierbare Links auch bei Hosting-Wechsel oder Handle-Änderungen erhalten - Diese Struktur bildet ein datenzentriertes soziales Ökosystem statt eines appzentrierten und ermöglicht es jedem, neue Apps zu bauen, die auf vorhandenen Daten arbeiten
Das Datei-Paradigma und seine soziale Erweiterung
- Dateien existieren ursprünglich in einem vom Nutzer kontrollierten Bereich statt innerhalb einer App, und Apps dienen nur als Werkzeuge zum Lesen und Schreiben von Dateien
- Offene Dateiformate wie
.svgermöglichen es mehreren Apps, dieselben Daten gemeinsam zu nutzen - Nach dem Prinzip „Das Dateiformat ist die API“ wird Interoperabilität zwischen Apps möglich
- Offene Dateiformate wie
- Wendet man dieses Konzept auf soziale Apps an, können auch Handlungen wie Beiträge, Follows und Likes wie Dateien behandelt werden
- Es gibt einen „everything folder“, der sämtliche Online-Aktivitäten eines Nutzers enthält
- Apps spiegeln die Daten dieses Ordners wider, der als Single Source of Truth dient
Das AT-Protokoll und das soziale Dateisystem
- Das AT-Protokoll ist die Technologie, die diese Struktur praktisch umsetzt; Bluesky, Leaflet, Tangled, Semble und Wisp basieren darauf
- Apps besitzen die Nutzerdaten nicht; durch getrennte Datenspeicherung auf Dateiebene können neue Apps bestehende Daten wiederverwenden
- Die Ordner aller Nutzer zusammen bilden ein dezentrales soziales Dateisystem
Struktur von Records und Collections
- Jeder Beitrag wird als JSON-Datei (Record) dargestellt und enthält weder Autoreninformationen noch abgeleitete Daten wie die Anzahl der Likes
- Beispiel:
{ text: 'no', createdAt: '2008-09-15T17:25:00.000Z' }
- Beispiel:
- Dateinamen werden als zeitstempelbasierte Schlüssel (Record Keys) erzeugt, um Kollisionen zu vermeiden
- Die Dateistruktur wird durch ein Schema definiert, das Lexicon genannt wird; jede App kann ihr eigenes Lexicon entwerfen
- Beispiel:
com.twitter.post,fm.last.scrobble,io.letterboxd.review
- Beispiel:
- Selbst für dasselbe Konzept können Apps unterschiedliche Lexicons haben; domainbasierte Namespaces vermeiden Kollisionen
Validierung und Vertrauen
- Es gibt keine Lexicon Police — keine App kann die Daten anderer Apps erzwingen
- Apps validieren eingegebene Daten beim Lesen (validate on read) und ignorieren sie, wenn sie ungültig sind
- Bei Änderungen an einem Lexicon ist Abwärtskompatibilität zwingend; Breaking Changes werden in ein neues Lexicon ausgelagert
- Lexicons können öffentlich verteilt werden, und über DNS kann ein Nachweis des Domain-Besitzes erfolgen
Links und Identität
- Von Nutzern erstellte Likes oder Replies müssen auf andere Records verweisen, daher ist ein permanentes Link-Schema erforderlich
- Nach mehreren Versuchen wurde die Identität mit DID (Decentralized Identifier) etabliert
- Ein Bezeichner wie
did:plc:6wpkkitfdkgthatfvspcfmjoist unveränderlich - Jede DID wird zu einem Dokument aufgelöst, das aktuelle Informationen zu Hosting, Handle und Public Key enthält
- Ein Bezeichner wie
- Eine
at://-URI kombiniert DID, Collection und Record Key und liefert Links, die auch bei Hosting-Wechseln nicht brechen- Beispiel:
at://did:plc:6wpkkitfdkgthatfvspcfmjo/com.twitter.post/34qye3wows2c5
- Beispiel:
JSON-Hyperlinks und Darstellung von Beziehungen
- Jeder Like, Repost und Reply hat eine hyperlinkartige JSON-Struktur, die auf andere Records verweist
- Beispiel: Das Feld
parentverweist auf dieat://-URI eines anderen Beitrags
- Beispiel: Das Feld
- Alle Informationen in der UI (Autor, Text, Anzahl der Likes usw.) lassen sich aus diesen Verknüpfungen zwischen Dateien berechnen
Repository und Datenfluss
- Der „everything folder“ eines Nutzers wird als Repository bezeichnet und durch eine DID identifiziert
- Darin befinden sich mehrere Collections und Records
- Ein Repository kann überall gehostet werden, und die Links bleiben auch nach einem Umzug erhalten
- Apps können ein Repository wie ein Dateisystem lesen oder per Stream (WebSocket) abonnieren, um in Echtzeit zu synchronisieren
- Jeder Commit wird über einen signierten Hash-Baum (Merkle Tree) verifiziert, um Datenfälschung zu verhindern
- Relay-Server leiten Ereignisse lediglich weiter und schaffen Vertrauen durch eine überprüfbare Struktur
Erkundung der Atmosphere und reale Beispiele
- pdsls.dev funktioniert durch Eingabe einer DID oder eines Handles wie ein Explorer für soziale Dateisysteme
- Jede Collection und jeder Record kann direkt eingesehen werden
- Die Beispiel-App Sidetrail übernimmt Änderungen an den Records eines Nutzers in Echtzeit und zeigt, dass die Daten im Repository statt in der App liegen
- Die Demo teal.fm Relay visualisiert Musik-Abspielhistorien (Scrobbles), indem sie
fm.teal.alpha.feed.play-Records indexiert, ganz ohne echte API- Mit dem Tool
lex-gqllassen sich GraphQL-Abfragen auf Lexicon-Basis ausführen
- Mit dem Tool
- In Bluesky können Nutzer selbst erstellte Custom-Feed-Algorithmen veröffentlichen
- Beispiel: Der „For You“-Feed von
@spacecowboy17.bsky.socialarbeitet unabhängig und zeigt, wie Dritte Funktionen auf gemeinsam genutzten Daten verbessern können
- Beispiel: Der „For You“-Feed von
Fazit
- Das soziale Dateisystem präsentiert eine datenzentrierte Internetstruktur statt einer appzentrierten
- Nutzer besitzen ihr eigenes Daten-Repository, und Apps reagieren darauf aufbauend
- Ziel ist der Übergang weg von einer „App, die alles macht“, hin zu einem „Ökosystem, in dem alles möglich ist“
1 Kommentare
Hacker-News-Kommentare
Apps können verschwinden, aber Dateien bleiben
Im Beitrag von swyx wird betont, dass langlebige Arbeit letztlich als Dateien/Daten existiert
Daten lassen sich auch ohne Berechtigungen parsen und bleiben selbst bei teilweiser Beschädigung noch nützlich, aber die ökonomischen Anreize drehen sich weiterhin um Code
Wenn Standards entstehen, durch die Code Daten annehmen und ausgeben kann, schafft das enormen Wert für die gesamte Zivilisation
Ich denke, eines der stärksten Hebel, die wir haben, ist, das Entwickler-Ökosystem dazu zu bringen, dass Unternehmen wie Google, Microsoft, OpenAI und Anthropic sich freiwillig an der Datenstandardisierung beteiligen
Aber heutige Apps sind Websites, die von Werbeeinnahmen abhängen, daher gibt es überhaupt keinen Anreiz, in so einer Struktur zu arbeiten
Schon Apple zeigt, dass Standards die Welt oft nicht verändern
Wenn das Feld
createdAtein beliebiger Wert sein kann, könnte ich dann nicht nachträglich Einträge zurückdatieren?Ich frage mich, ob es eine Möglichkeit gibt, per Signatur nachzuweisen, wann etwas erstellt wurde und ob es danach verändert wurde
POSSE und das AT Protocol kann man als interoperablen Marktplatz verstehen
Wie bei Reddit oder Instagram ist User-Content die Ware, Aufmerksamkeit die Währung und die Plattform verdient an Werbung oder Verhaltensdaten
Aber diese Struktur ist nicht zwangsläufig.
Wenn Nutzer Eigentum an ihren sozialen Daten haben, werden Apps zu Interfaces, die diese Daten lesen
Ich wende ein ähnliches Modell auch im Commerce an — Verkäufer hosten ihre Bestell- und Zahlungslogik selbst, und der Marktplatz integriert direkt mit den APIs der Verkäufer
So lassen sich Plattformgebühren senken und Eigentum an die eigentlichen Wertschöpfer zurückgeben
Der Beitrag war so detailliert, dass es für die Vermittlung des Kerns fast etwas zu viel wirkte
Trotzdem sind die Metaphern hervorragend. Mit einem Dateibrowser für PDS könnte man das direkt selbst erleben
Das PDS von Bluesky ist im Grunde ein öffentliches Dateisystem, und Replikation gehört wie bei Git zum Design
Replikation ist nicht kontrollierbar, hat aber auch den Vorteil automatischer Backups
Letztlich bleibt alles, was man auf ein PDS hochlädt, wie ein permanenter Eintrag bestehen, also sollte man vorsichtig sein
Wenn es nützlich, aber lang ist, können andere sich einfach die Teile herausnehmen, die sie brauchen
Im Demo-Abschnitt am Ende des Beitrags sieht man ein echtes Beispiel für einen Dateimanager
Der Ausdruck „eine Welt, in der jeder zum Scraper wird“ trifft den Kern
Ich halte das Konzept „Datei“ bereits für veraltet
Wenn man alles als hashbasierte Blob-Daten behandelt, verschwinden viele Probleme
Was Nutzer wollen, ist nicht eine App, sondern eine Fähigkeit (Capability)
Zum Beispiel die Fähigkeit, Yogavideos anzuschauen, oder die Fähigkeit, Bekannten Updates aus dem eigenen Leben mitzuteilen — nicht YouTube oder Bluesky an sich
Apps sind nur Bündelungen solcher Fähigkeiten
Was wir brauchen, sind maßgeschneiderte Workflows, etwa in einer Messaging-App ein Wort zu suchen und das Ergebnis direkt im Chatfenster zu teilen
Inspiriert wurde ich von PerKeep
Ich habe es als Metapher verwendet, um die n:m-Beziehung zwischen Apps und Dateiformaten zu erklären
Die Erklärung der Repository-Struktur von ATProto zeigt eine inhaltsadressierte Struktur auf Basis eines Merkle-Baums
Lexicon steht nicht in einer 1:1-Beziehung zu Apps, daher bewegt sich AT bereits in Richtung einer Post-App-Ära
Ich denke, dass geschlossene Plattformen (Walled Gardens) ein Ergebnis von Verbraucherpräferenzen sind
Als das Internet alles geöffnet hat, wollten Menschen eher kleine Räume rund um bestimmte Kulturen oder Ideen
IG oder Snap sind in gewisser Weise solche fein segmentierten Gruppenchats
Ich finde es sogar gut, dass meine IG-Posts nicht automatisch auf HN oder Truth Social geteilt werden
Ich kann den Wert von Datenportabilität nicht so richtig nachvollziehen. Übergänge zwischen Plattformen mit unterschiedlichem Kontext wirken für mich wenig sinnvoll
Mein Anisota wurde so entworfen, dass es sowohl Dateien von Bluesky als auch von Leaflet unterstützt
Man kann denselben Post zum Beispiel sowohl auf Bluesky als auch auf Anisota sehen
Außerdem bietet das Projekt Aturi universelle Links für Inhalte auf Basis von ATProto
In ATProto ist bei Apps, die dasselbe Lexicon verwenden, eine vollständige Übertragbarkeit von Identität und Daten möglich
Die Originalbilder liegen lokal bei mir, und jede Plattform ist nur eine andere Darstellung
Ich will keine sinnlose Integration zwischen Plattformen
AT macht lediglich Interoperabilität möglich, ohne alles zu vereinheitlichen
Leaflet zeigt zum Beispiel Bluesky-Posts zur Nachverfolgung von Zitaten an
Durch diese Struktur kann man ein Produkt forken und trotzdem vollständig netzwerkkompatibel bleiben, was den Wettbewerb belebt
Tatsächlich ist Blacksky ein Fall, in dem Bluesky geforkt und eine andere Moderationspolitik angewendet wurde
Beiträge von Dan sind immer interessant. Beim Lesen merkt man irgendwann, dass er der Autor ist
Ich bin skeptisch gegenüber selbstbeschreibenden Datenmodellen (self-describing data model)
Die Behauptung von ATProto, „wenn man nur Lexicon hinzufügt, entsteht ein Client“, wirkt übertrieben
In Wirklichkeit muss man die Bedeutung der Daten verstehen, um eine UI zu bauen, und Lexicon allein reicht dafür nicht aus
Letztlich unterscheidet sich das kaum davon, die Dokumentation zu lesen und es selbst zu implementieren
Standardisierung ist gut, aber das ist nicht unbedingt ein Problem auf dem Niveau einer weltweit replizierten DB
Trotzdem schätze ich den Versuch, Lock-in zu verringern
Allerdings waren die eigentlichen Probleme bei Twitter soziale Faktoren wie politische Inhalte oder Spam
Aber wenn ein beliebter Dienst wie Bento verschwindet, wird jemand versuchen, diese Daten wiederherzustellen
Blento ist zum Beispiel ein Bento-Ersatz auf Basis von ATProto und Open Source, sodass ihn jeder wieder aufsetzen kann
Eine solche Struktur ist ein bedeutender Fortschritt, wenn es um die Beständigkeit von Nutzerinhalten geht
Beim Lesen von „The Unix Programming Environment“ wurde mir klar, wie viel man allein mit einfachen Tools und Textdateien machen kann
Ich stelle mir vor, wie Slack aussähe, wenn es in einem dateizentrierten UNIX-Stil gebaut worden wäre
Ich möchte zurück zu einfachen, kombinierbaren Systemen
Für Menschen gut lesbare Serialisierung ist schön, aber ständiges Parsen und Neuformatieren ist mühsam
Das Konzept neuer sozialer Plattformen, die in einer dezentralen/föderierten Umgebung gemeinsame Protokolle und Datenformate teilen, ist interessant
Aber es dürfte schwer sein, bestehende kommerzielle Plattformen davon zu überzeugen
Wenn sich solche Standards durchsetzen, könnten Social-Marketing-Tools mehrere Netzwerke deutlich einfacher integriert verwalten
In der Realität dominieren aber weiterhin geschlossene Ökosysteme wie Facebook, Instagram und TikTok