Nevernote – mit Markdown und MkDocs eine (hoffentlich) datenschutzkonforme Alternative zu Evernote
(Jörg Kantel – MPIWG – 2018)
Motivation
- Auf der DV-Tagung 2017 erklärte Frau Schuster die Nutzung von Evernote innerhalb der MPG aus datenschutzrechtlichen Gründen für bedenklich!
- Schon im Dezember 2016 sickerte die Meldung durch, daß ab Mitte Januar die Evernote-Mitarbeiter die privaten Notizen der Nutzer mitlesen dürfen.
- Damit war für mich schon damals auch die private Nutzung von Evernote gestorben.
Zeit, etwas Neues zu probieren!
Und so war die Idee der Nevernote geboren
- Nevernote ist ein MkDocs-Anwendung.
- MkDocs ist ein freier (BSD-Lizenz), schneller, in Python geschriebener Generator für statische Seiten. MkDocs wurde vor allem im Hinblick auf Projekt-Dokumentationen entwickelt. Die Quellen für die statischen Seiten werden in Markdown-Dateien geschrieben, die Konfiguration erfolgt in einer einzigen YAML-Konfigurations-Datei. Das Ergebnis kann nach HTML herausgeschrieben werden.
Der Clou ist jedoch:
- MkDocs kommt mit einem eigenen Entwicklungsserver mit Live-Preview.
- Das heißt, die Anwendung braucht die eigene Maschine gar nicht zu verlassen.
- Die Notizen werden lokal in Markdown in einem Editor der Wahl verfaßt und der Live-Server zeigt das Ergebnis (ebenfalls lokal) im Browser.
Das kam mir entgegen, denn ich hasse das Editieren im Browser.
Die Architektur
- Eine angepaßte Version von MkDocs (dazu später mehr)
- Ansicht lokal via Live-Server im Browser
- Die Dateien sind reine Textdateien und liegen lokal im Filesystem
- Synchronisation via
git
(in meinem Fall mit dem GitHub-Server der MolGen in Berlin) – aber auch hierzu später mehr - Allerdings ist mir noch keine zufriedenstellende Synchronisation mit mobilen Geräten gelungen
- Auf Wunsch kann man die fertigen Seiten auch nach HTML herausschreiben und veröffentlichen – doch wozu?
In anderen Fällen ist das jedoch nicht so abwegig: Ich habe mit MkDocs ein komplettes Buch geschrieben, das ich einmal in HTML herausgeschrieben und von dem ich dann außerdem mit Pandoc (via LaTeX) eine Druck-Version erstellt habe.
Die Installation
- MkDocs setzt ein installiertes Python-Paket voraus (MkDocs läuft mit Python 2.7, Python >= 3.4 und PyPy). Ich empfehle ein Anaconda-Python, aber jedes andere tut es auch.
- Als Markdown Engine kommt Python Markdown aus der Standard-Bibliothek zum Einsatz, hier ist also keine zusätzliche Installation nötig. Jedoch nutzt Nevernote ein paar Extensions (unter anderem für Fußnoten, ToDo-Listen und Admonition). Und die müssen zusätzlich installiert werden.
Die Installation gelingt am einfachsten mit pip
:
pip install mkdocs
pip install pymdown-extensions
Und dann einfach das Nevernote-Repositorium von den GitHub-Seiten der MolGen forken oder herunterladen und loslegen.
Eine angepaßte Version von MkDocs
- MkDocs kommt mit drei fertigen Templates. Ich habe für Nevernote das bekannte »Read-The-Docs«-Template ausgewählt.
- Allerdings gefielen mir die grünen Überschriften von Nevernote: Da aber MKDocs eine
user.css
kennt, in der man eigene CSS-Definitionen erstellen kann, war diese Änderung einfach durchzuführen.
h1, h2 {
font-family: "American Typewriter", "Courier New", monospace;
letter-spacing: 0.05em;
color: #2DBE60;
font-weight: 400;
line-height: 1.2em; /* 48px / 40px */
margin-bottom: .4em;/* 16px / 40px */
margin-top: .4em; /* 16px / 40px */
}
Auch an einigen anderen Stellen habe ich noch CSS-Änderungen vorgenommen, zum Beispiel die grüne Seitenleiste …
Konfgurationen
Alle Konfigurationen werden in einer einzigen Datei vorgenommen, der mkdocs.yaml
. Beispielhaft sieht sie so aus:
site_name: Nevernote Template
theme: readthedocs
dev_addr: 127.0.0.1:9309
pages:
- Home: "index.md"
- Installation: "installation.md"
markdown_extensions:
- footnotes
- admonition
- smarty:
smart_quotes: False
- pymdownx.tasklist
# Muß der konkreten Installation angepaßt werden
site_dir: "/Applications/MAMP/htdocs/mynevernote"
# Muß jeweils angebpaßt werden, kann aber auch entfallen
repo_url: "https://github.molgen.mpg.de/kantel/mynevernote"
edit_uri: tree/master/docs
extra_css: [css/user.css]
extra_javascript: ["http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"]
Suche
MkDocs bietet eine »Volltextsuche«:
- im LiveServer-Betrieb über den Server
- bei statischen Seiten wird eine
search_index.json
herausgeschrieben und die Suche erfolgt via JavaScript
Synchronisation
- Nevernote funktioniert mit jedem
git
. Meine »dienstliche« Version liegt auf dem GitHub der MolGen. - Meine private Version liegt auf gitlab.com (wegen möglicher Urheberrechtsprobleme als privates Repositorium)
- Aber auch Gogs und Gitea sollten möglich sein (nicht getestet)
- Und wenn man zu mehreren zusammen arbeiten will, muß sich einfach die Contributors einladen.
GitHub Desktop
- Geisteswissenschaftler scheuen die Kommandozeile wie der Teufel das Weihwasser.
- GitHub-Desktop wurde aber erstaunlich gut angenommen
- GitHub-Desktop arbeitet nicht nur mit GitHub, sondern auch mit jedem anderen Repositorium (GitLab, GitHub-Enterprise etc.) und das auch gemischt.
Vorteile
- Markdown ist eine einfach zu erlernende Auszeichnungsprache, mit der man in jedem Editor arbeiten kann (auch Geisteswissenschaftler kommen damit zurecht).
- Sicher, da im Zweifelsfall nur lokal, die Daten aber in keinem Fall die Server der MPG verlassen.
- Anpassbar, da viele Konfigurationsmöglichkeiten (bis hin zu eigenen Templates).
- Komplett Open Source!
Nachteile
- Markdown ist leider nicht standardisiert. Alles was über John Grubers Referenz-Implementierung (in Perl) hinausgeht, ist mit Vorsicht zu behandeln.
- Die Installation ist leider nicht Geisteswissenschaftler-kompatibel.
Dennoch glaube ich, daß die Vorteile überwiegen.
Woher?
(M)eine angepaßte Version von Nevernote liegt zur freien Verwendung auf dem GitHub der MolGen: https://github.molgen.mpg.de/kantel/mynevernote.
Dort habe ich auch eine kleine Installationsanleitung hinterlegt.
Ziel erreicht?
-
KISS: Keep It Small and Simple
-
Ich wollte erreichen, daß man nicht das Rad neu erfinden muß, sondern einfach nur eine bestehende Software aufbohren
-
Denn wenn ein Werkzeug über seine ursprüngliche Verwendung Einsatz findet, entsteht Fortschritt (Damerow/Lefèvre: Rechenstein, Experiment, Sprache. Stuttgart 1981)
Alternativen?
Boostnote will die Evernote-Alternative für Programmierer sein. Sie kann ebenfalls datenschutzkonform betrieben werden. Allerdings
- werden die Dateien nicht als Markdown-Dateien, sondern als JSON-Dateien gespeichert
- ist die Bedienung leicht hakelig
- Boostnote ist eine Electron-Anwendung und Electron macht hin und wieder Probleme bei älteren Macs
Radikale Alternative
- Nur noch Markdown-Dateien im Git-Repositorium
- Ansicht in speziellen Markdown-Editoren mit Live-Preview. Hier kommen u.a. in Frage
- MacDown (Mac only)
- Haroopad (plattformübergreifend und vielseitig, aber Dokumentation zur Zeit noch nur auf koreanisch)
- Atom und VS Code (plattformübergreifend)
Still digging!