Thoughts on Trilium notes (and others)

During the weekend I spent some time trying to set up Trilium notes. For those who don't know, Trilium notes is an open source note taking application. It is hierarchical which means the notes are organised like a tree. It has both a client and server component. That means one has a desktop application and a web based interface for accessing notes. It is truly self hosted. And it has been built very well with all the basic features one could ask for around ease of setup and basic security. But the actual usage of the tool?

It is disappointingly complex really. After spending some hours trying to wrap my head around it I decided that I probably won't touch it again. Not that it's bad in any way. Just that it seems like it is built for a very specific set of users who want control over every last bit of how the software works. To understand how it works, one needs to think of Lego. The software exposes just a very basic set of primitives that one can use like basic Lego blocks to build up everything else you need.

  1. The structure of the documents itself. Like Cherrytree, Trilium is a hierarchical note taking application. The API exposes these nodes and sub nodes.
  2. The content of documents.

These two seem obvious, but the latter is more detailed than what it seems to suggest. In trilium, a todo list is a document template that you create. That on its own is not difficult to understand. But when it comes to generating a new todo list based off that template, you have to write the Javascript implementation of all of this. This includes the state management and logical operations of a todo list item. The idea behind this is that you can build your own very complex todo list templates. One for shopping lists where the idea of location is built in by default for example. One for your work related stuff where a due date is built in by default. And then you can define your own behaviours for each type of template. You can even choose to add buttons to the interface via this implementation logic.

That is incredibly powerful. But it's implementation is not something I have the time to be dabbling in right now. I got more important things to be working on and trying to figure out how to reinvent the basic elements I've come to expect from a note taking application is not how I want to spend my time. That said, there are some very powerful ideas that I think other applications should probably copy from Trilium notes if they can manage the architectural changes that will come with it.

Primary among those ideas is how Trilium deals with “duplicated” notes. The author of the app has recognised that categorization of notes is a very fuzzy concept. Sometimes notes can fit in multiple areas. Shopping lists can be inside the recipe section of your notebook as well your daily todo list. When duplicating items across nodes, instead of actually creating unique copies, Trilium instead creates a “reference” to the original item. This means that when you check off the item within your shopping list, it gets checked off everywhere else that you have “duplicated” it to.

The second idea that I do think is very powerful in Trilium is how they have approached customization. The idea that instead of having plugins you can have composable elements utilising primitives as building blocks to create different types of nodes is a powerful idea. The idea that you need to have it be part of your primary document tree is a little less appealing. I do believe that the two concepts should be separated and be easily sharable. Write your “template” and its logic and click share to package it up in a way that others can use.

I feel like Notion has managed to do a lot of this with templates and template buttons. You can create your own templates using their primitve blocks (Which are a lot more full featured and intuitive than Trilium). You can generate them using “template buttons” which I have used to the max of their potential in the past. And you can even share those templates into Notion's public template gallery which means other users can also take advantage of it. What it doesn't have is some scriptable logic inside of it which may actually just be a matter of practicality. Sandboxing code and ensuring that someone doesn't add logic into the plugin that siphons off your private notes is a very difficult task.

BUT, it's still so powerful where I can imagine a template that is based off your Todoist/Trello board and integrates with Dropbox or other platforms to create notes that are so much more rich than what they are today.

And just as I finished typing this paragraph, I discovered Coda. Coda seems to be all the things Notion is and then some with added power. When they launched, one of the primary ideas they had was around formulas. So think, documents that automatically update titles and text based on how many todo list items you have left to check off. And the way you implement that is by using Excel style formulae. And they had all the template stuff as well.

Then in October 2018 they added a feature called packs where you can select from a set of pre-developed “packs” to add integrations with other software into your doc. Imagine a template that is based off your Shopify catalogue and Gmail. You have a rental shop where checking off an item can mark it as rented (in your shopify interface) and then within the interface you click "Send email" and it generates an email based on the tabular data in that note and sends it to the customer. That's powerful. It's what I had in mind. It's also not open by the looks of it. In fact, you can see the requests for packs pending over here:

I do hope they allow the platform makers to create these templates in the future.

Whichever way you look though, note taking applications are getting way more powerful each time you look. At this point, you are building applications within the document which is pretty crazy to think about.

At the same time, along with the pricing of coda and notion and the bulkiness of the tools, it looks like I'll be sticking to Cherrytree for my note taking for the considerable future (apples to oranges. Don't bother).

Posted on May 11 2020 by Adnan Issadeen