I though about this topic a bit on numerous occasions, and I keep feeling that trees don't map well to this use case. I still think a directed graph is necessary, and likely one supporting cycles. The structure will be imposed by reality itself. Anything less than a directed graph will fail to capture causal relationships between entities.
yEd... well, I spent a lot of hours with yEd Live recently, and I have complaints :). Like, where's the ability to simply place a piece of text on a diagram as a node?! It's ironic, but it seems to me that in 2019, there still isn't a good tool implementing the simple concept of infinite, pannable, zoomable canvas for typing on it and building arbitrary directed graphs on it.
Regarding structure, I agree with you that directed graph is most powerful. But for visualization and editing I would propose shaping graph into a tree. This reshaping can be done many ways, it's like a query into a DB. Here's a quick mockup made in yEd: https://i.imgur.com/LGTNbuz.png
While directed graph is necessary for internal data representation, tree structure is a perfect fit for many specific cases: categorization; argumentation (like this HN thread); tagging/grouping; lisp s-expressions. Trees capture those things beautifully, while enabling easy navigation with arrow keys or finger swipe.
Reshaping into tree allows for some neat layouts. For example, by scaling geometry down with each child, your whole graph can fit inside predictable area, without any node overlapping. See more here: http://treevis.net/
One could add a reactive capabilities to each graph node. The node would respond to different triggers by changing it's attributes, or relations to other nodes. The graph/tree can be built step by step via triggering specific node responses (add child, delete node, connect/disconnect). Responses could also change node attributes, to bring interactivity and ability to simulate mental models.
This is what I'm working on in spare time, but these days the bread-bringing job drains my energy away :( \
Great thread, BTW.
We should join some kind of communication group to see if we are after the same thing, and to track each others progress. Maybe a new reddit group?
I've created a Discord chat group for the project I've been wanting to work on. Please feel free to join with this link: https://discord.gg/7Ca3R8
I think we might have a few people in here who are working on different ideas in the same space, so it would be great to bounce ideas off each other. A Reddit group also sounds good!
I hope a bunch of interested people manage to organize and build something great!
GraphViz will go from text to whatever tree-ish graphical representation you want, but naturally there is some time investment required, especially if you want pretty output.
A tree structure is great for it's simplicity. It maps well to most use cases I need, but not all of them. A strict tree is too limiting and cannot avoid duplication. I'd like a tool that could build a structure that is almost-a-tree would be visualized as a tree, but it would allow a special case linking between any two nodes.
A general graph lacks the necessary structure. Without the structure, the tool isn't really supporting me and I can just use the yEd graph editor. I could use some queries on the graph to shape it into tree on demand, but then I lose mind's spatial ability to navigate the graph.