GitHub Atom: Texteditor bekommt eine Teamfunktion
Mit Teletype können Entwickler ihre Arbeitsumgebung für andere freigeben und anschließend gemeinsam bearbeiten. Die Kommunikation erfolgt Peer-to-Peer über verschlüsselte WebRTC-Kanäle.
Der quelloffene Texteditor Atom bekommt mit Teletype eine Erweiterung, mit der Entwickler gemeinsam dieselbe Datei bearbeiten können. Der Name ist eine Anspielung an den historischen Hersteller von Fernschreibern und die daraus hervorgegangene Kurzform von "teletypewriter". Das Tool setzt auf das Konzept von Echtzeitportalen, über die Entwickler ihre Arbeitsumgebung mit anderen teilen.
Der Host und seine Gäste
Nach der Installation über die Einstellungen von Atom oder den Kommandozeilenbefehl apm install teletype finden Entwickler am unteren rechten Rand des Editors ein Collaboration-Menü. Nach dem Klick auf den Share-Button zeigt Atom eine ID an, die andere nutzen können, um Zugang zum aktuellen Workspace zu erhalten. Die Gäste müssen dazu ebenfalls die Erweiterung installieren und nach dem Klick auf den Join-Button die ID des Host eingeben. Anschließend öffnet ihre Atom-Instanz ein neues Tab, das die geteilte Sitzung darstellt.
Jeder Teilnehmer hat seinen eigenen Cursor und behält seine eigenen Einstellungen wie Tastenbelegungen und Themes. Die Zusammenarbeit erfolgt auf der Ebene der Eingaben, spiegelt also denselben Inhalt, aber nicht dieselbe Darstellung des Host wider. Aus seiner Sicht bleiben alle Dateien lokal. Beim Wechsel zu einem anderen Fenster überträgt Teletype die zugehörige Datei an die Gäste, bei denen sich die Darstellung entsprechend ändert.
Technische Umsetzung
Der Aufbau der Verbindung findet ĂĽber einen GitHub-Server statt, der aber nur den ersten Handshake und den Austausch der Metadaten ĂĽbernimmt. Die anschlieĂźende Kommunikation erfolgt ĂĽber verschlĂĽsselte Peer-to-Peer-Verbindungen. Dazu setzt Teletype auf den WebRTC-Standard und baut RTCDataChannel -Instanzen fĂĽr die Verbindung auf.
Um Konflikte beim Editieren zu vermeiden setzt Teletype auf CRDT (Conflict-Free Replicated Data Type). Es verwaltet alle Änderungen lokal und führt sie anschließend zusammen und behandelt potenzielle Konflikte, wenn beispielsweise zwei Bearbeiter dasselbe Zeichen unterschiedlich ändern.
Teletype ist weitgehend unabhängig von Atom. Die Bibliothek teletype-client, die den Großteil der Kommunikationslogik enthält, ist Editor-agnostisch. Demnach sollte sie sich in nahezu beliebige Web-Anwendungen implementieren lassen.
Weitere Details lassen sich dem Blogbeitrag zu Teletype entnehmen. Das Team plant für die Zukunft unter anderem die Implementierung einer Voice-Chat-Funktion. Wer Teletype ausprobieren möchte, findet auf der Projektseite eine Kurzanleitung. (rme)