Roam as an Operating System
Why do people bother with emacs?
It's not like any given feature is better, in any strong sense. And yes, sure, it can do anything, but convincing emacs to do something new is rarely easier than just installing a purpose-built program. Reproducible configurations based on config files are cool, but the emacs design philosophy definitely puts a lot of setup work on the user's back, rather than the creator's.
But fans of emacs, especially heavily-configured emacs, are very clear that doing everything within one program is inherently valuable to them. Why?
Have you noticed we hardly have computers anymore? Computers compute data. We don't have data, these days. We have apps.
/Apps/ have data, internally, and sometimes even provide tools for manipulating it. A good notes program gives you control over the data contained within your notes. This is legitimate and valuable. But it isn't general purpose computation. The web is even worse. Most websites are apps that don't even provide an approximation of general purpose computing. They only contain the content created on them, with barely the most trivial tools for import and export.
Most social media has the same fundamental features. Post text, maybe slightly rich text, with attached images and videos. Yet have you ever seen someone share a screenshot of a post on another social media site? Tumblr and Facebook are effectively identical in the types of media you can post. And yet somehow users find it consistently easier to share from one to the other via taking a screenshot. My theory? Screenshots are a top level function that includes better source and attribution detail than copy/paste, and can function in a single action on both text and images.
Someone who takes a screenshot of a post to share elsewhere is trying to access their data with their computer, instead of with an app. They have to do so via silly convolutions because software actively fights back against that effort. Emacs doesn't fight you for your data. Emacs packages allow you to legitimately manipulate it. To store it, retrieve it, process it, edit it, post it, while operating within a single paradigm and without needing to play dumb games to retrieve it.
This is its true value. With emacs, when you have a piece of text you can trust that you can actually just treat it like a piece of text. You can select it the same way you select any text, your keybindings work the same way as for all your other text. You can perform arbitrary actions on it, like you actually own the text, cause you do. That action can be running a spellcheck, or a search, or posting to your blog, or to twitter, or filing to your notes, or creating a hyperlink, or any other action that you can perform on whatever text you like, once you set emacs up to be able to perform it at all.
And I feel that's what most people really want out of emacs. A lot of them would be fine with using multiple programs, so long as they all actually worked, and weren't siloed apps that prevent general purpose computation. But it's hard to find programs, these days. You just find apps.
Roam has the potential to go either way, at this point. Right now, Roam is an app, even though it has some good integrations. I use org-roam instead, personally. Mostly for privacy reasons, because I like to self-host my notes repository. Roam has enough extra features that I'll probably change over once they add encryption. But it's also significant that I can view my filesystem alongside org-roam, and I can interact with my notes as data, not as app-stuff. I think it's worth paying attention to how to architect these features early, and in particular making the fundamental choice of how and whether to integrate Roam with computation as a whole.
Broadly speaking, there are three choices available.
The first is to ignore this whole problem, and leave import and export up to individual integrations. If the community building your integrations is passionate enough, this may even work fine.
Second, you could expose full APIs, and hope someone else solves the problem. Someone could build a proper interface for computation, and Roam could be easily set up to take the content and metadata the interface pushes to it, and provide the data the interface wants when asked.
Or third, you could do the whole thing yourself, and build Roam-the-OS, with combined filesystem/backup/sync/social/annotation support, where everything you do is already inside Roam and taking notes is a fundamental operation across the whole of your computer.
I'm actually inclined to think the second option is best. Do one thing well, and all that. It's more elegant to have the interface be the fundamental operation and have it merely connect your data to the filesystem/backup/sync/social/annotation plugins. That's fully compatible with everything Roam ought to be able to do, and it keeps Roam itself more pure.
But also, is anyone building that? It's not me, I work in finance and don't actually know much coding. Athens is aiming their sights a bit higher, and integrating social in a way that recognizes its status as an alternative to or overlay upon the whole of the web. But everyone working at building emacs-like interfaces is just working on emacs itself, not reinventing the concept of an operating system. And so Roam has the opportunity to remake the world in its image, by solving the fundamental problem of app-based computing.
We could have a program that treats websites you've read and emails you've sent and margin notes on books in the same way, archiving them and exposing them to search and fitting them into your knowledge graph. Notes should not be a separate data type than social media posts, that instantaneously destroys most of the available value. The tiny scraps left over are enough that people want them dearly, but the fact that you can't annotate your filesystem still represents a deep disconnect from the true promise of the memex. We can do better. We can go further. We can /win/.