Exploring org-roam

After I released my Orgmode course on Udemy I got some requests to do a course on org-roam. I never heard before about org-roam and the „roam“ in the name made me think that this is just a tool to share data between several systems, like in raoming profiles or roaming with your cell phone. Nevertheless I started to look around what this tool is.

I found out that this is an open source replica of a tool called „Roam research“ which you can subscribe to at a monthly fee. And I read some articles and saw some videos about roam and og-roam. I also attended the EmacsConf 2020 as a speaker and listener and even after watching the talks about org-roam I didn’t have a clear vision what this is all about. People seem to be very excited about it, but I was still at the basic question that I always ask when trying out something new: „What is the benefit of it?“

Is it worth the effort?

Whenever I try out some new tool I want to know which of my daily „problems“ this tool helps me to solve. So on the first spot org-roam looks like a note taking system, but I still wondered, how this is different from things like Evernote (where I have a premium account) or how it differs from setting up a Mediawiki enginge and running my own wiki on some machhine?

I saw the videos of Abraham Peters who praised org-roam for example for bible studes. Well, I’m not doing bible studies, so what is in there for me. I guess I should try out.

Trying it out

So my next attempt was let me try on my virtual machine. I have installed a system similar to my openSUSE desktop on a virutal machine, so I can try out new things without the risk of interfering with working things. Org-roam can be found in the melpa archive, so I tried to install it and the first lesson I had to learn is that you need at least Emacs version 26. Too bad, the version shipped with openSUSE Leap 15.2 is only 25.3, but there is hope. There is an experimental package that installs Emacs 27.1. So after installing this I was able to play around with org-roam.

I created some notes and found some weird behaviour whenever I tried to open a daily note that already existetd. Instead of opening the note I was taken to a somehow crippled capture menu and after that the note openend. Time for a bug report. I reported the issue on Github and got the response that this is not reproducible. So the next attempt was to update the Org version form 9.3 to 9.4.4 and that problem went away.

So now I was able to create some notes and link them together. I was even able to create that nice graph that shows the connections between the notes, but it still seemed difficult to use, and I started wondering how this will scale if I have a reasonable number of notes.

I tried out tags and found out that on org-roam-find-file I will see those tags, but it still didn’t seem much helpful. I also came to the conclusion that I need to put „How to take smart notes“ by Söhnke Ahrens on my list of books to read. This explains the „Zettelkasten“-Method which seems to be the foundation of org-roam.

The Heureka moment

I continued to play around in the virtual machine and watching other videos on org-roam. Then I saw a video showing org-roam-server which presents the net of nodes in your webbrwoser and this was the moment where I realized how this can help me to manage the knowledge that the notes represent.

So my next action was to install org-roam-server and get it running. That was not that difficult and soon I could see nice nodes with lines beween them and dig in to some connections. Then I learned about org-protocol for org-roam and that I can open the notes in Emacs in the moment I click on them in the browser session served by org-roam-server. Wow, that seems to make things much easier.

Next was to have sort of list interface for all the notes. I learned about Deft which seems to fulfill my needs to see all notes with their titles. Then I also found a hint about the „ido“ completion system on StackExchange, so this makes opening notes much easier with org-find-file because you can start typing anny substring of tags or filenames to limit the list of matches.

The last experiment I did last night was making use of the org-roam-reference protocol, this means you can create a bookmarklet wih some JavaScript and whenever you click on that the current website URI will be treated as a reference and you can create a note for that website. Practically a replacement for the Evernote Web clipper .

The road ahead

So at this moment, I think its time to setup org-roam on my desktop and start using it. I think that this will be the „missing part“ of my GTD system, because so far my Orgmode system is fantastic to handle actionable items, but lousy to handle „reference material“. With org-roam there is a good chance that this will change and reference material can be managed easily.

I guess my first task with org-roam will be building a knowledge base about org-roam. I now fully understand that I was asked to make a course on that, I see that the learning curve is first as steep as it was with Orgmode as well. So give me some time and I will try to find a way to „flatten the curve“ and create a course for that.