What does HackerNews think of trilium?
Build your personal knowledge base with Trilium Notes
- https://github.com/laurent22/joplin
- https://github.com/logseq/logseq
- https://github.com/zadam/trilium
There is also https://github.com/foambubble/foam mentioned, which I haven't looked properly at yet.
For managed/hosted, those all have some variety of options for that. Also https://obsidian.md/, https://www.notion.so/notes, https://roamresearch.com, and OneNote.
https://github.com/zadam/trilium
And while it does use a db backend, it allows you to extend the interface with inline JavaScript. It’s extremely underrated
See trilium: https://github.com/zadam/trilium
It's a generic note storage (with a DAG based model) that's very extensible and comes with a demo task manager implementation: https://github.com/zadam/trilium/wiki/Task-manager
TLDR; - future proof file format (markdown)
- possible as local standalone + sync to simple cloud storage (like gdrive/dropbox/...)
- gantt charting
- uml diagramming
- task management
- available on github
- active development in the last months and years
- editable
FWIW, I settled on https://github.com/zadam/trilium which is very bare-bones but fully open source and self-hostable.
Note: I run a paid 3rd-party synchronization service for Trilium Notes that would offer the publishing part of what you mentioned easily, without setting up a cloud server: https://trilium.cc/
It's really easy to set up with docker and I'm amazed at the wealth of features.
I use it on desktop and mobile too without issues.
Pros:
1. Data is saved in SQlite. I am at 33k notes and it springs open instantaneously.
2. Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree. (Think soft-links)
3. WYSIWYG support (CKEditor)
4. Tags, advanced scripting features
5. Other ususal wiki stuff like backlinks, note-map etc
Cons: 1. Electron.
2. Data is saved in SQlite, not plain text.
It's open source, you can selfhost it and you can write your own scripts in JS to really make it your own.
A more universal solution would be useful though
I'm still looking for something with a cross-platform GUI that I like as much as I liked Obsidian.md - but with the same sort of arbitrarily nested hierarchy (with TODOs and the like at any level) and the ability to adhoc rearrange my notes like org-mode provides. The Emacs/org-mode level of customization would be nice, too.
Trilium Notes ( https://github.com/zadam/trilium ) was also a good contendor, but not having a text-content-first focus made for some frustrating experiences of data corruption, and testing data export of my initial trial run was messy as a consequence as well.
I'm currently experimenting with Trilium since couple of days. While it looks complex at first, it seems to have a lot of extensibility which might make it "future proof" for extensive data.
So far it looks good.
After trying a handful of the usually mentioned tools, I've been very happy with Trilium Notes [1], which seems to share some of the same concepts as this project, but providing rich-text (including embedded images).
As much as I like the flexibility that flat files, markdown, or Org-mode provide, I also really like the extra built-in functionality that comes along with Trilium.
I'm not wild about having the data tied into a single program, but the data is at least accessible and documented (if primarily through the open source code), so I know my data's not entirely locked up.
Trilium says macOS isn't supported as the author doesn't have a Mac, but it works 95% like you'd expect with a few small quirks.
It's not really clear where does the encryption/decryption happen in this scenario (client/server).
Any way, in my app (https://github.com/zadam/trilium), I encrypt on the client (not the whole database, on a per-note basis), sync with the server already encrypted data when internet is available (fine granularity so small and fast sync) and search happens completely on the client (which has full offline database and decryption key).
As a self hosted app encryption protects against a bit different threats so encryption is done only on request for particular notes (since it implies annoying "enter password").
Every single box is checked by Trilium (https://github.com/zadam/trilium), plus you can self host a server if you want to sync between as many clients as you want, and you can password protect only specific notes if you want to. Only "disadvantage" is that the client is electron; if you can live with that, I think you should check it out. (I'm not affiliated, but I've been using Trilium for a while.)
It appears to match all of your requirements, and is scriptable. It's also strongly FOSS, in the AGPL sense. It also has the ability to self-host a sync server.
I'm not sure if it meets all your criteria, especially as the meaning of certain features from program to program can vastly differ. However, if I've correctly understood what you're looking for, it matches at least some of them.
Natural hierarchy: notes can be organized into any tree that you like because notes can be cloned (not just copied) into any location.
Very easy to create references with automatic back-references: bi-directional linking is built in and is as simple as typing @notename or Ctrl+L. It also includes automatically generated link-maps and self created reference-maps to see all the links between each document.
Embedded documents: You can embed any document into any other document and have it referenced live and thus updated anywhere it's embedded.
Self-hosting: You can either run it on a local machine or host your own sync server (which also allows you to access it from a browser), super simple to setup.
Large file support: I haven't run into any issues with this, seems reasonably limitless.
Full point-in-time history: From the official wiki: "supports seamless versioning of notes by storing snapshots ("revisions") of notes at regular intervals.". You get to choose this interval.
Programmatic access: Full built-in scripting support.
Every link/bookmark I add could download the webpage and cache it: You can definitely script this yourself but the web-clipper extension for Trilium allows you to save directly from the browser into a new note (text, screenshot, or local copy of site). Not exactly what you're looking for but a derivative that could be modified to suit your needs.
There are so many other features that make it the best note-taking application for me (saved search queries represented & updated as notes in the note tree, full theming support, encrypted notes with timeout function, customizable keyboard shortcuts, active developer that you can speak to, etc).
My multi-year search for an advanced customizable note taking application has finally come to an end. Frankly, I like the application so much that I created an HN account just so I could pass the link on to you.
The best way to understand the benefits of Trilium is to give yourself 10 minutes to read the documentation[2] and take it for a test run.
[1]https://github.com/zadam/trilium/ [2]https://github.com/zadam/trilium/wiki
It's a bit similar to writing a journal - just the act of writing it down has big therapeutic and introspective effects.
For me, the act of organizing the information actually does not take too much time but that might be caused by the fact that I typically don't obsess over correct categorization or do this "refactoring" when I'm bored. Main tool to find notes of interest is search anyway, categorization for me serves as a way to find related notes.
> The turning point was spending months of part time hacking writing my own Evernote’s clone in Clojure in the backend, a Firefox plugin, and a web app. It was a fun project, but mire fun writing it than using it.
Lol, sounds like me, except it's been almost 3 years since I started (https://github.com/zadam/trilium if anybody's interested)
It's open source and self hostable.
It's possible to script additional functionality into it from the UI itself. I find it quite powerful.
* What I Want *
Non-negotiable items include:
- Low Friction: A little initial setup is ok, but just taking a note should require no more than a click or two (whether clicking a mouse or a pen). - Open source. - Aesthetically Pleasing: I'm tired of looking at ugly stuff. - Has to handle LaTex. - Has to handle syntax highlighted code listings. - Notes are in an easily portable format. - Organization Tools: Some sort of organizational ability. I have thousands of notes that I use and need to refer back to all the time. - Privacy: No sending my personal information to someone else's server.
Negotiable:
- Mobile Friendly: My eyesight isn't good enough to use a phone for note-taking or reading. Tablets are Ok. Desktop is best for me. - Implementation Language: Since I'm looking for an open source solution, I'd like it to be in a language that I like. In my case, Clojure/ClojureScript, Lisp, Scheme (Racket) would be optimal. JavaScript is least desired. - Minimal dependencies: I'd prefer that it not be based on Node, NPM, Electron, Atom, or any other huge ecosystem that would have to be installed on my system. (Java is Ok with me, obviously.) Scriptability: It would be nice if it could help automate my workflow.
* What I Have Tried *
- Long ago (2005) I started a job at which the company provided me with a stylus-based, Windows tablet PC. Included was a copy of [OneNote](https://products.office.com/en-us/onenote/digital-note-takin...) that could do very good, real-time handwriting recognition.
During work meetings, I typically created the notes as the meeting progressed and projected them on a screen in the meeting room, letting everyone make sure that what they said was understood and that they could see what they had agreed to (tasks, dates, etc.)
When I left that job, I would have bought one of those tablets if I could have afforded it. Since then, OneNote has morphed into something unusable for me, and I haven't gone back.
* I was a very early adopter of [Evernote](https://evernote.com/) and had a premium membership for a long time. I really missed the ability to do handwriting recognition, but being able to search within images was almost as useful. We would put meeting minutes up on the whiteboard, photograph them at the end and stuff them into Evernote so they could be searched. I sadly stopped using it after Evernote also morphed into some unusable mess (Pay more! Get less!) that I couldn't remember how to use on different platforms.
* I used [TiddlyWiki](https://tiddlywiki.com/) for a while. It was quite powerful and easy to use, but it just bogged down unacceptably with a lot of notes.* [Zim](http://zim-wiki.org/) wiki works well, but it doesn't have all of the features I want these days. And it is so ugly that I just can't bear to use it.
* [WikidPad](http://wikidpad.sourceforge.net/) is nice but also ugly and missing features that I need these days. And I don't use Windows anymore.
* What I Do Now *
I have tried to consciously move away from Google and Microsoft tools and closed-source programs (not always successfully.)
* I finally just wrote a personal wiki of my own. I started it in [Racket](https://racket-lang.org/), but moved on the [Clojure](https://clojure.org/) for server part and [ClojureScript](https://clojurescript.org/) for the client part, mostly just the Markdown editor. It creates documents that are based on [Markdown](https://en.wikipedia.org/wiki/Markdown), but include extensions for [LaTeX](https://www.latex-project.org/), syntax highlighting, [YAML](https://yaml.org/) front-matter, and, of course [Wikilinks](https://en.wikipedia.org/wiki/Help:Link).
It exports to Markdown files that can be included directly in my blog.
It has almost all of the features I want, and it is relatively easy for me to add new things as needed.
* I always keep an inexpensive [sketchbook](https://www.strathmoreartist.com/visual-journals/visual-jour...) with me for drawing, painting (watercolor, tempera, and acrylics only) as well as note-taking. Scanning or transcribing notes into my wiki was a PITA, but...
* I have recently started using a [Rocketbook](https://getrocketbook.com/). I use it for detailed drawings at my desk. But for things that are in my sketchbook, I can place the smaller pages from the sketchbook onto a page in the Rocketbook and scan them. They are then sent off to my email account. There are settings to cause the handwritten notes to be transcribed and placed in the email, allowing easy transfer into the wiki. That's usually all I need.
* For web clipping, I use the browser extensions from [Joplin](https://joplin.cozic.net/) or [DEVONthink](https://www.devontechnologies.com/products/devonthink/overvi...).* For extremely long-form writing (beyond a blog post or note), I usually start with my wiki, splitting the significant parts into different documents. While collecting research, I use DEVONthink and [Scrivener](https://www.literatureandlatte.com/scrivener/overview). Finally, I put it all together in Scrivener.
* The Future *
* I enjoy expanding my wiki, both in content and in function. I want to add sophisticated tagging, something like in [Trilium](https://github.com/zadam/trilium).
* I think [OPML](https://en.wikipedia.org/wiki/OPML) is the perfect format for writing a daily journal among other things.
* Of course, there is a never-ending list of smaller things to add.