Prof. Dr. Detlef Stern

Zettelstore 0.16 (als 0.1) freigegeben

Die gute Nachricht für alle Nutzer des Zettelstore: eine neue Version ist nun verfügbar. Ich habe mich entschieden, diese Version nicht 0.0.16 zu nennen, sondern Version 0.1.

Warum? Es sieht nicht so aus, als gäbe es zu viele Änderungen.

Ja, das stimmt. Die Änderungen sind relativ überschaubar. Die gravierendste Änderung betrifft die Sprache zur Textformatierung, Zettelmarkup. Die wichtigste Änderung betrifft die Infrastruktur für externe Software, die den Zettelstore nutzt. Die umfangreichste Änderung ist nur im Programmcode zu sehen und macht den Zettelstore ein klein wenig schneller und etwas weniger hungrig nach Hauptspeicher. Aber das ist nur Kosmetik, schnell und schlank genug ist die Software sowieso.

Der Hauptgrund für die Version 0.1 ist, dass der Zettelstore Gegenstand von studentischen Arbeiten ist. Für den Fall, dass ich etwas für die Arbeiten ändern muss, habe ich nun die dritte Stelle der Versionsnummer zur Verfügung. Dies erleichtert für mich die Planung zukünftiger Versionen.

Natürlich kann man Versionsnummern frei vergeben. Windows 11 heißt nicht Windows 11, weil diese Version im November 2021 herauskam. Firefox liegt am heutigen Tag in der Version 94 vor. Das ist nur Marketing. Eine größere Versionsnummer soll einen gewissen Reifegrad vorgaukeln.

Versionsangaben können aber auch etwas Inhalt mitgeben.

Einige Software folgt dem sog. Semantic Versioning. Eine Versionsnummer besteht dann aus bis zu drei numerischen Elementen, jeweils durch einen Punkt getrennt. Die erste Zahl gibt die sog. Hauptversion an. Diese soll sich ändern, wenn es eine inkompatible Änderung gab. Die zweite Zahl gibt die Unterversion an. Diese muss geändert werden, wenn das Produkt neue, aber kompatible Merkmale erhalten hat. Eine dritte Zahl wird erhöht, wenn ein Fehler beseitigt wurde. Wenn die erste Zahl die Null ist, dann gilt das als Entwicklungsversion, in der sich alles jederzeit ändern kann.

So grob möchte ich mich daran halten.

Da der Zettelstore eine langlebige Software sein soll, wird es eher keine Hauptversion 2.0.0 geben. Sobald die Version 1.0.0 erreicht ist, wird es keine inkompatiblen Änderungen geben. Daher wird es noch einige Zeit bis zur Version 1.0.0 dauern. Trotzdem lässt sich der Zettelstore schon länger gut nutzen.

Der andere, etwas weniger wichtige Grund ist, dass die Software schon seit mehr als 1,5 Jahren stabil und zuverlässig arbeitet. In diesem Sinne ist die Version 0.1 für mich ein kleines Signal der Stabilität.

Was gibt es an konkreten, wichtigen Änderungen?

Bisher wurde Text, der etwas hervorgehoben werden soll, also meist kursiv dargestellt, durch zwei // eingerahmt, also //kursiv//. Ich fand das ganz nett, weil leicht merkbar: den Text schräg stellen, indem ich schräge Striche angebe.

Dummerweise werden zwei Schrägstriche auch anderweitig verwendet, namentlich bei URLs. Gebe ich mehr als eine URL im Text an und will diese nicht als Hyperlinks dargestellt haben, dann interpretierte der Zettelstore den Text zwischen den beiden Doppeltschrägstrichen, also die erste URL und den folgenden Text, als hervorgehobenen Text. Immer wieder musste ich den Text etwas überarbeiten, damit die URLs korrekt dargestellt wurden (indem ich vor dem zweiten Schrägstrich einen Rückwärtsstrich setzte: https:/\/t73f.de).

Mich nervte das und auch andere liefen in diese kleine Falle. Deshalb wird nun hervorgehobener Text von zwei Unterstrichen eingerahmt: __kursiv__, stark hervorgehobener Text wird aber weiterhin von zwei Asterisk-Zeichen eingerahmt: **fett**.

Die Unterstriche wurden vorher genutzt, um unterstrichenen Text darzustellen, auch um eingefügten Text zu kennzeichnen. Unterstrichener Text ist aber eigentlich nur eine andere Form des Hervorhebens, also nicht wirklich nötig. Um einen Textabschnitt als eingefügt zu kennzeichnen wird dieser nun von zwei Größerzeichen eingerahmt: >>eingefügt>>. Beide Kennzeichnungen hatte ich bisher kaum verwendet.

Für eine kleine Übergangszeit sind noch die beiden Schrägstriche zur Kennzeichnung hervorgehobenen Textes möglich. Allerdings wird der Text dann zusätzlich von einer gestrichelten Box umrahmt, so dass man schnell erkennen kann, dass dort etwas zu ändern ist. Dabei hilft auch das zmk-Encoding auf der Info-Seite eines jeden Zettels.

Externe Software.

Neben dieser Änderung wurde der Zettelstore dahingehend ergänzt, dass dieser besser mit externer Software zusammenarbeiten kann. Die Programmierschnittstelle ist zwar im Handbuch beschrieben, aber nicht für jeden schnell umsetzbar. Daher gibt es nun eine in Go implementierte Bibliothek, damit externe Software einfacher auf den Zettelstore zugreifen kann, den Go-API-Client. Auch wer externe Software nicht in Go implementieren will, kann sich diesen für ein besseres Verständnis der API ansehen.

Ausprobiert habe ich den Zettelstore-Client mit Hilfe einer kleinen Anwendung, die Zettel als „Folien“ interpretiert und aus einer Zettelsammlung (also einem „Foliensatz“) eine web-basierte Präsentation erzeugt. In einer Lehrveranstaltung habe ich diese Software, Zettel Presenter schon erfolgreich eingesetzt.

Perspektivisch möchte ich meine gesamten Vorlesungsunterlagen auf diese Software umstellen. Diese kann ich dann den Teilnehmern als Zettelsammlung zur Verfügung stellen. Diese können dann den Zettelstore nutzen, um die Unterlagen mit Ihren eigenen Ideen zu vernetzen.

Für die nicht so ferne Zukunft plane ich, dieses Blog durch eine Zettelstore-externe Software zu ersetzen. Blog-Posts als Zettel. Vielleicht wird es vorher einen Miniblog geben.

Studentische Aktivitäten. Oder: welche Themen bearbeiten Studenten gerade mit dem Zettelstore?

Nachdem in den letzten beiden Semestern es hauptsächlich ein Seminar war, indem der Zettelstore mehr oder weniger (leider mehr weniger) untersucht wurde, gibt es in diesem Semester zwei Studentische Gruppen, die wesentlich praktischer arbeiten.

Eine Gruppe entwickelt eine Android-App, mit deren Hilfe man Inhalte aus anderen Apps an den Zettelstore freigeben kann. Zusätzlich erlaubt die App, einen Gedankenblitz als Kurznotiz im Zettelstore aufzunehmen. Dieser muss dann natürlich per HTTPS auch per Mobilnetz erreichbar sein. Es sieht schon ganz gut aus, was die Gruppe in den ersten Wochen erreicht hat.

Eine andere Gruppe untersucht, ob und wie man eine besser benutzbare Software realisieren könnte. Auch diese Software nutzt dann den Zettelstore über seine API / Programmierschnittstelle. An Alternativen werden im Detail das Electron-Framework und Pharo untersucht. Während mit Electron mehr traditionell zu bedienende Software erstellt wird, ist Pharo ein indirekter Nachfolger von Smalltalk-80, das wegweisend für die meisten graphischen Oberflächen war und heute noch mehr leisten kann, als allgemein verwendete Entwicklungsumgebungen. Einen Zettel in eigenen Fenstern darzustellen und diese (wie physische Zettel) auf dem Desktop zu verschieben, hätte etwas. Auch da laufen die ersten Schritte vielversprechend.

Was gibt es sonst in der Version 0.1 an Neuigkeiten?

Bei neuen Version von Anwendungen für mobile Geräte heißt es häufig: „Stabilitätsverbesserungen“. Dort mutmaßlich mit dem Unterton „Details könnten verunsichern“. Die gab es natürlich auch beim Zettelstore. Für die nächste Version sind noch mehr Stabilitätsverbesserungen geplant. Da soll der interne Programmcode etwas klarer strukturiert werden, was der zukünftigen Änderungsfreundlichkeit zu Gute kommen soll.

Bei der Ermittlung des Kontextes eines Zettels wird nun beim Startzettel abgebrochen. Bisher war der Kontext zu umfangreich, da der Startzettel perspektivisch zu vielen unverwandten Zettel führt. Einige Fehler in der API hätten zu Zetteldateien geführt, die der Zettelstore anders als beabsichtigt interpretiert hätte. Wird ein Zettel gelöscht oder umbenannt, nun gibt es einen Hinweis, wenn andere Zettel auf diesen verweisen. Stabilitätsverbesserungen nennen das einige.

Was bringt die nächste Version?

Die Art und Weise, wie die Verzeichnisse mit Zetteldateien aktuell behandelt werden, wird verbessert. In manchen Fällen merkt der Zettelstore nicht, das es extern verursachte Änderungen gab. Dies betrifft zwar nur Grenzfälle, sollte aber trotzdem angegangen werden. Zumal der hierfür zuständige Programmcode so ziemlich der älteste des Zettelstore ist. Inzwischen habe ich gelernt, wie man das besser programmieren sollte.

Ebenso alter Programmcode betrifft das Einlesen von Zettelmarkup. Auch dort gibt es Stellen, die würdig sind, verbessert zu werden. Betrifft auch eher Grenzfälle, aber solche mit Zukunft.

Vielleicht erst in der übernächsten Version, vielleicht schon eher, könnte man kleine Graphiken auf Zettel „malen“, die dann als hübsche Graphik dargestellt werden. Manche kennen das aus dem letzten Jahrtausend als ASCII Art. Heutzutage müsste man es wohl Unicode Art nennen. Manchmal ist eine Graphik etwas nützlicher als Text. Trotzdem soll die Graphik auch ohne Zettelstore erkennbar sein. Interessierte schauen hier.

Bestimmt wird der Zettel-Presenter verbessert und damit auch die API.

Aber zu viel möchte ich jetzt nicht versprechen.