Comment by olah_1
3 years ago
The only way I would use a graph system is if it had named relations. I remember being baffled at systems like Roam and Obsidian because the relations on the graph just conveyed no information... How is a bulldozer related to Wittgenstein...
Now if you can name the relations, that allows you to (1) create shorter notes and push more information into the edges and (2) it makes the graph into a true "mind map".
When you can't name relations, you're forced to make "nodes" for Topics or Tags. And this is where the difficulty comes in with "where do I put this?" Not only that but you're forced to write notes for basic concepts like "programming language" and then you find yourself re-making wikipedia altogether. It becomes absurd.
A friend of Conor White-Sullivan (Roam's creator) propped up his own take on how to do a notetaking system that does support edges, and then he went a step further and opened it for everyone to edit, so it's just a single shared graph:
<https://github.com/w2g/w2g>
Mek works at the Internet Archive, and it clearly follows the same spirit of "we'll operate the service, feel free to bring your own frontend if you don't like ours". I wasn't happy with the way that one at graph.global tries to subvert/duplicate native browser features, so I put up a minimal "client" for browsing existing nodes that feels similar to the default one, sans annoyances on those specific axes:
<https://graph.5apps.com/LP/streamline>
I never got around to allowing editing, unfortunately. You'll have to use the default frontend for that (annoying, since it's buggy) or write a client of your own.
The key issue I see with the graph.global model is that you have to use triples. I've found that this results in big hurdles for throughput—i.e., the opposite of notational velocity. The ideal thing would probably be to allow a Roam-like system where you can start out by simply linking two related nodes, and then fill the edge details after the fact. You could sort of approximate this with w2g as it stands by just using a generic is-related-to connector and then reify the relation. This does mean you would lose the ability to query by relation unless you add further attributes or went back and edited the original connector to replace it with something more appropriate before reification. Stopping in your tracks to find the appropriate connector is something I found to have lots of overhead.