Cover Image

Bei der Mage Unconference in Köln hatte ich spontan mit Vinai Kopp einen kleinen Vortrag zum Thema Wissensmanagement gehalten. Es ging dabei weniger um Wissen innerhalb des Unternehmens zu teilen wie man es z.B. mit einem Unternehmens-Wiki macht. Vielmehr war der Schwerpunkt auf das persönliche Wissensmanagement bezogen.

Warum braucht man so etwas?

Die kurze Antwort: Weil man sonst viel Wissen verliert.

Wir lernen jeden Tag neue Dinge. Leider ist unser Gehirn nicht in der Lage, alle Informationen auf Dauer wieder genau in Weise uns wieder zu präsentieren, wie wir die Daten initial aufgenommen haben. Das hat zum Teil damit zu tun, dass unser Gehirn Daten komprimiert. Zudem gibt es im menschlichen Gehirn verschieden Speicher wie das Kurzzeitgedächtnis oder das Langzeitgedächtnis. Für die Techniker unter uns… Fast- und Slow-Cache.

Da die Menge an Informationen jeden Tag sehr groß ist, verlieren wir ohne eine geeignete Hilfe einige dieser Informationen. Daher sollte es jedem gelegen sein, eine für sich passende Lösung zu finden.

Meine Historie

Ich habe über die letzten Jahre sehr viele Programme und Strategien ausprobiert. Wichtig ist, dass man eine für sich selbst findet. Für mich war klar, dass es eine elektronische Lösung sein musste da ich meine Daten leicht kopieren und sichern möchte.

Auf dem Markt gibt es viele Ideen und Tools um sich dem Thema anzunehmen. Ich selbst habe bereits Tools wie Evernote, Ulysses, Simplenote, Boostnote, Google Note und einige andere ausprobiert.

Da ich verschiedene Informationen ablegen muss, habe ich nach der perfekten Lösung gesucht um alle Informationen an einer Stelle zu verwalten. Um es gleich zu sagen…. Es gibt keine perfekte Lösung.

Aber… eine 80% Lösung ist für mich auch in Ordnung. Am Ende bin ich dann bei Trilium Notes gelandet. Dazu aber gleich mehr.

Was für Daten habe ich?

Wenn man darüber nachdenkt, fallen einem einige Dinge ein, die man ablegen möchte. Für mich sind das hauptsächlich Quellcodes (Source Code Snippets), Blog-Beiträge, Notizen rund ums Büro, Protokolle. Dazu kommen noch Informationen zu diversen Dingen wie z.B. mein Heimnetzwerk. Also insgesamt einige ganze Menge Informationssilos.

Wenn man jedes Informationssilo einzeln betrachtet, so finder sich für jedes eine Art Spezialprogramm, welches im einzelnen besser ist als meine gefundene Lösung. Da es aber kein perfektes Programm gibt, welches alle meine Anforderungen erfüllt, habe ich irgendwann aufgehört eines zu suchen.

Meine Anforderungen

Meine wichtigsten Anforderungen waren folgende:

  • Eine hierarchische Ablage von Informationen soll möglich sein.
  • Ich möchte die Daten selbst hosten. Eine reine Cloud-Lösung wollte ich nicht.
  • Daten sollen offline Verfügbar sein. Es muss also Synchronisation her.
  • Plattformunabhängigkeit -> Linux, Mac
  • Quellcode muss gut ablegbar sein.
  • Mobile Nutzung
  • Gute Suche

Trilium

Kommen wir nun zu meinem präferierten Programm Trilium Notes. Das Programm selbst ist in NodeJS programmiert. Hinter der Software steht ein Hauptentwickler der sich das Ziel gesetzt hat, eine Personal Knowledge Base zu entwickeln. Es geht also nicht um ein Kollaborationstool. Der Schwerpunkt ist eine einzelne Person. Was die Software schon mal nicht bietet, ist eine Multi-Benutzer-Umgebung. Das macht aber auf der anderen Seite einige Dinge leichter. Kommen wir zu den Funktionen die das Programm speziell machen.

Baumstruktur

Die linke Seite der Software enthält eine prominente Baumstruktur um Notizen in einer Hierarchie abzulegen.

Hier sind wir schon beim ersten speziellen. Es werden keine Ordner angelegt. Alles ist eine Notiz. Sobald eine Notiz eine Unter-Notiz erhält, ist die Eltern-Notiz automatisch eine Art Ordner. Im Bildschirmfoto ist gut zu sehen wie so etwas aussieht. Man kann sogar einer Notiz ein Icon zuordnen.

Eine Baumstruktur bildet immer eine Klassifizierung ab. Bei jeder Klassifizierung kommt man irgendwann zu dem Punkt an dem man eine Notiz in zwei oder mehr Äste einsortieren könnte da diese inhaltlich in mehre Bereiche passen könnten. Trilium bietet für dieses Problem eine Lösung an. Die nennt sich “Node cloning”. Man kann sich das wie einen Hard-Link unter Unix vorstellen. Die Information kann an zwei Stellen existieren ist aber immer die selbe.

https://github.com/zadam/trilium/wiki/Cloning-notes

Datenhaltung

Da die Anwendung nur von einer Person genutzt wird, braucht man sich nicht zu viele Gedanken um konkurrierende Datenbankverbindungen machen. Daher kommt bei Trilium eine einfache Sqlite Datenbank zu Einsatz. Was ich vorher nicht wusste ist, dass in Sqlite Datenbank auch große Datenmengen ohne größere Bauchschmerzen sicher abgelegt werden können. Ich kann dazu das Video von Dr. Richard Hipp, dem Entwickler von Sqlite empfehlen. Das hat mich sehr beeindruckt.

Trilium erstellt jede Woche zudem jeden Tag, jede Woche und jedem Monat automatisch ein Backup der Datenbank. Backups sind bei Sqlite sehr einfach zu erstellen. Man kopiert quasi eine Datei mit allen Daten.

Trilium erlaubt es einen Sync-Server aufzusetzen. Damit ist es möglich mehrere Clients auf verschiedenen Rechnern zu nutzen, die sich selbständig synchronisieren. Der Sync-Server selbst kann dann als Web-Interface genutzt werden.

Snippets, Markdown, Bilder, Dateien …

Jede Notiz kann einen bestimmten Typ annehmen. So gibt es eine Menge unterschiedlicher Typen. Sogar Typen die Relationen abbilden. Quellcode lässt sich super und mit Syntax-Hervorhebung ablegen.

Beispiel XML Snippet

Bilder und Dateien lassen sich auch als Notiz hochladen. Jedes hochgeladene Bild ist eine eigene Notiz des Typs Image. Bilder können dann auch in anderen Notizen einbettet werden.

Attribute

Durch die Datenhaltung in der Datenbank und nicht in einem einfachen Dateisystem ergibt sich die Möglichkeit Meta-Daten über Attribute zu definieren. In Trilium werden sehr viele Funktionen über Attribute abgebildet. So lässt sich das Tool selbst über Notizen mit Javascript Quellcode erweitern. Es muss nur die passende Notiz mit einem Attribut des Typs Label und dem Namen run und dem Wert frontendStartup ausgestattet werden um Quellcode beim Programmstart automatisch auszuführen. Über eine Script-API kann ein Entwickler das Tool quasi für seine Bedürfnissen erweitern.

Sonstige Funktionen

Auch Funktionen die man aus anderen Notizprogrammen kennt, finden sich in Trilium wieder. So lässt sich die Navigation mit einem Tastenkürzel ausblenden um beim Schreiben nicht abgelenkt zu sein.

Eine Suche ist ebenfalls vorhanden. Es können sogar Suchordner mit Bedingungen erstellt werden. Um alle Funktionen aufzuzählen reicht dieser Blogbeitrag nicht aus. Die Github-Seite listet folgende Features auf:

Installation

Die Client-Installation geht schnell von statten. Auf der Github-Release Seite finden sich für jedes gängige Betriebssystem eine Installationsquelle.

https://github.com/zadam/trilium/releases

Für den Sync-Server habe ich mich für das Docker-Setup entschieden.

https://hub.docker.com/r/zadam/trilium

Hier meine docker-compose Datei:

version: '2.1'
services:
  trilium:
    image: zadam/trilium
    restart: always
    environment:
      - TRILIUM_DATA_DIR=/data
    volumes:
      - ./volumes/data:/data

Mein Fazit

Ich nutze das Programm nun seit einigen Monaten. Es wird regelmäßig weiterentwickelt. Das ich nicht der einzige Nutzer bin, sieht man auch an der wachsenden Anzahl an Github-Stars.

Früher habe ich viele meiner Informationen in Evernote abgelegt aber wenig davon genutzt. Bei Trilium sieht das für mich anders aus. In meiner Knowledge Base sind jetzt schon mehrere Tausend Notizen und ich nutze die Informationen wieder. Oft werde ich etwas von Kollegen gefragt und kann oft nach einer kurzen Recherche die passende Information in Trilium finden.

Ich nutze also mein gesammeltes Wissen. Was will man mehr?