Wer einmal seinen Lieblings-Texteditor gefunden hat, mag ihn am liebsten nie
wieder verlassen. Wie schön wäre es doch, wenn herkömmliche Office-Programme
mit der selben Effizienz bedient werden könnten! Oder müssen wir das Pferd
anders herum aufzäumen, und von unformatiertem Text ausgehen? Aber wie wird
dann aus einfachem Text ein formatierter Geschäftsbrief, oder eine Rechnung,
oder ein kollaborativ benutzbarer Kalender, oder eine Aufgabenverwaltung? Die
grundlegenden Ansätze und Werkzeuge dazu existieren seit Anbeginn der
Unix-Welt, und die Tool-Landschaft wurde seitdem kontinuierlich ausgebaut, wie
dieser Vortrag zeigen soll.
Es wird zuerst auf die Problemstellung eingegangen: Binärdaten sind zum einen
nur mittels spezialisierter Anwendungen les- und bearbeitbar; zum anderen hängt
die (sinnvolle) Versionierbarkeit damit auch von der entsprechenden Anwendung
ab. Beschreibungssprachen wie (La)TeX, XML und daraus abgeleitete Formate wie
DocBook, HTML oder RSS sind dagegen einfach mit beliebigen Editoren
betrachtbar, und ihre Versionierbarkeit ist mit Hilfe von herkömmlichen
Versionsverwaltungssystemen (Git, Subversion, ...) sinnvoll gewährleistet. Die
Hürden zur Bearbeitung der Dokumente sind hier jedoch noch relativ hoch, und
erfordern bei den Bearbeitern teilweise umfassende Einarbeitungzeiten mit
steiler Lernkurve.
An dieser Stelle kommen strukturierte Textformate ins Spiel. Die Idee bei sog.
Markup-Sprachen wie Markdown oder reStructuredText ist es, die Syntaxelemente
bis auf einzelne bedeutungstragende Zeichen zu vereinfachen und zu
spezialisieren. Die Syntax zur Formatierung ist somit nahtlos in den Fließtext
eingebettet und dient quasi als eine menschenlesbare Kurzschrift. Mit
Konvertern und Dokumentenvorlagen können aus dieser Kurzschrift dann wiederum
hochwertige Dokumente und Webseiten generiert werden. Die Vereinfachung und
Spezialisierung der Kurzschrift stehen dabei aber der Erweiterbarkeit nicht im
Weg, und mit Dokumentenverarbeitungssystemen wie pandoc und sphinx lassen sich
domänenspezifische Markup-Sprachen realisieren, welche eine prägnante
Kurzschreibweise von komplexen Sachverhalten erlauben.
Außerdem wird auf textbasierte Datenformate wie CSV, JSON und YAML eingegangen,
die im Vergleich zu Binärformaten und SQL-Datenbanken für kleinere Datenmengen
vollkommen ausreichend sind, und mit herkömmlichen unixoiden Tools und
Skriptsprachen verarbeitet werden können. Die Idee der Spezifizierung auf die
Anwendungsdomäne kann hier ebenso angewandt werden, wie am Beispiel eines
Buchhaltungssystems, eines Kalenders und einer Aufgabenverwaltung auf Textbasis
gezeigt wird.
Werkzeuge:
* Konverter und Systeme zur Dokumentenverarbeitung:
- pandoc:
- sphinx:
* Versionierung:
- Git:
* Unix-Standard-Werkzeuge zur Datenverarbeitung:
- awk, z.B. in der GNU-Version:
- cut, column, comm, join, paste, sort, z.B. aus GNU coreutils:
* Plain Text Accounting mit ledger-cli, hledger, beancount o.ä.: