Zettelstore 0.10
Die gute Nachricht für alle Nutzer des Zettelstore: Version 0.10 ist seit gestern verfügbar. Dies gilt auch für die Bibliothek, um auf den Zettelstore zuzugreifen (a.k.a Zettelstore Client).
Dies ist das 25. Release des Zettelstore. Versionen 0.0.1 bis 0.0.15 und Versionen 0.1 bis 0.10.0. Kleiner Tusch. Hätte ich damals so nicht gedacht, als ich mit dem Zettelstore begann. Scheint mir ernst damit zu sein.
Für den normalen Anwender hat sich nicht zu viel geändert. Im wesentlichen sind es zwei Merkmale.
Wer nach einer Suchanfrage ggf. nach unten blättert, sieht jetzt unten rechts einen Button mit der Bezeichnung „Save As Zettel“. Damit lässt sich das Ergebnis der Suche quasi einfrieren. Genauer: in einen neuen Zettel übernehmen. Die Idee dazu kam mir beim Verzetteln von Armin Hanisch' Persönliches Informationsmanagement. Diese Funktion ist ganz nützlich beim Kuratieren von Zetteln.
Die andere Änderung betrifft ebenfalls die Suche, hier das verarbeitende
Filtern der Ergebnisse. Der Filterbegriff „KEYS“ liefert eine Liste
aller verwendeten Metadatenschlüssel der jeweiligen Suche. Mithin liefert |
KEYS
die Liste aller verwendeten Metadatenschlüssel. Ist sehr nützlich, um
Verschreiber oder zu ähnliche Schlüsselbegriffe zu finden.
Eine andere Änderung betrifft die Nutzer der API.
An der Hochschule lehre ich, was im Kontext des Web sog. Ressourcen sind. Jede Ressource hat eine eindeutige Kennung. Die meisten kennen diese Kennung umgangsspachlich als URL. Ein Ressource besitzt zusätzlich sog. Repräsentationen. D.h. eine Ressource kann unterschiedlich dargestellt werden. So kann ein Lied durch die entsprechendne Geräusche repräsentiert werden, wie auch durch die Noten oder den Liedtext.
Als ich hierüber in einer Vorlesung sprach, fiel mir auf, dass ich dies beim
Zettelstore anders gemacht hatte. Beim Zettelstore sind Zettel ein Ressource.
Ein Zettel kann als Zettelmarkuptext repräsentiert werden, als HTML-Text, als
Markdowntext (für die Unbelehrbaren ;)
) oder als symbolischer Ausdruck
(S-expression). Letzterer stellt die interne Zettelmarkupstruktur dar. Der
Zettel kann zusätzlich interpretiert werden, etwa um Transklusionen auszulösen.
Zusätzlich kann man den gesamten Zettel betrachten, nur die Metadaten oder nur
den Zettelinhalt. Insgesamt gibt es mehr als 40 Möglichkeiten der
Repräsentation, aber dafür verwendete ich sechs unterschiedliche URLs, also
sechs unterschiedliche Kennungen.
Da ich den Zettelstore demnächst zum Gegenstand von Lehrveranstaltungen machen werde, dieser also studiert werden soll (nein, wirklich!), ist es besser, wenn dessen Struktur dem anderer Lehrinhalte entspricht. Und nebenher, dadurch ist der Programmcode auch noch kleiner und (hoffentlich) verständlicher geworden.
Zusätzlich wurde der Zettelstore Client angepasst. Wer diesen verwendet, sollte darauf achten, dass die Version 0.9 des Clients nicht mehr zu einem Zettelstore in der Version 0.10 passt, wie auch umgekehrt.
Das war es auch schon.
In der Version 0.11 fällt die Repräsentation von Zetteln im Format ZJSON ersatzlos weg. Statt dessen ist nur noch das Format S-Expression (sexpr) verfügbar, um die interne Struktur eines Zettels darzustellen.
ZJSON hatte ich analog dem JSON-Format zum Ex- und Import von Pandoc entwickelt. Dahinter stand die Hoffnung, Zettel mittels Pandoc in diverse andere Formate konvertieren zu können. Inzwischen ist mir klar, dass dies nicht durch den Zettelstore selbst, sondern durch eine andere Software zu realisieren ist. Diese Software nutzt dabei die API des Zettelstore. Warum? Sonst müsste ich den Zettelstore ändern, wenn Pandoc sein JSON-Format ändert. Eine Abhängigkeit mehr. Eine sehr wichtige Anforderung an den Zettelstore ist die Langlebigkeit und damit eine perspektivisch kleine Anzahl von zukünftigen Änderungen.
Natürlich hätte ich auch ZJSON beibehalten können und statt dessen das S-Expression-Format entfernen können. Auch hier spielt die gewollte Langlebigkeit eine Rolle. JSON (ZJSON ist nur ein bestimmtes JSON-Format) wird zwar von vieler aktueller Software verwendet. Es steht zu hoffen, dass es nicht zu häufig geändert wird. Aber im Vergleich zu S-Expressions ist JSON ein Baby. S-Expressions werden etwa seit 1960 verwendet, als Datenformat für LISP-Sprachen. Dieses Format hat vieles überdauert, ist also definitiv langlebig. Software, die dieses Format einliest, ist mit so gut wie jeder Programmiersprache relativ einfach zu realisieren.
Ansonsten habe ich aktuell eher wenig geplant. Die Ideen für die Client-Software (Zettel Mail, Zettel Presenter, Zettel Publisher) sind nicht vom Tisch.
Aber vielleicht kommt noch eine Anregung aus dem Kreis der Nutzer oder Interessierten dazu …