Back to the schedule
Previous: Moving from Jekyll to OrgMode, an experience report
Next: Org-mode and Org-Roam for Scholars and Researchers


Org-roam: Presentation, Demonstration, and What's on the Horizon

Leo Vivier

Download .webm video, 720p, 263MB View transcript

Org-roam is a Roam replica built on top of the all-powerful Org-mode.

Org-roam is a solution for effortless non-hierarchical note-taking with Org-mode. With Org-roam, notes flow naturally, making note-taking fun and easy. Org-roam should also work as a plug-and-play solution for anyone already using Org-mode for their personal wiki.

Org-roam aims to implement the core features of Roam, leveraging the mature ecosystem around Org-mode where possible. Eventually, we hope to further introduce features enabled by the Emacs ecosystem.

The purpose of the talk is to introduce people to Org-roam, whether they be Org-mode connoisseurs or newcomers. A lot of people have found value in adopting Org-roam and the Zettelkasten method in their workflows, and the goal is to demonstrate how they achieved it. The last part will present the future milestones that are in store for Org-roam.

Examples of short-presentations I've recorded in the past:

  • Actual start and end time (EST): Start: 2020-11-28T14.54.36; Q&A: 2020-11-28T15.12.44; End: 2020-11-28T15.15.51


What is the functionality of org-roam-unlinked-references?

Let's say we have Emacs in another note… for every mention of Emacs that is not linked, it prints all the results in the buffer.

How would org-roam files which would be very numerous integrate with todo's and org-agenda

Is it possible to use the backlinks feature in regular Org buffers?

We have a very controlled environment and this is where we keep all the notes.

Do you make your org-roam database accessible accross computers? Via putting the SQLite file in Dropbox or serving the DB in the cloud or something.

  • Answer: no. Only on one computer personally.
  • But plenty of people have done so. Section in the manual dedicated to this.
  • Pretty sure best results occur when the DB is generated seperately for each machine.

How do you discover tags/links to add to a new org-roam note?

… go to, on GitHub we show everything.

Do you share your org-roam knowledgebase in a public location?

Is it possible/easy to have a knowledgebase which is a mix of public/private data?

Is it possible to seamlessly link to other notes with syntax instead of a keybinding? How do you avoid ending up with duplicate links like tag1, tag_1 and tag-1? Since notes are created at different times it's difficult to be consistent.

What is the best way to keep a separate org-roam (dir) for work and home/personal?

Are the timestamp prefixes in the filenames optional?

Yes, you can modify the prefixe.

Just want to say good on you Leo! Perserverence!

Is there an easy way to export several selected notes, to say, a LaTeX file?

At the very core it is Org Mode. has some notes about exporting from Org Roam to regular Org - Yes, sorry, I meant to put together several "atoms" for export. - Try org-transclusion to make new notes and export to LaTeX file.

How do tags fit into org-roam workflow?

You mentioned you have a YouTube channel. Could you give us the link to it. I would definitely be interested in watching your videos. Yeah, I didnt see it. Thanks :D (Check the notes below).



Leo Vivier: I'm hoping to keep this talk in 15 minutes. I'll take five minutes of questions at the end. So, hello again! I suppose you're starting to get pretty familiar with me and my start(?) right now. We're getting into the nitty gritty. We started today, I told you about how I'd ventured from being a user to being a maintainer, and right now I'm going to get the chance to actually tell you more about the project that I'm maintaining, which is called org-roam. So even if I... It would have had a better impact if I didn't scroll the page, but you know, sadly, I'm out of tea, it's getting late in Europe and I'm starting to get tired.

What I'm gonna do during this talk is just to do, really, a survey for people who do not know what org-roam is about. Some of you might have, whilst browsing Reddit, found a topic about org-roam and thought to yourself, "Oh, that looks interesting, but you know, I have my own workflow and I kinda don't need to change anything about it. I'm completely fine using my very very large file. Or I'm completely fine having my database of notes which I've been accruing for 10, 20, 30 years or so." What I want to do during this talk is both to present to you what org-roam is about, if you are in this group of people who do not know what org-roam is about but would like to know more, but also for people who have close to no experience with Emacs and Org Mode and who have just found their way. They wanted to find the system to write their notes, basically, and they discovered this little tool which is called org-roam, and they'd like to know more about this.

I've got 13 minutes to convince you to use org-roam. If we go in a very broad strokes, what is org-roam? org-roam is a way for you to manage backlinks inside Org Mode. The keyword in what I've just said is links. Now there is a principle behind org-roam which is called the Zettelkasten method, which you can see written right there. It's a German word which means a slip box. If you remember in old libraries, you had--actually, I believe if I scroll, I should have an example of this. Yes. So this is a slip box. Basically, in all libraries, you used to have all the references to the books that the library used to have inside those boxes. They're called slip boxes because you can insert stuff into the boxes and you can remove stuff out of the boxes. Now if I try to summarize as simply as I may what the Zettelkasten method is about, it's about having a way to work with your notes which considers elements of knowledge as atoms, as something that is individual, like a single file. You consider that in order to build knowledge, you have to combine atoms together, so that when you have one atom, another atom, if you link them together, you have a complex thought or a complex molecule. Don't quote me on the chemistry, by the way. I shall remind you I'm an English major I have no idea what I'm talking about.

How does it work as far as a note-taking system is concerned? To do so, I'm just going to switch really quickly to my Emacs, if I may. So I'm just going to screenshare onto my Emacs. Just give me a second to get the windows all right. Okay, it's loading up. Oh no, I think Firefox has crashed again. Okay, so you're gonna have to give me a second. I need to figure this out. Okay. So everything is frozen right now. Just to tell you, so you're gonna have to deal with my lovely voice. Amin, can you confirm that if I switch to a new (tty?), you can still hear me? So can you still hear me now? Okay. So I'm gonna have probably to kill firefox and log in again. I'm sorry. It's gonna cost us two minutes, but I'm gonna try to be as fast as I can. Okay (Amin: Okay. No problem, thanks. All right. I guess no event is a good one without one or two technical difficulties. I guess this is our share of technical difficulties this year. No problem.) Leo: All right. Guess who's back? It's not Britney. It's just me, sadly, so you're gonna have to make do with me. (Amin: Welcome back.) Leo: Well, thank you. I'm just gonna turn back on the camera, if I may. All righty. I'm going to make myself a presenter. I'm going to share my screen with you. So, if my calculations are correct, you should be able to see my monitor right now. (Amin: Yep, but not your webcam feed.) Not my webcam feed. Okay. So I'm going to stop it. Sorry for the little delay, folks. You know, it's... The show must go on. Can you see it now? (Amin: Not yet.) Leo: Still not? Damn it. Can I stop it? Okay, so I'm gonna... (Amin: yeah, maybe try like sharing a webcam first.) Leo: All right, I'm back now. So I'm going to share my webcam first. (Amin: Okay.) Leo: All righty. So can you confirm whenever you've got my webcam working? (Amin: Let's see. I don't see it yet, unfortunately.) Leo: Is it loading up? (Amin: yeah, it's coming up. Yep, I can see it.) Leo: Awesome. All right. Okay, we're back on track. I've got still eight minutes left to do, so I might have to have a couple of minutes to my talk, if you don't mind and shave off some questions. (Amin: Okay, do you want to share your screen?) Leo: Okay, yeah, I'm on my way to. All right. So please forget whatever, whichever technical difficulties we might have had for the last three, four minutes, but we're back on track now.

So org-roam: what is it and how does it work? I was telling you all about atoms and I was telling you about links, but how does it work concretely? Right now what you're seeing on your screens is a slip box, which is what we... the fancy word that we use to designate your folder where all your notes are going to be living. So you have here (and I hope you can see my cursor; yes you can)... So we have a file which is called and the good thing is, as you might have garnered by the fact that it finishes by .org is that it is just an Org Mode file. I can create a heading. I can create another heading. everything works as you would expect it to. It is completely... It's just an Org Mode file at the end of the day. Now, what can we do with this? I've told you about links. You do know that Org Mode has links. What we're going to do is that we're going to create a new file. We're going to go back to our directory. What I'm going to do is that we have a special command... Actually, let me just show you my command. It might help you a little bit see what I'm doing. Wait, which is the buffer... Uh... log mode? Yes. exlog. So now on the right side of the monitor, you'll be able to see the command that I'm using. If you don't mind, in order to have as much realistic as possible, I'm going to make it a little bit shorter. Smaller, I should say. Is it not too small? Yeah, I believe it's good.

So what I'm going to do is I'm going to run a command in org-roam which allows me to create a new note. I'm going to use my keybinding, which is not this one, definitely, and I'm going to create a new file which is, in a great tradition of examples in programming, I'm going to call "foo." Right. So at the bottom--in the bottom buffer, I should say, you are seeing the file "foo," which is, as you can see here, a capture buffer just like you would have in Org Mode. Now what I'm going to do is that I'm going to validate this file and now you see that we are in the file "foo." The good thing is that I can start writing without having to worry about anything else. I was going to say that I'm showing off about my typing skills, but I did make mistakes, so well, nobody's perfect, right? So now we do have this "foo" file. We're going to go back to the index. Let's go back to the directory. We're going to refresh the file. As you can see, we have a file which is called "foo," and we have the index. So now what I'm going to do is that I'm going to insert a link to this file. So we're going to run another org-roam command which you can see here, org-roam-insert, and I'm going to insert a link to the file "foo." As you can see, it has now appeared. Now what I'm going to do, I'm going to save the file, and now I'm going to show you the little thing I told you about-- backlinks--before. I'm afraid I'm going to have to hide the commands for now, but don't worry they'll be back. I'm going to show you the side buffer. It is the buffer that you see on the right side of your screen. Right now, it's telling you that index does not have any backlinks, which is normal. But if we follow the link "foo," now you see something different on the right side. As you can see on the left side, we're back inside the file "foo," but on the right side, we have something showing up: one backlink in the file "index." And under the heading, you have the file-- sorry, the link "foo." You can just open the link, and you will be brought exactly where it is. So that was one thing.

Now just to make sure that you've understood properly, I'm going to go back to the index. I'm going to create a second file. Now I'm going to use a command that is slightly different. Let me just show you the commands on the right. I'm going to run the command org-roam-insert and I'm going to enter a file which is called "bar." Again, at the bottom, you can see that I have a new file "bar." I'm going to validate this file. I'm going to save Now, if we go in bar, and if I show you the links on the side, you can see that exactly the same, we have a link. Now just to make the pictures complete, inside the file "bar," I'm going to insert a link to "foo." I'm going to save. I'm going to go to the file "foo." Now on the right side, you can see that we have two backlinks. Now you're gonna tell me, yeah, thank you, Leo, but what's the point? Well the thing is it might sound... it might seem very simple, what I've just shown you, but programmatically, it's a little hard to do. We have to look into your files to make sure that every time you link your file somewhere else, we need to track everything down.

Now as simple as org-roam might be looking to you, thee thing is what we try to do with org-roam is to make sure that your collection of notes remains consistent whatever we do. An example, for instance, right now I've told you about a file named "foo" and the file named "bar." Let's say that for whatever reason, you decide to rename your file "foo" to something very original. Let's just say "bar." So we actually have a way in Emacs--in org-roam, I should say--when you modify the title at the top of the file... So we get "foo..." I've modified it with "baz." You can see at the bottom that right now we haven't saved and we are still in the file "" I'm going to save. Now what you see is a new name for the file. But you may ask, "Wait a second, in the other file, we had a link to this file. Does it mean that it's broken? Does it mean that we cannot access the file anymore?" But when we go there, beginning to go in the index, so obviously the actual description of the link hasn't been updated, but if I show you what goes on under the hood by showing you what is fontified, what is behind the content of the link... Actually, it didn't work! that's why you never present live, folks, because otherwise you're just going to show problems with the software and that's not good. Something must have gone on, obviously. But generally speaking, the file should have been updated. Damn. I'm showing you bugging my software. That's not very professional, now is it? Basically, to come back to the main idea, what we try to do with org-roam is to make sure that everything remains consistent. We really much love the system of organization that is behind the Zettelkasten method.

Now I was going, at this point of the presentation, basically, I wanted to go back to Firefox and show you more stuff, but it's likely that it's going to crash again. I'm not going to tempt the devil. I'm just going to continue talking to you like that. So the Zettelkasten method is a very organic way to write notes. If you think... I believe as Org Mode users, we share quite a lot of features. I'm out of time. I'm just going to take one more minute to answer this question that I'm asking myself anyway. But if you're anything like me, you've been through many iterations of your workflow inside Org Mode. Do I keep all my professional stuff under one heading, or do I create a separate file for this? You know, those types of questions on which you could ponder for many, many hours at night, generally when you have a tight deadline to be following. But what I've discovered by using org-roam for taking notes about my academic projects or by taking notes on anything worth writing about is that not having to worry about the structure of you files, just having to worry about atoms and links, it does wonders for the way you think about problems. It does wonders about your creativity. And it does wonders about your ability to take your thoughts, put them on a paper, and generally, during this process you realize, "Oh, maybe I do not know this concept as well as I should." But I've never had a system which brought me as much serendipity as this system. And for those who don't know, serendipity the ability to come up with novel ideas on the spot, contextually. So this was just a little primer on what org-roam and the Zettelkasten is about.

In about 20 minutes, I'll be giving you a talk about the technical aspects of org-roam, which I'm certain some of you will be very interested in. Otherwise, I do have a YouTube channel where I try to record videos where I explain to you what org-roam is about, what the method is about. I'll just finish on this. I'm two minutes extra time, sorry. We do know that a lot of people are interested into org-roam. I mentioned at the very beginning of the presentation that a lot of people discovered Emacs and org-roam and Org Mode even through org-roam. We feel that we have a duty to introduce those people, this new pool of people, most of whom are academic,s into the world of Emacs and into the world of free software. Right now the thing is we're not doing a particularly good job at writing manuals. I'm just going to try to stop sharing my screen, because I'm nearly to the end, and just try sharing my Firefox windows if it allows me. No, it doesn't allow me, which is very good. That's why I won't have to to screw things up. We know that our manual is not fully up to date, but believe me, one of the key focus right now is making sure that within two to three months, we have a good tutorial for people to join, and we have good videos for people to get introduced to the topics we're covering. And that's me done. So, thank you so much for listening and now I'll be taking some questions. (Amin: Thank you very much, Leo. Cheers! We have, I think, about two minutes four questions, I see a lot of them on the pad. Would you take them?) Leo: Sure. So... Yep I'm scrolling, I'm scrolling... Getting Things Done, that's Aldric. Still scrolling. Okay. org-roam. Oh, wow. Okay. So we do have quite a lot of questions. Please excuse me if I'm answering your questions really fast, but I just want to make sure that I cover as much ground as possible.

"What is the functionality of org-roam-unlinked-references?" So basically when you have a file that is not linked anywhere, this function allows you to see... Let's say we have a file "Emacs" and we've talked about "Emacs" in another note, but we haven't created a link. What this command do is that it looks into your folder for every mention of "Emacs" that is not linked to the note "Emacs," and it prints all the results in the buffer so that you know, "okay, I've talked about Emacs here, but I didn't create a link. Do I want to create a link?" That's it.

"Is it possible to use the backlinks features in regular Org buffers?" Right now, no. It is not possible. We are having a very controlled environment which is... I told you about this slip box folder before. This is where we keep all the notes. The reason why we do this will be more evident when I go through the technical presentation, but it's because of optimization. I'll get back to you on that afterwards.

"Do you make org-roam database accessible across computers?" No, I do not, because I'm only using my laptop, but plenty of people have had a lot of success doing so either by sharing the files via syncthing or by any other method. We have a section in a manual specifying how to do this. "How do you discover tags' links to add to your new org-roam note?" There is something that I didn't tell you about which is called org-roam server, which is a magnificent way to access visually the notes that you have in your in your system. You'll have to go to the website. Please go on our Github page. We show everything. I hope what I've told you has excited you, so please go. Maybe one more question, two more questions, just to make sure?

"Is it possible to seamlessly link to other notes with syntax instead of a keybinding?" Yes, we are working on this. This is a huge project that we're doing with org-roam which is called link-ux. We're trying to do something which is very close to Roam Research, which is the software we're using for inspiration for org-roam. Yes, there are going to be ways to do this in the future. I'm going to give you a window of maybe three to four months. One last question. Uh, good on you, thank you, well, thank you for this.

"Is there an easy way to export several selected nodes to, say, a LaTeX file?" LaTeX. Yes. I mean, it's Org Mode. At the very core, it is Org Mode, so you know you don't... If you want to export to a LaTeX file, you can... you just use the ox-latex library, which you can access by pressing C-c C-e for export.

All right. Is it... I believe I'm... It's all the time I had. Amin, can you confirm this? Okay. So if you have more questions, don't worry, I'll be in chat. I'll be answering them. I'm also on on all the platforms we advertise on org-roam. If you want to reach me, I'm really easy to reach. Our Github page is always open. So thank you all for all your questions and all your energy about org-roam. It is very exciting for me to see all this. but right now, I'll be handing off the microphone, I should say, to Noorah, who is going to talk to you about the academic way to use org-roam. I'll be back afterwards with the technical talk. Thank you. (Amin: Thank you very much, Leo) Leo: See you later, guys.

Saturday, Nov 28 2020, ~ 2:54 PM - 3:14 PM EST
Saturday, Nov 28 2020, ~11:54 AM - 12:14 PM PST
Saturday, Nov 28 2020, ~ 7:54 PM - 8:14 PM UTC
Saturday, Nov 28 2020, ~ 8:54 PM - 9:14 PM CET
Sunday, Nov 29 2020, ~ 3:54 AM - 4:14 AM +08

Back to the schedule
Previous: Moving from Jekyll to OrgMode, an experience report
Next: Org-mode and Org-Roam for Scholars and Researchers