SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
SciflowWriter
Ein echtzeitfähiger Editor für kooperatives Schreiben

                                      Michael Sievers
                                          22.12.2011
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
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
Theoretische Grundlagen




SciflowWriter                             4
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
Phasen des kollaborativen Schreibens




                Abbildung: Phasen des kollaborativen Schreibens nach Lowry et al.




SciflowWriter                                                                       6
Nomenklatur nach Lowry et al.

   Kollaborative Schreibaktivitäten
        Ideenfindung, Ideenzusammenführung usw.


   Kollaborative Schreibstrategien
        sequentielles Schreiben, paralleles Schreiben usw.


   Rollen
        Autor, Gutachter usw.


   Arbeitsmodi
        synchron-verteilt, asynchron-verteilt usw.




SciflowWriter                                                 7
Kollaborative Schreibaktivitäten

   Ideenfindung (brainstorming)

   Ideenzusammenführung (converging on brainstorming)

   Gliederung (outlining)

   Textproduktion (drafting)

   Begutachtung (reviewing)

   Überarbeitung (revising)

   Lektorierung (copy editing)




SciflowWriter                                            8
Kollaborative Schreibstrategien

   sequentielles Schreiben

   horizontal-unterteiltes, paralleles Schreiben

   geschichtetes, paralleles Schreiben

   reaktives Schreiben




SciflowWriter                                       9
Sequentielles Schreiben




                Abbildung: Sequentielles Schreiben nach Lowry et al.




SciflowWriter                                                          10
Horizontal-unterteiltes, paralleles Schreiben




                Abbildung: Horizontal-unterteiltes, paralleles Schreiben nach Lowry et al.




SciflowWriter                                                                                11
Geschichtetes, paralleles Schreiben




                Abbildung: Geschichtetes, paralleles Schreiben nach Lowry et al.




SciflowWriter                                                                      12
Zielsetzung und Konzeption der Arbeit




SciflowWriter                              13
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
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
Grundlegende Architektur




                Abbildung: Erweiterung der Funktionalität durch eine neue Schnittstelle




SciflowWriter                                                                             16
Grundlegende Architektur: PDF-Erzeugung




SciflowWriter                             17
Entwurf der Benutzerschnittstelle




SciflowWriter                       18
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
Node.js

   asychrones, ereignisgetriebenes, serverseitiges JavaScript-Framework

   Google V8 JavaScript Engine

   Event-Loop + strikt asynchrone Laufzeitblibliothek
    function(err, callback)
    {
      var directory = '/var/pads');
      fs.mkdir(directory, 0755, function(err)
      {
        directory += '/' + padId;
        fs.mkdir(directory, 0755, function(err)
        {
          directory += '/exports';
          fs.mkdir(directory, 0755, function(err)
          {
            directory += '/rev' + requestedRevision.toString();
            fs.mkdir(directory, 0755, function(err)
            {
              …
              callback(null);
            });
          });
        });
      });
    }

SciflowWriter                                                              20
Design und Implementierung




SciflowWriter                                21
Etherpad-Internas

   Kollaborationsfunktionen basieren auf dem Konzept der operationalen Transformation




                            Abbildung: Beispiel für operationale Transformation




SciflowWriter                                                                            22
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
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
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
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
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
Demo




SciflowWriter          28
SciflowWriter   29
Zusammenfassung und Ausblick




SciflowWriter                             30
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
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
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
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
Vielen Dank für ihre Aufmerksamkeit !

Weitere ähnliche Inhalte

Ähnlich wie SciflowWriter

Hibernate Envers - Historisierung mit Hibernate
Hibernate Envers - Historisierung mit HibernateHibernate Envers - Historisierung mit Hibernate
Hibernate Envers - Historisierung mit HibernateJohannes Degler
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
iDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationiDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationJan Christian Krause
 
Samuel Zürcher new power of search
Samuel Zürcher new power of searchSamuel Zürcher new power of search
Samuel Zürcher new power of searchDigicomp Academy AG
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
Python Bootcamp - Grundlagen
Python Bootcamp - GrundlagenPython Bootcamp - Grundlagen
Python Bootcamp - GrundlagenDatamics
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesMarkus Zapke-Gründemann
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestBastian Feder
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...Verein FM Konferenz
 
Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?.NET User Group Dresden
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singenJava 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singengedoplan
 

Ähnlich wie SciflowWriter (20)

Hibernate Envers - Historisierung mit Hibernate
Hibernate Envers - Historisierung mit HibernateHibernate Envers - Historisierung mit Hibernate
Hibernate Envers - Historisierung mit Hibernate
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Workshop: Besseres C#
Workshop: Besseres C#Workshop: Besseres C#
Workshop: Besseres C#
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
iDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-DokumentationiDocIt - Ein Assistent zur API-Dokumentation
iDocIt - Ein Assistent zur API-Dokumentation
 
Samuel Zürcher new power of search
Samuel Zürcher new power of searchSamuel Zürcher new power of search
Samuel Zürcher new power of search
 
The new power of search
The new power of searchThe new power of search
The new power of search
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
Python Bootcamp - Grundlagen
Python Bootcamp - GrundlagenPython Bootcamp - Grundlagen
Python Bootcamp - Grundlagen
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google Suggest
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
 
Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?Ist ADO.NET EntityFramework das bessere LINQ?
Ist ADO.NET EntityFramework das bessere LINQ?
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singenJava 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
 

SciflowWriter

  • 1. SciflowWriter Ein echtzeitfähiger Editor für kooperatives Schreiben Michael Sievers 22.12.2011
  • 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
  • 7. Nomenklatur nach Lowry et al.  Kollaborative Schreibaktivitäten  Ideenfindung, Ideenzusammenführung usw.  Kollaborative Schreibstrategien  sequentielles Schreiben, paralleles Schreiben usw.  Rollen  Autor, Gutachter usw.  Arbeitsmodi  synchron-verteilt, asynchron-verteilt usw. SciflowWriter 7
  • 8. Kollaborative Schreibaktivitäten  Ideenfindung (brainstorming)  Ideenzusammenführung (converging on brainstorming)  Gliederung (outlining)  Textproduktion (drafting)  Begutachtung (reviewing)  Überarbeitung (revising)  Lektorierung (copy editing) SciflowWriter 8
  • 9. Kollaborative Schreibstrategien  sequentielles Schreiben  horizontal-unterteiltes, paralleles Schreiben  geschichtetes, paralleles Schreiben  reaktives Schreiben SciflowWriter 9
  • 10. Sequentielles Schreiben Abbildung: Sequentielles Schreiben nach Lowry et al. SciflowWriter 10
  • 11. Horizontal-unterteiltes, paralleles Schreiben Abbildung: Horizontal-unterteiltes, paralleles Schreiben nach Lowry et al. SciflowWriter 11
  • 12. Geschichtetes, paralleles Schreiben Abbildung: Geschichtetes, paralleles Schreiben nach Lowry et al. SciflowWriter 12
  • 13. Zielsetzung und Konzeption der Arbeit SciflowWriter 13
  • 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
  • 20. Node.js  asychrones, ereignisgetriebenes, serverseitiges JavaScript-Framework  Google V8 JavaScript Engine  Event-Loop + strikt asynchrone Laufzeitblibliothek function(err, callback) { var directory = '/var/pads'); fs.mkdir(directory, 0755, function(err) { directory += '/' + padId; fs.mkdir(directory, 0755, function(err) { directory += '/exports'; fs.mkdir(directory, 0755, function(err) { directory += '/rev' + requestedRevision.toString(); fs.mkdir(directory, 0755, function(err) { … callback(null); }); }); }); }); } SciflowWriter 20
  • 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
  • 35. Vielen Dank für ihre Aufmerksamkeit !