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.ä.: