Rethink Collaboration - WAS will ich mit WEM?
By Mathias Ball
Titel
Rethink Collaboration… Oder WAS will ich mit WEM?
Zum CLT-2019 stellten wir unser Projekt “K4” vor, das sich einer effektiven, durchdachten und sparsamen Verwaltung persönlicher Daten verschrieben hat (“Tiny Data” in Opposition zum beliebten “Big Data” Ansatz). Doch was sind meine Datenberge wert, wenn ich sie nicht mit anderen teilen kann, wenn sie nicht die Grundlage für ein Zusammenwirken von Menschen sein können? Darum haben wir uns in den letzten Jahren bemüht, unserer Anwendung die Fähigkeit des Austauschs einzuhauchen.
Zitat
Wie nutzlos, durch dieses Leben zu wandern, wär’s nicht die Brücke zu einem anderen.
Friedrich von Bodenstedt
Wieso?
Software, moderne Technik sollte Menschen verbinden, nicht trennen. Paradoxerweise tut sie beides: Insbesondere Mobilkommunikation hat eine ungekannte Verbindung zwischen Menschen geschaffen; kleine Videos sind in Handumdrehen erstellt und mit Freunden geteilt. Immer mehr Aspekte des öffentlichen Lebens finden im digitalen Raum statt - man denke nur an Behördengänge, die man im Vorfeld anmeldet, an on-line Einkäufe via Amazon & Co. oder auch Urlaubsplanungen via booking.com oder flight24.com. So bequem einige dieser Dienste auch sein mögen, bergen sie auch die Gefahr, als Mensch zu einer Nummer degradiert zu werden.
Das machte sich mir persönlich insbesondere dann bemerkbar, wenn man über einen Kundenservice Hilfe in Anspruch nehmen möchte: Es ist, als ob man mit dem Ticket, das bei einem solchen Akt eröffnet wird, eine Nummer an die Stirn geklebt bekommt. Welches aber nicht wirklich hilft, wenn sich mehrere Leute mit deinem Problem befassen müssen, und Servicecenter-Mitarbeiter A nicht weiß, was B bereits getan hat, aber eigentlich C das Problem verstehen und lösen könnte, jedoch nicht erreicht werden kann.
Irgendwie vermisse ich die Zeiten vor ca. 20 Jahren, als man als Kunde noch mit Fachpersonal Kontakt hatte und Probleme erörtern konnte und auch gelöst bekam. Hier hat in meinen Augen der Trend der Digitalisierung zu einer Trennung von Menschen geführt, die ich - und vermutlich auch viele andere leidgeplagte Seelen - als sehr kontraproduktiv empfinden.
Daraus ergibt sich die Frage: Wie kann man diesem Trend etwas entgegen setzen und mit Programmen/Technik dabei helfen Menschen wieder näher zu bringen?
Konkretisierung
Riskieren wir einen Blick in die Welt der Zusammenarbeit im Netz. Da fallen oft große Namen wie SAP, MS Exchange, Jira, Groupware, … Allen ist gemein, daß sie ihren Fokus auf folgende Frage richten: Womit kann ich einen Austausch unter Mitarbeitern einer Firma, Mitgliedern eines Vereins etc. realisieren? Doch, warum sollte man sich als Benutzer, als Mensch mit der Frage nach die WIE beschäftigen? Sollte die Frage nicht stattdessen lauten: WAS will ich mit WEM besprechen oder austauschen?
Gewiß haben die Schöpfer von Groupware-Lösungen Mittel und Wege gefunden, ihren Benutzern einen komfortablen Weg zu ebnen. In den allermeisten Fällen verfolgen diese Lösungen zentralisierte Ansätze, die mit viel Aufwand passende Rechte an ihre Teilnehmer verteilen und oft auch hochverfügbar sein müssen, wenn die Teilnehmer arbeitsfähig bleiben wollen. In der Folge der steigenden Komplexität lagern Firmen ihre IT vollständig aus und überlassen ihre sensiblen Daten der Obhut anderer.
Vertraulichkeit…?
Eine Frage des Glauben…?
Lassen wir Firmen außen vor; und eine weit verteilte Gruppe hat eine Idee für ein Open-Source-Projekt. Was tun? Software auf Github, Bugtracker auch irgendwo, Webseite, … überall Server bei Dienstleistern wie z.B. STRATO (im Übrigen mit dem selben leidigen Problem Kundenservice wie oben beschrieben), und eine Kontrolle, was wem anvertraut wird, ist immer unübersichtlicher.
Ohne Server generell zu verteufeln (sie erfüllen ihren Zweck auch in Zukunft), aber kann man sich einen Weg denken, wie man für den gesamten Austausch ohne zentrale Instanzen auskommt?
- Die Kommunikation P2P (Peer-to-Peer) bzw. so gestaltet, daß sich Benutzer nur eine Frage stellen: WEM sende ich WAS? Aber nicht: WIE?
- Die ganze Groupware auf Basis von P2P? Anstelle eines Servers, der alle Daten verwaltet und ich auch mit Daten konfrontiert werde, die mich nichts angehen, eine Lösung denken, wo Menschen nur das zugeteilt bekommen, was sie auch betrifft.
- Suche in persönlichen Datenbeständen anderer via P2P? Eine persönliche Zulassung vorausgesetzt!
- Kann man sich eine Anwendung denken, die verbreitete Kommunikationsdienste (zentralistische ebenso wie föderale) wie Telegram https://telegram.org, Matrix https://matrix.org, XMPP https://xmpp.org, E-Mail nur als Möglichkeit für den Austausch sieht, aber nicht als Notwendigkeit?
- Kann man sich also eine Anwendung denken, die sich auf Deine Daten und Deine Kontakte konzentriert und einen Austausch mit ihnen ermöglicht, ohne die technischen Details des Austauschs zu thematisieren und ohne exklusive Dienste in Anspruch zu nehmen?
All diesen Fragen hat sich unser Projekt “K4” mit der GUI “Clarissa” gestellt und eine Grundlage entwickelt, die einen Austausch ermöglicht, der unabhängig davon ist, welches Transportsystem (Telegram, Matrix, etc.) die Übertragung vornimmt.
Standbeine der Kommunikation zwischen Clarissa-Instanzen
Vier Standbeine für die Kommunikation zwischen Clarissa-Instanzen sind dazu bisher entworfen und implementiert worden:
- Der Austausch der Identität: Vertraulichkeit ist technisch durch Verschlüsselung, Authentizität durch Signatur zu erreichen. Eine “Identität” liefert die dazu nötige Grundlage - siehe asymmetrische Kryptographie.
- Der Austausch von Daten: Jedes Objekt in der Datenbank, sei es ein Kontakt, ein Ticket, ein Dokument, eine Notiz, eine E-Mail, … kann versendet und empfangen werden. Auch beliebige Mengen von Objekten, z.B. das komplette Geplänkel zweier über Telegram.
- Der Austausch von Dateien: Eine Datei oder auch zwei per Mail senden ist oft noch überschaubar und für die allermeisten auch machbar. Was aber, wenn ich einen ganzen Ordner versenden will? Man ist plötzlich mit mehreren technischen Fragen konfrontiert, die für viele Menschen nur noch schwer umsetzbar sind: Erzeugen eines ZIP-Archivs, Achten auf Größenbegrenzung beim Versand von z.B. einer Mail… All das sollte Benutzer nicht kümmern, lediglich: Welcher Ordner an wen?
- Entfernte Suche: Die Suche über einen Index der eigenen Daten ist trivial, aber im Falle einer Zusammenarbeit wird das Stöbern in den Daten anderer zu einer interessanten Option. Da wir uns Vertraulichkeit auf die Fahne geschrieben haben, liegt es in der Verantwortung jedes Einzelnen, genau darauf zu achten: Wer darf was sehen?
Siehe dazu auch: Clarissa Net in a Nutshell
Erfahrungswerte und eine Idee
Man kann sich vorstellen, daß es keine clevere Idee ist, einen öffentlichen Kommunikationsserver mit Tests der oben erwähnten 4 Methoden zu bombardieren. Um eine solide Grundlage für Tests der Mechanismen zu haben, entwickelten wir ein Transportsystem auf der Basis von Dateien. Die Idee ist sehr einfach: Der Sender schreibt eine Datei in einen dedizierten Ordner des Empfängers, der Empfänger realisiert eine neue Datei dort, liest ihren Inhalt und generiert daraus eine Nachricht, die genauso strukturiert ist wie eine Nachricht aus Telegram, Matrix etc.
Was zunächst nur für Testzwecke herhalten sollte, regte einige neue Ideen an: Was spricht dagegen, den Austausch von Dateien über ein geteiltes Dateisystem wie NFS, Samba zu gestalten und damit eine Kommunikation in einer geschlossenen Umgebung, z.B. in einem Institut zu ermöglichen?
Und, wenn man eine Kommunikation über Dateien realisieren kann, läßt sich das auch ausnutzen, wenn der Austausch der Dateien selbst über ein externes Programm erfolgt, z.B. mittels Syncthing?
Werfen wir einen Blick auf die Webseite dieses Projekts, https://syncthing.net. Dort findet man die folgende kurze Beschreibung:
Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it’s transmitted over the internet.
In den Details erfährt man außerdem, daß die Kommunikation P2P und verschlüsselt erfolgt, Server im Wesentlichen nur zur Vermittlung einer Verbindung herangezogen werden. Weiterhin: Alle Einstellungen sind über eine REST API steuerbar, gute Voraussetzungen also, um ein weiteres Transportsystem auf der Basis von Syncthing umzusetzen.
Realisierung
In der K4/Clarissa Welt ist ein Transportsystem eine Ansammlung von Funktionen, die den Austausch von Daten beliebiger Art über je ein technisches System ermöglicht. Inzwischen sind solche Transportsysteme für:
- Telegram
- Matrix
- Trvfile (TRansport Via FILE), also über Dateien (wie oben beschrieben)
- Syncthing
und rudimentär auch über:
- XMPP
implementiert.
Die Schnittstelle ist immer die gleiche, so daß für Anwender nicht die Frage nach dem WIE relevant ist, sondern nur an WEN? Die Entscheidung, welches Transportsystem verwendet werden soll bzw. kann, fällt das Programm anhand der Möglichkeiten, die eine Kontaktperson anbietet.
Jedem Transportsystem ist eine Nutzer-ID zu eigen, das wäre zum Beispiel die Mail-Adresse, die Telefonnummer bei Telegram, die Matrix-ID bei Matrix, ein Ordner bei Trvfile. Syncthing verwendet eine kryptische Nummer, die bei der ersten Benutzung des Programms automatisch generiert wird.
Ein Beispiel:
RA6DQ7H-GOG3MLR-AE7FM2U-G32RSYQ-CNLIHEM-FKAI3B2-QR5HFVE-QUFLIQE
Diese Kennung identifiziert eindeutig eine Syncthing-Instanz im weltweiten Netz. K4/Clarissa kombiniert diese Nummer noch mit dem Nicknamen der Benutzerin in ähnlicher Weise wie eine Mail-Adresse:
erika@RA6DQ7H-GOG3MLR-AE7FM2U-G32RSYQ-CNLIHEM-FKAI3B2-QR5HFVE-QUFLIQE
Ferner legt K4/Clarissa beim ersten Start von Syncthing Ordnerstrukturen in etc/syncthing
und var/syncthing
an (Pfade relativ zur Installation des Programms Clarissa).
In beiden werden Unterordner für meine eigenen Daten sowie für jeden Kommunikationspartner angelegt.
Über die REST API wird dem Syncthing-Server mitgeteilt, welcher Kontakt über welchen Ordner bedient wird.
Die Kommunikation ist dann simpel:
Beim Senden wird eine Datei in den Ordner des Empfängers geschrieben.
Die Datei enthält eine Nachricht in einer JSON-Serialisierung.
Syncthing nimmt dann die Übertragung vor, wenn der Empfänger Syncthing ebenfalls am Laufen hat.
Die K4/Clarissa-Instanz des Empfängers realisiert eine neue Datei im Ordner des Senders.
Die Datei wird gelesen und in eine Nachricht zurück transformiert.
Der Ablauf macht auch zwei Schwächen dieser Art der Kommunikation deutlich:
- Die Übertragung hat eine gewisse Latenz - erfahrungsgemäß ca. 10s - ist also langsamer als gewohnte Chat-Systeme wie z.B. Telegram
- Es kann erst übertragen werden, wenn beide Kommunikationspartner Clarissa mit Syncthing am Laufen haben
Der zweite Punkt ist der Preis für eine P2P-Kommunikation, d.h. für eine Übertragung ohne einen Vermittler.
Die Vorteile dafür sind:
- Echte verschlüsselte P2P-Kommunikation (Syncthing verwendet TLS)
- Kein Vermittler dazwischen kann darüber entscheiden, welche Inhalte ausgetauscht werden
- Wenig Overhead bei der Übertragung größerer Datenmengen, so daß die Übertragung nur durch die Bandbreite des Anschlusses begrenzt ist