Hacker News new | ask | show | jobs
by TeMPOraL 2532 days ago
No, I'm not aware of better tools. I'm beginning to feel like I should start prototyping one.

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.

2 comments

Lately I've started using DrawExpress mobile app. It fits your description. A bit finicky, but I've adapted to its quirks. Swiping keyboard on phones is a quick way to enter a bit of text on node, and it fits well with gesture-based interface. The only problem, I find myself spending too much time manually arranging node positions.

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.

I've also been thinking about building a tool like this for a really long time. I would be interested in collaborating, so I'll send you an email!
I've described a tool I'm currently designing in the sibling thread. I'm planning on building it in re-frame, which is basically React + Redux made for ClojureScript. I've learned Clojure just for this project, I could not make it work with any other language I knew. I'm currently learning Datomic because it might be the ideal way of capturing, growing and querying this knowledge graph.

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 think Connor White Sullivan is was working on something like this as of last Conj https://twitter.com/conaw http://roamresearch.com/ I also know Jeremy Taylor (who works on Crux) was working on a DataScript based org mode like graph tool
Hi, that sounds awesome! I'm also very interested in learning Clojure/ClojureScript, and re-frame sounds great. I think it would be important to choose a functional language for this project. I've also been thinking about using Haskell, and writing the core engine in Idris. (I also recently had an idea for an experiment after reading about Nix expressions, and how I might be able to use some of these underlying concepts and algorithms.)

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!

As a shameless plug: I created a chat room on my own graph-based collaboration platform you can join via this link: https://app.woost.space/#page=5W4B6pA5yVDprYMkRyLuE1

I hope a bunch of interested people manage to organize and build something great!