I've been looking at note-taking apps recently - this captures some of my research.
A proper note-taking app appeals to me as an improvement to my current system of directories full of
.txt files, and various subject-specific local blogs/sites built using my blog generation software. It "works" in many respects but is by no means optimal.
I have a vague notion that I'd like to end up with something like a collection-of-everything a la Evernote or OneNote, or a Zettelkasten-style repository for studies and research (and I know these aren't quite the same things, and I've not thought through how they might fit together, if indeed they should).
Things I want
Features which matter to me:
Local/secure. No cloud.
Open formats. No lock-in, and it being relatively easy to switch to other software in future. This means a format that's transportable (eg. markdown), and storage that's accesiible. I'm not averse to a bit of scripting, so I'm comfortable with file-system storage, or a relatively sane sqlite database structure.
Version control, or a revision history. These days, if I can put something into git, I do.
Ergonomics. A catch-all for "fast and easy to use, and not more painful than working in a typical text editor."
Linking, structure, searching, tagging. The kinds of features which are clunky, difficult or impossible with disconnected text files.
While researching these I discovered various features which I haven't listed here (like network graphs, backlinks etc) which weren't on my original list of essentials, but once aware of them, seemed quite useful.
Worth mentioning that these apps have features I'm less interested in and don't mention/consider:
multi-platform / mobile support
attachment support (as in, features/usability for storing and working with attachments)
Had I not come across a mention of Zettlr and the Zettelkasten method, I may have started using Joplin and remained unaware of the other apps: I'd seen it recommended when researching something else, and was all but ready to start using it.
Joplin is intended to be an open-source Evernote (which is mostly true, but not entirely, since it doesn't have things like pdf and OCR search).
GUI: Electron app, standard stuff with notebook/subnotebook/document structure on the left and a (configurable) split pane document editor viewer: raw markdown on the left and rendered on the right. It's the only app which has this and I really like the feature. Each document has an auto-generated guid as a unique id, as well as its title. Linking isn't via
[] tags and is a bit clunky since you have to link the ids. Backlinks and tabbed editing have been on the feature request list for some time. The app keeps a revision history.
Storage: a sqlite db. However, Joplin supports automated, external sync with various providers (eg. Dropbox) as well as WebDAV, and a local file system. This means I was easily able to set it up to sync all content to markdown files in a directory. This gives you a directory full of documents with guids for filenames, but it's feasible to push them to git. Documents are markdown as well as some additional metadata (guids, parent guids, modification types, note types, etc). Worth mentioning that exported/synced notes can be encrypted so you store secure content in a DropBox folder, say.
- Split pane editing
- Revision history
- Sync to file system (or providers).
- no tabbed editing (just next/previous navigation through notes)
[] internal link support, slightly clunky
- no backlinks (or link graph)
As I mentioned above, I saw Zettlr mentioned when I was looking up something related to Joplin. The name suggests it's intended for use as a Zettelkasten but can also be used for simple markdown editing, and uniquely, is geared towards academic research with support for Pandoc, citations and bibliographies, etc. As best I understand it, the idea is you can do your research in Zettlr, and then easily convert your work into LaTeX or pdf articles.
GUI: the usual trees-on-left (but customisable to show documents, directories, etc) and a main editor which supports tabs. The editor is WYSIWYM with some markdown rendering, which is configurable. It supports themes but modifying CSS looks to be difficult. Internal linking is done by
[] using ids, but name matching sort-of works. Search also encompasses tags and provides backlinks (of a sort). Documents support YAML front-matter (which is used for pandoc), but it's also how you specify a title for documents independent of the file name.
Other interesting features are a focus mode and a built-in pomodoro timer, as well as document structure navigation and readability metrics.
Annoyingly, editing a filename won't do wiki-style updates to incoming links.
Storage: on-disk markdown files. A result of its Zettelkasten association is that new documents get a timestamp-based ID by default, but you can name documents anything you like.
- flat files on disk
- citation/bibliography/pandoc support
- search looks powerful but global search is relative to a chosen subdirectory, which could be a nuisance.
- no crtl-tab or forward/backward navigation
- no link map (but it's slated for release in a future version)
- linking is intended to be id-based, and names in links will break if you rename files
Trilium is an Electron app and was recommended to me by a colleague. It's the most powerful of the apps I looked at, with scripting support, multiple note types, attributes and tagging. The desktop app works as a standalone but can also sync with a self-hosted server and web app.
The GUI has the standard tree view on the left, and metadata and links on the right. It supports multi-tabbed editing and
[] style linking. The editor is pure WYSIWIG with markdown commands immediately turned into rich text. The editor tracks a periodic revision history. Changing from the default themes required getting my hands dirty with custom css (but the mechanism for doing this is pretty powerful).
Storage: content is stored as HTML in sqlite. The FAQ gives a rationale for why Trilium doesn't use flat files including the ability to clone documents and showing them at different places in the tree. Fair enough. There's no default syncing but it's possible to manually export content as a zip file of html (or markdown) documents, so theoretically could be scripted to back up content into git. One downside is that I ran into CRC errors with the exported zip file. I'm sure it'll get fixed but is a reminder of why I value flat files + git.
- scriptability (also possibly a con)
- version control (periodic diff-storing)
- raw format is HTML.
- exporting is a manual step (and at the time of researching, generated a broken zip file when trying to export the full tree).
Obsidian is a new (post-lockdown) app by the developers of Dynalist (which I've seen mentioned various times, but never used), and still in beta (I tested v0.7.4). It's closed source but free for non-commercial use, and its data format is entirely accessible so it's zero-risk as far as lock-in is concerned.
GUI: the most interesting of them all. Editing is markdown WYSIWYG. It doesn't support multiple tabs but does support splitting and re-splitting the screen into panes, so that you can lay things out according to taste, and see multiple documents at once. Potentially intriguing, though tabs would be nice too. I've not played with it much but it does seem to have various shortcuts and tweaks, and is generally quite impressive. The network links and listed backlinks are also useful for Zettelkasten notes.
Storage: just markdown files in a directory so could (in theory) be used alongside another app like Zettlr.
- link graph and backlinks
- polished/feature-rich editor
- opens up over a directory of flat files
- option to auto-correct incoming links if you rename files
- closed source
- no multi-tabbed editing
VimWiki is, naturally, not another Electron app, it's a Vim plugin which allows you to edit your wiki in Vim.
I won't go into too many details, other than to say that it supports markdown and
[] links, stores flat files on disk, and I'd probably consider it to be an excellent low-tech tool if I was happy to live purely in a console.