The goal to develop a realtime capable text editor for collaborative scientific writing tries to accomplish two different purposes. On one side, it should be possible for a group of authors to work on a scientific text in a cooperative way. On the other side, this cooperation should take place in realtime.
These requirements imply that there are editing features and markup elements needed in the scientific context. Above all, such an editor has to support structural elements like chapters and sections. Moreover, there has to be the possibility to embed figures and to manage text-related bibliography. The additional constraint of being realtime capable tightens the demands to the effect, that changes of one author should be visible to all other authors immediately.
This thesis adresses the question, how such an editor could be realized using existing software.
Using the proven collaborative realtime text editor Etherpad as a starting point, this software should be extended to fit the needs of collaborative scientific writing.
2. Motivation
Status quo, wissenschaftliches Schreiben
Word + Email
Word + Dropbox
LaTeX + SVN
Lösungen sind entweder unflexibel oder nicht leicht zu bedienen
Wunschliste
Bedienbarkeit von Word
PDF-Ausgabe von LaTeX
Echtzeit-Kollaboration
Browser-basiert
E-Mail Spamschutz 2
3. Agenda
Theoretische Grundlagen
Zielsetzung und Konzeption der Arbeit
Funktionsanforderungen
Grundlegende Designentscheidungen
Technisches Rahmenwerk
Design und Implementierung
Anpassung der Programmierschnittstelle
Anpassung der Datenhaltung
Texttransformation nach LaTeX
Zusammenfassung und Ausblick
E-Mail Spamschutz 3
5. Kollaboratives Schreiben
Phasen der Texterstellung durch einen einzelnen Autor
Planung (planing)
Translation (translation)
Begutachtung (reviewing)
Übertragung dieser Phasen auf eine Gruppe von Autoren
Zusätzliche Koordinierung und Planung bei mehreren Autoren notwendig
Festlegung von Vorgehensweisen
Verteilung von Rollen und Aufgaben
…
Definition einer einheitlichen Nomenklatur durch Lowry et al.*
* P. B. Lowry, A. Curtis, and M. R. Lowry. Building a Taxonomy and Nomenclature of Collaborative Writing to Improve Interdisciplinary Research and Practice
SciflowWriter 5
6. Phasen des kollaborativen Schreibens
Abbildung: Phasen des kollaborativen Schreibens nach Lowry et al.
SciflowWriter 6
14. Funktionsanforderungen
Anwendungsszenarien
Konferenz, Seminar, Arbeitsgruppe
Auszeichnungsmerkmale für wissenschaftliche Textgestaltung
Überschriften
Abbildungen
Literaturverwaltung
Keine direkte Manipulation des zugrundeliegenden Markups
Möglichkeit der Manipulation der Dokumentenvorlage
Restriktion der Dokumentenzugriffe
z.B. schreibender Zugriff nur für Mitglieder der Autoren des Dokuments
SciflowWriter 14
15. Grundlegende Designentscheidungen
Etherpad(-lite) als Softwarebasis der zu entwickelnden Software
kollaborativer , webbasierter Texteditor
PDF als angestrebtes Ausgabeformat
Erzeugung des Ausgabeformats mit Hilfe von LaTeX
Existenz von Dokumentenvorlagen für den wissenschaftlichen Bereich
hohe Qualität der generierten PDF-Dateien
SciflowWriter 15
16. Grundlegende Architektur
Abbildung: Erweiterung der Funktionalität durch eine neue Schnittstelle
SciflowWriter 16
19. Technisches Rahmenwerk: Etherpad(-lite)
Etherpad
ursprüngliche Web-Applikation von AppJet Inc. auf Basis des gleichnamigen Frameworks
später Open-Source-Software nach der Übernahme von AppJet durch Google
Etherpad-lite
Fork von Etherpad auf Basis von Node.js (anstatt AppJet)
Clientcode fast vollständig identisch mit Etherpad
Etherpad Etherpad-lite
Codegröße 30 MB 1,5 MB
Codegröße (LOC) ca. 100‘000 ca. 9‘000
Programmiersprachen JavaScript, Java, JavaScript
Scala
Arbeitsspeicherverbrauch 250 – 1000 MB 15 – 30 MB
SciflowWriter 19
22. Etherpad-Internas
Kollaborationsfunktionen basieren auf dem Konzept der operationalen Transformation
Abbildung: Beispiel für operationale Transformation
SciflowWriter 22
23. Etherpad-Internas: Changesets
Operationen heißen im Kontext von Etherpad Changesets
Beispiel
Z :196 |5=97 =31 *4 *5 +1 $ x
Erläuterung*
Basistext hat eine Länge von 196
Lasse 97 Zeichen unverändert, wobei 5 Zeichen davon n sind
Lasse 31 Zeichen unverändert
Setze die Attribute mit der Attribut-ID 4 und 5 für die folgende Operationen
Füge ein Zeichen aus der Charbank (Bereich hinter dem $-Zeichen) ein
Dokument besteht aus einer Menge von Changesets zu einem definierten Basistext
* alle Zahlenangaben sind jeweils Base-36 kodiert
SciflowWriter 23
24. Erweiterung der Programmierschnittstelle
RESTful-Webservice
simples Mapping auf CRUD-Operationen (create, read, update, delete)
einfache Zugriffsbeschränkung auf Basis von URLs und HTTP-Verben möglich
Beispiel
/api/2/pads
GET Liefert eine Liste von Pad-Ids.
PUT ---
POST Erzeugt ein Pad und gibt die Pad-Id zurück.
DELETE ---
SciflowWriter 24
25. Erweiterung der Datenhaltung
Notwendingkeit der Bindung beliebiger Daten an ein Pad
Lösung: Datastores
Ein Datastore ist ein Namensraum für eine beliebige Anzahl von JSON-Objekten.
Jedes Pad kann beliebig viele solcher Datastores haben (z.B. bibliography).
Zugriff über die REST-API
/api/2/pads/[padId]/datastores/[datastoreId]
GET Liefert eine List von Elementkennungen (Element–IDs).
PUT Erstellt einen Datastore mit der angegebenen Datastore–ID.
POST Erstellt ein Element in dem angegebenen Datastore mit dem Inhalt des
Payload der Anfrage und liefert die Element–ID zurück.
DELETE Löscht den angegebenen Datastore.
SciflowWriter 25
26. Texttransformation nach LaTeX
Etherpad speichert pro Pad-Revision einen sog. attributierten Text
unformatierter Text inkl. n
Attributstring
Attributstring-Format ist ein vereinfachtes Changeset-Format
Beispiel
Hello Worldn
*1 *3 +5 *2 *4 +6 *2 |1+1
Attribut-Id Bedeutung
1 Author-1
2 Author-2
3 kursiv
4 durchgestrichen
H e l l o W o r l d n
SciflowWriter 26
27. Texttransformation nach LaTeX
LaTeX-Exporter
erstellt ein Mapping zwischen Pad-lokalen Attribut-Ids und LaTeX-Tags
parst den attributierten Text einer Pad-Revision
hält den Zustand der einzelnen Attribute (ist Attribut x für den aktuellen Text gesetzt ?)
fügt jeweils bei Attributzustandsänderungen öffnende bzw. schließende LaTeX-Tags ein
Beispiel
Attribut-Id Bedeutung LaTeX-Tag
1 Author-1 ---
2 Author-2 ---
3 kursiv textit
4 durchgestrichen sout
*1 *3 +5 *2 *4 +6 *2 |1+1
H e l l o W o r l d n
textit{Hello}sout{ World}n
SciflowWriter 27
31. Evaluation der Software
Aufgabenstellung
Erstellung eines wissenschaftlichen Artikels zum Thema „Endliche Automaten“
Umfang: 6 Seiten DIN A4
Ausgabeformat: PDF
zu verwendendes Template: ieeetran
Gruppenstärke: 3
Bearbeitungszeit: 30 Minuten
Evaluationsfragebogen
System Usability Scale (SUS)
allgemeine Fragen zum Vorwissen der Probanden in Bezug auf kollaboratives Schreiben
Freitextfragen zu den Funktionen von SciflowWriter
SciflowWriter 31
32. Ergebnisse der Evaluation
SUS-Wert von 83
alles über 60 ist ein Indikator für eine gute Benutzbarkeit
Ergebnisse der Freitextfragen
fehlender Formelsatz
keine Möglichkeit der direkten Manipulation des Markups
Löschen von Text ist schwer nachvollziehbar
kein Schutz von Textabschnitten vor der Bearbeitung durch andere möglich
geforderte Funktionen teilweise im Widerspruch zum Konzept
z.B. sollte die direkte Manipulation des Markups ausgeschlossen sein
SciflowWriter 32
33. Fazit
Grundkonzept konnte erfolgreich umgesetzt werden
Überschriften, Abbildungen, Literaturverweise
LaTeX-Export, PDF-Generierung unter Verwendung verschiedener LaTeX-Templates
Etherpad-lite eignet sich (nur) bedingt als Basis für Rich-Text-Editing
kollaboratives Texteditieren funktioniert sehr gut
Hinzufügen von Rich-Text-Editing ist schwierig
Um wirklich wissenschaftliche Abhandlungen schreiben zu können bedarf es
Formelsatz
Tabellen
Grundsätzliche Entscheidung müssen ggf. revidiert werden
direkte Manipulation des Markups zulassen ?
SciflowWriter 33
34. Ausblick
Hinzufügen von Tabellen und Formelsatz zu SciflowWriter
Anbindung von SciflowWriter an externe Authentifizierungssysteme
Entkopplung der Funktionalitäten
Datenspeicherung
Operationale Transformation
Editorkomponente
Beispiel
Ein TinyMCE, welcher mit Hilfe von ShareJS mit einem PHP-Backend kommuniziert
SciflowWriter 34