Org-roam: Emacs org file based personal knowledge base system
orgroam.com
orgroam.com
"We have to determine the extent to which our anti-Hegelianism is possibly one of his tricks directed against us, at the end of which he stands, motionless, waiting for us."
It seems any investigation of prior art regarding knowledge base systems comes back to Emacs, where the solution to all problems of note taking and memory retention is patiently waiting for everyone to finally learn Elisp. But Emacs is for dinosaurs, we repeat for the 100th time ...
All the new things do however prove the Emacs model at least partially right: most things can become well integrated into Emacs. Multiple cursors and editable fired (file manager) buffers? Worked from day one!
If anyone has successfully done something similar with org-roam, I'd love to hear about it. I've never been on a team that would even consider it, given the Emacs learning curve. That said, I recently helped a Vim + Bear user switch to Doom Emacs + org-roam, and he was swimming in days.
Is anyone aware of projects to diff / merge content in collaborative knowledge graphs like these?
Related video demo: https://www.youtube.com/watch?v=Wy9WvF5gWYg
Definitely a richer ecosystem though.
(defun buffer-backlinks ()
(interactive)
(rg (buffer-name) "*.org" org-directory))
(add-to-list 'org-mode-hook 'buffer-backlinks)
Net effect of that tiny elisp snippet is what when I open an org file, I get a buffer beside it (powered by ripgrep/rg) with names + context snippets of all the other files in my org dir that link to it.I myself use vanilla org mode for this purpose (spaced repetition). My workflow is the following:
1. Create a hierarchical structure with leaves representing bits of knowledge. For example postgres/indexes{btree, GIN, ...}
2. Have a study session with materials (books, video, etc).
3. Try to recreate a concise version of each subject and place it under leaves, so put text in btree, GIN, etc. If I cannot do something I skip it and fill as much as possible.
4. Verify written, fix if necessary.
Then, the document will sit there for a while and when I feel that I need to review a certain subject I would open a tree node and try to recall the child nodes, or sometimes go directly to leaf nodes and try to explain each. Then verify with the data there, maybe do additional research if something isn't clear.
I initially wanted to make anki cards for every piece of information that goes to leaf nodes, but it seemed that hierarchical organization suits me better. It would be interesting to try an automatic card system that would keep track of when I reviewed the concepts and remind me to do so.
I saw that too! I love the idea of using Git and an editor to manage my Anki cards.
It looks like it might be anki-mode:
The repository: https://gitlab.com/phillord/org-drill/
https://github.com/louietan/anki-editor
As org-roam itself is not a spaced-repetition tool it does not mention that particular setup in the docs. IMO, the one thing that none of the alternatives to org-roam offers is a (very) vast ecosystem of packages. As your notes are just org files underneath, org-roam plays really well with any other org-mode package.
Two questions for those with more experience: 1. Do you think this is a good system for someone NOT actually working in emacs all day long (I’m not a programmer)? 2. I see some mobile apps out there that claim to allow Org Mode use on phones ... is this system of note-taking / task mgmt actually usable on a mobile device?
2. You can't use org-roam on mobile but there's Orgzly for generic org-mode viewing and editing. You need to go through some steps to ensure non-conflicting syncing though.
Workflow is something like:
1. Sit down at desk, save all agenda files, and do a commit/push (Emacs/Magit) - this is the entire repo including the sub dir with my Orgzly files 2. On phone (Mgit Android app) do a commit/pull 3. Pull down to desk 4. Resolve conflicts (usually none) 5. Do whatever inbox processing on PhoneInbox 6. Redo the commit/push and pull changes to phone.
This keeps an entire repo of my org files on the phone for reference but minimizes the number of files Orgzly has to deal with and also reduces conflicts from editing a file in Orgzly and on phone. Sounds onerous but I might do this a few times a week, possibly daily if I am having a busy week.
I've encountered so many little issues that resulted in hours of debugging and searching for solutions that the net productivity gain has definitely been negative. True, if I stick with it for 10+ more years, the productivity gain will likely become net positive, but who knows if that will happen. IMO it's quite likely that better systems are going to be invented over the next 1-2 decades. It's clearly outdated.
Only do it if you are willing to invest a large amount of time into learning emacs, and if you are planning to stick with it for decades. The best for me way to describe it is: Emacs is the ultimate procrastination tool. It's great at making you feel productive by letting you do meta things with elisp and configs, when you really should just be getting stuff done.
I agree, it is an amazing procrastination tool. My advice is to stick to spacemacs with very few configs. About a year ago i started from scratch with my .spacemacs. Now I've got about 20 lines in there, I use deft/org-roam/fira code, and org-attach and I think the less you fiddle the better off you'll be. Think of it like a 20 year old car-yes you can put a turbo in there, yes, you can chop the springs and lower it, but 1 there will be less people to help you when it breaks, and 2 it will break more often.
Honestly, org-roam is moving so fast that if you aren't in the slack or at least watching the commits, I'd think twice. I'm betting there will be breaking changes in the future, whereas deft is rock solid.
There was a lot of discussion on HN of this software and other alternatives to Roam recently https://news.ycombinator.com/item?id=23666950
I have tried using Emacs for other purposes, such as writing code. Ultimately I gave up and went back to Vim.
I have also tried other task management systems (you can do a lot with Org mode, but I use it only to keep notes and to-do lists). Org mode is far superior to the other systems I have tried or otherwise considered.
I think of Emacs as a a programming environment. By itself it’s not useful. It needs applications to make it useful. Org mode is one of those applications. Some programming languages have good Emacs modes so Emacs might be worth using to write code in those languages (I program mostly in Haskell, and the Emacs modes for it leave a lot to be desired, so it’s easier to just use Vim.)
The old jokes about Emacs just needing a good text editor really are true. If someone has programmed Emacs to do what you need, or if you’re willing to do it yourself, Emacs works well. If you don’t want to program your editor, don’t use Emacs. Org mode is so good at what it does that I keep an old Linux Thinkpad around just to use it, though I can use it on my Macs as well.
Though I’ve heard of Org roam, I’m not sure what it would add to my workflow so I haven’t used it.
2. I don't use it for coding. If I have to code these days, it's in Sublime (and I'd still choose Vim over Emacs for dev anyway)
(And this is all without org-roam, which I could not get working properly with Mac Emacs. There's only so much time I'm willing to invest in these things)
[1] https://org-roam.discourse.group/t/project-name-change/154