80 views
# Local-First & Web of Trust **Bausteine für eine modulare App-Architektur** --- ## Inhalt 1. [Local First](#Local-First) 2. [Web of Trust](#Web-of-Trust) 3. [Modulare App Architektur](#Modulare-App-Architektur) 4. [Prototype](#Prototype) --- ## Local First --- ### Motivation * Blackout / Cyberwar / Extreme Krisen * Zentralisierung von Macht als Zentrales Problem unserer Zeit * Zensur / Überwachung / Chatkontrolle * Freie Software für frei Menschen * Individuelle und Kollektive Selbstermächtigung / Eigenverantwortung * Veränderung Bottom - Up / Grasroots stärken * organisches Dezentrales Wachstum * dApps --> Selbstläufer --- ### Cloud Apps ✅ einfache Zusammenarbeit ✅ Zugriff von mehreren Geräten ❌ Entziehen dem Nutzer Kontrolle und Eigentum ❌ Abhängigkeit Daten liegen auf fremden Servern --- ### Klassische Software ✅ Kontrolle und Besitz über deine Daten ❌ Kollaboration schwierig ❌ Geräteübergreifendes Arbeite schwierig --- ### Ziele ✅ Offline- und lokal arbeitende Software ✅ Synchronisation über Geräte ✅ Kollaboration ✅ Sicherheit ✅ Kontrolle über die eigenen Daten --- ### Implementierung --- #### Data Local Store * IndexDB * SQLite * OPFS --- #### Sync between different Devices * WSS (WebSocket Secure) * WebRTC (Web Real-Time Communication) ##### Gemeinsamkeiten * Zweck Echtzeit-Datenübertragung zwischen Peers * Bidirektional Beide ermöglichen Senden und Empfangen * Browser-Support Beide in modernen Browsern verfügbar * Verschlüsselung Beide verschlüsselt (TLS bzw. DTLS) --- #### Konfliktauflösung CRDTs try to merge data in the least surprising way possible. * Version Control * Event-Sourcing --- ### Vorteile der Local-First Architektur #### Für Benutzer * Reaktive Schnelle anwendungen * Operationen werden in Millisekunden abgeschlossen, nicht in Hunderten von Millisekunden * Keine Ladebalken für grundlegende Operationen. * Offline-Fähigkeit * Volle Funktionalität ohne Internetzugang * Änderungen synchronisieren automatisch bei Wiederverbindung. * Datenbesitz * Benutzer kontrollieren ihre Daten * Sie befinden sich auf ihren Geräten und reduzieren die Abhängigkeit von Cloud-Anbietern. * Privacy by Design * Sensible Daten können auf dem Gerät bleiben oder vor der Synchronisation verschlüsselt werden --- #### Für Entwickler * Vereinfachtes State Management * Die lokale Datenbank wird zu Ihrer einzigen Quelle der Wahrheit * State-Management-Bibliotheken werden in vielen Fällen nicht benötigt * Reduzierte Backend-Komplexität * Statt vieler API-Endpunkten benötigen Sie oft nur einen Sync-Endpunkt * Der Server konzentriert sich auf Konfliktauflösung und Datenspeicherung anstatt auf Geschäftslogik. * Bessere Skalierbarkeit * Server handhaben periodische Sync-Operationen anstatt konstanter Anfragen * Dieser “skaliert mit Daten, nicht mit Last”-Ansatz kann Infrastrukturkosten reduzieren. * Echtzeit standardmäßig * Observable Queries und reaktive Patterns machen Echtzeit-Updates natürlich, nicht nachträglich. --- ### Herausforderungen --- #### Komplexität der Datensynchronisation * Wenn Geräte offline arbeiten, divergieren Daten unweigerlich * Gebündelte Lösungen: Tools wie Firebase bieten schlüsselfertige Synchronisation, binden Sie aber an ihr Ökosystem. * Benutzerdefinierte Synchronisation: Bibliotheken wie RxDB lassen Sie Synchronisation auf Ihrer bestehenden Infrastruktur implementieren, erfordern aber mehr Entwicklungsaufwand. --- #### Konfliktauflösung Konflikte müssen gelöst werden! * Last-write-wins (einfach, aber kann Daten verlieren) * Benutzerdefinierte Merge-Funktionen (flexibel, aber komplex) * CRDTs wie Automerge oder Yjs (mathematisch fundiert, aber mit Kompromissen) --- #### Schema-Migrationen * Client-Datenbanken auf Tausenden von Geräten * Migrationen müssen mehrere Schema-Versionen elegant handhaben, da Benutzer zu unterschiedlichen Zeiten aktualisieren. --- #### Speicherbegrenzungen * Obwohl sich Browser-Speicher erweitert hat, ist er nicht unbegrenzt * Local-First funktioniert am besten für benutzerbezogene Daten --- #### Sicherheit & Access Control * Verschlüsselung und Access Control müssen dezentral und unabhänig von Server entworfen und implementiert werden --- ### Libraries & Frameworks https://yjs.dev https://loro.dev/ https://automerge.org/ https://jazz.tools/ https://www.evolu.dev/ https://zero.rocicorp.dev/ https://rxdb.info/ https://p2panda.org/ https://willowprotocol.org/ https://nostr.com/ es gibt noch viele mehr --- ### Ausblick & Handlungsempfehlung - Local-First ist keine fertige Technik – es braucht weitere Forschung & Experimentieren - Entwickler und Anbieter sollten mit lokalen Kopien + Sync-Mechanismen experimentieren - Nutzer sollten Bewusstsein für Daten-Eigentum und Kontrolle entwickeln. --- ## Web of Trust * Real-Life verifizierte Kontakte * Daten gezielt mit Freunden und Gruppen teilen * Schutz vor Spam / Trollen / Zensur / Überwachung * Verschlüsselung --- ### E2EE ![](https://hack.utopia-lab.org/uploads/bf7cac51-f1f8-4c5f-ab2a-a2a0630dcac0.png) --- ### Dezentrale Auth **Simple** Event-Sourcing Alle Aktionen signiert UI zeigt nur gültig signierte Daten **Vollständig** [UCAN](https://ucan.xyz/specification/) --- ## Modulare App Architektur --- ### Ziele * Gemeinsamer Kern & Architektur für Utopia, Ocelot, DANK und vieles mehr * Möglichkeit schaffen mit unterschiedlichen Datenbank und Identitätslösungen zu experimentieren --- ### Frontend-Kit * AppShell + Module * Plugin Architektur * Generische Items * Gemeinsame Daten- und Identitätsschnittstelle im Frontend * Backend-Anbindungen sind austauschbare Connectoren * Gruppen / Kontext / Instanz / Space (Whitelabel) --- ### Services (serverbasiert) E-Mail / Notifications Interoperabilität / Sync CalDav Clustering Map Tiles Geo Coder ID-Backup / Reset --- ## Prototype --- https://web-of-trust.de/?doc=automerge%3A3MqohNa5eq1ZZBsogMDXc6VMLimU --- * Automerge * Automatische Keypair Generation (IndexedDB, File-Backup) * Signierte Aktionen * Workspace Docs * User Docs