Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

Silo

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.

Screenshot Nevernote

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.

Horrorclown

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.csskennt, 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


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!


Fragen?