2324828

Von Browser zu Browser gleichzeitig im Web zusammenarbeiten

22.01.2018 | 13:30 Uhr |

Yjs ist eine Open-Source-Javascript-Bibliothek, die die gleichzeitige Bearbeitung von strukturierten Daten wie Richtext, JSON und XML über das Web ermöglicht.

Es ist noch gar nicht so lange möglich, aber viele Nutzer haben sich bereits daran gewöhnt, gemeinsam Dokumente über das Web mittels eines Web-Browsers wie Firefox oder Chrome zu bearbeiten.

Google Docs ist das bekannteste Beispiel. Diese Web-Anwendung kommt den Möglichkeiten moderner Textverarbeitungssysteme schon recht nahe. Sie bietet reichhaltige Formatierungsmöglichkeiten mit dem sogenannten Richtext, und auch eine Vielzahl anderer bekannter Möglichkeiten wie die laufende Rechtschreibkontrolle sind vorhanden.

So verwundert es nicht, dass viele Nutzer diese kostenlose Möglichkeit wahrnehmen, gemeinsam an Dokumenten zu arbeiten, und dass auch die Hersteller von Textverarbeitungssystemen Möglichkeiten des gleichzeitigen gemeinsamen Arbeitens an Dokumenten bieten. Auch andere aus der Welt der Bürosoftware bekannte Anwendungen wie Tabellenkalkulationen und Präsentationswerkzeuge stehen zur Verfügung.

Viele Nutzer merken aber auch, dass die Arbeit über das Web ruckeliger und abgehackter wird, je größer die Dokumente werden und je mehr Nutzer gleichzeitig an einem Dokument arbeiten.

Das liegt zum einen an den Algorithmen, die notwendig sind, mögliche Konflikte zwischen den einzelnen Bearbeitungsschritten aufzulösen, aber auch an den Protokollen, die zur Kommunikation verwendet werden.

Algorithmen haben mittlerweile eine lange Geschichte. Umso erstaunlicher ist es, dass es bis heute außerhalb der Forschung kaum Unterstützung für Entwickler gibt, diese Algorithmen in einer einfachen Form für eigene Web-Anwendungen zur Verfügung zu stellen. Oft werden nur bestimmte, meist einfache Datentypen oder bestimmte, meist einfach zu kontrollierende Kollaborationsaspekte unterstützt.

Design-Ziele

Die Open-Source-Javascript-Bibliothek Yjs wurde entwickelt, um Entwickler von Web-Anwendungen zu unterstützen. Dabei wurden einige Aspekte bei der Entwicklung besonders betont.

• Yjs stellt eine starke Vereinfachung für das gleichzeitige Bearbeiten dar.

• Im Gegensatz zu anderen Implementierungen ermutigt Yjs Entwickler, eigene Datentypen zu entwickeln.

• Yjs bietet Unterstützung für die Offline-Bearbeitung von Dokumenten.

• Durch die peer-basierte Vorgehensweise werden sogenannte Single-points-of-failure vermieden.

Datentypen

Es gibt mittlerweile unzählige Möglichkeiten, komplexe Objekte wie 3D-Modelle oder Videos gemeinsam über das Web zu bearbeiten, die über das hinausgehen, was wir klassischerweise kennen. Allerdings braucht man dafür oft noch Plug-ins, die man zusätzlich herunterladen und installieren muss, oder die Werkzeuge sind auf einen bestimmten Datentyp beschränkt, oder man kann die Werkzeuge zwar benutzen, aber nicht in eigene Web-Anwendungen einbauen.

Da das Web prinzipiell eine offene Plattform ist, macht das alles oft wenig Sinn und überzeugt die meisten Nutzer auf Dauer nicht.

Viel besser wäre es, den Entwicklern Möglichkeiten an die Hand zu geben, mit einfachen vorgegebenen Datentypen komplexere Datentypen selber zu erzeugen, sie in ihre Anwendungen einzubauen und sie dann mit anderen zu teilen.

Obwohl Yjs genau diese selber erzeugten Datentypen unterstützt, bringt die Bibliothek doch eine Reihe von häufig genutzten Datentypen mit.

• map - Maps können beliebige Zeichenketten sein.

• array - Arrays können beliebige strukturierte Daten sein, beispielsweise JSON

• xml - XML implementiert den DOM. Damit können beliebige DOM-Objekte im Browser manipuliert werden, etwa Videoelemente, über die dann gemalt werden kann.

• text - Mit diesen Datentypen wird das gleichzeitige Bearbeiten von Texten möglich, beispielsweise Programmtexten wie im Ace-Editor, aber auch HTML textareas, input elements und andere Textelemente wie <h1> oder <p>.

• richtext - Ermöglicht die Zusammenarbeit auf reichhaltig formatierten Texten wie in Textverarbeitungen. Hiermit wird eine Anbindung an den Quill-Richtext-Editor unterstützt.

Unterstützung von Kommunikationsprotokollen

Konnektoren verbinden Nutzer über ein Kommunikationsprotokoll. Viele Web-Anwendungen nutzen spezielle Server auf dem Web, um das gemeinsame Bearbeiten von Dokumenten zu unterstützen. Die Vorteile liegen klar auf der Hand. Es gibt immer eine feste Adresse für das Dokument und alle Änderungen werden mit dem Server letztendlich synchronisiert, so dass ein konsistenter Zustand des Dokuments existiert.

Leider erweist sich der Server oft als Nadelöhr, wenn es um skalierbare Leistung geht. Deshalb ist es wichtig, dem Entwickler und damit auch den Nutzern von Web-Anwendungen mehrere Möglichkeiten zur Auswahl zu bieten.

Als Alternativen zu server-basierten Protokollen stehen auf dem Web auch peer-basierte Protokolle zur Verfügung. Hier werden die Web-Browser direkt zusammengeschaltet und umgehen damit das mögliche Nadelöhr. Dennoch müssen die Browser ebenso zuverlässig einen konsistenten Zustand des Dokuments gewährleisten. Yjs leistet genau dies auf allen Protokollarten.

• WebRTC - WebRTC (Web Real-Time Communications) ist ein Peer-to-peer-Protokoll für Web-Browser, so dass die gleichzeitigen Änderungen ohne Umweg über einen zentralen Server an die Web-Klienten ausgeliefert werden.

• Web-Sockets - Der Web-Sockets-Konnektor erzeugt einen Server, über den die Kommunikation zwischen den Klienten abgewickelt wird.

• XMPP - Dieser auf dem Chat-Protokoll XMPP (Extensible Message and Presence Protokoll) beruhende Konnektor stellt einen Mehrbenutzer-Chat zur Verfügung, über den die Kommunikation zwischen den Klienten abgewickelt wird.

• IPFS – Das interplanetare Dateisystem IPFS dient der verteilten Speicherung und Adressierung von beliebigen Inhalten auf Basis eines Blockchain -Protokolls. Der Konnektor wurde von IPFS Community entwickelt mit dem Ziel, ein vollständig serverloses Netzwerk zu erzeugen.

Es gibt noch einen Konnektor zu Testzwecken, der auch das schlimmste anzunehmende Verhalten von Nutzern simulieren kann.

Offline-Bearbeitung

Mittlerweile bieten auch Browser Möglichkeiten, strukturierte Daten zu speichern. Das erweitert die Möglichkeiten von Web-Anwendungen erheblich. Es wird nun möglich, auch offline zu arbeiten, d.h. ohne dass eine Verbindung zum Web besteht. Bei der Wiederaufnahme werden dann die Datenbanken der einzelnen Browser oder Web-Anwendungen automatisch miteinander abgeglichen, ohne dass der Benutzer dies bemerken würde.

Da Javascript auch in der Erstellung von serverseitigen Anwendungen immer beliebter wird, bietet Yjs auch die Möglichkeit, eine speziell für diesen Fall entwickelte Datenbank zu nutzen.

Yjs bietet drei Typen von Datenbanken zur Speicherung von Dokumenten.

• memory - Diese Datenbank speichert die Dokumente im Hauptspeicher

indexeddb - Diese Datenbank ist für die persistente Speicherung von Dokumenten gedacht, wenn in einem Browser gearbeitet wird.

leveldb - Diese Datenbank ist in der Hauptsache für die Unterstützung von serverseitigen Javascript-Anwendungen gedacht.

Beispiele für Web-Anwendungen

Kollaborative Annotationen auf Web-Objekten

Eine Web-Anwendung für die gleichzeitige Annotation von Videos wurde mit Yjs realisiert. Die Annotationen werden direkt auf das Video gemalt und mittels SVG verwaltet. Da SVG auf dem XML-Standard aufsetzt und direkt von Yjs unterstützt wird, kann es ohne Erweiterung der Datenstruktur direkt genutzt werden. SVG wird von den meisten Web-Browsern unterstützt und direkt im Browser-Fenster dargestellt. Die Anwendung ist für HTML5-Videos konzipiert und optimiert, kann aber auch für andere HTML5-Objekte im Web-Browser, etwa Folien, verwendet werden. Wenn ein Nutzer ein Video annotiert, werden andere Nutzer, die sich auf der gleichen Web-Seite befinden, benachrichtigt.

Kollaborative Bearbeitung von Diagrammen

Die gleichzeitige Bearbeitung von Diagrammen ist sicherlich eine fortgeschrittene Web-Anwendung, die eher für Ingenieure und Wissenschaftler von Interesse sein dürfte. Die Erstellung von Diagrammen ist oft sehr aufwändig und bedarf je nach Notation auch eines speziellen Trainings. In der Kombination mit web-basiertem Training, der Web-Anwesenheit von Lehrkräften und den Möglichkeiten der Realisierung lassen sich aber viele dieser Aspekte bereits jetzt gut abdecken. Es gibt auch kommerzielle Nutzer von Yjs. So setzt zum Beispiel die französische Firma Linagora das Framework ein. Es findet sich in Hubl.in , einer freien Open-Source-Videokonferenzlösung für den Chat, und in Pluxbox , einer Software zur Verwaltung von Radiolisten.

Offene Punkte

Die Darstellung der Aufmerksamkeit ist ein bekanntes Problem in der kollaborativen Bearbeitung von Dokumenten. In Google Docs zeigt ein Cursor an, wo jemand gerade das Dokument bearbeitet.

Was aber passiert, wenn das Dokument länger als die Darstellung auf einem Bildschirm ist? Oder wenn derjenige das Dokument vor wenigen Minuten bearbeitet hat, aber nicht im Moment?

Damit deutet sich schon an, dass gerade die Kombination von Offline-Bearbeitung und Aufmerksamkeitssteuerung ein interessanter Aspekt zukünftiger Arbeiten sein wird.

Ein weiterer Punkt, der mit der Offline-Bearbeitung offene Fragen aufwirft, ist die Garbage Collection. Bei der Garbage Collection handelt es um das automatische Aufräumen von nicht mehr benötigtem Speicher. Dies ist möglich, wenn eingefügte Elemente zur Entfernung markiert und alle Beteiligten darüber informiert sind. Dennoch ist es in der Praxis schwer festzustellen, ob alle Beteiligten dann auch darüber informiert wurden, dass die Entfernung wirklich durchgeführt wurde.

Existierende Lösungen sind sehr aufwändig. Yjs unterstützt die Garbage Collection mit zwei Zwischenspeichern (Buffern). Zur Entfernung markierte Inhalte werden dabei in den ersten Zwischenspeicher bewegt. Wenn sich nach einer festgelegten Zeit nichts ändert, wird der Inhalt in den zweiten Zwischenspeicher kopiert, der dann aufgeräumt wird. Das funktioniert auch in der Praxis erwiesenermaßen gut, kann aber mit Teilnehmern, die spät kommen oder offline gearbeitet haben, dennoch zu Konflikten führen. Yjs wird die Garbage Collection in der Offline-Bearbeitung in Kürze unterstützen.

Weitere Punkte, an denen die Entwickler zur Zeit arbeiten, sind die Unterstützung von existierenden Javascript-Rahmenwerken wie Polymer oder React , die Verbindung von Custom Elements in HTML5 mit y-xml zur Trennung von strukturierten Daten und deren Darstellung im Browser sowie die weitere Entwicklung im Interplanetary Filesystem IPFS.

0 Kommentare zu diesem Artikel

PC-WELT Marktplatz

2324828