Oh, epic! While I do agree that most things that are modeled as yes are conceptually actually graphs, maybe my standards are lower/I just use worse software - I'd be very happy to get more trees. My typical rant topic is "just give me a damn tree". The worst offenders regarding this I can think of are note apps with their weird "notebook", "chapter","page" concepts rather than just letting me choose the depth of nesting I need.
> I can think of are note apps with their weird "notebook", "chapter","page" concepts rather than just letting me choose the depth of nesting I need.
Exactly! And then you end up using "outliner" software for this, and then people are surprised that you need rich text capabilities in it. In reality, what's needed is to combine both, to get a note-taking app with arbitrary nesting levels.
Unfortunately the project is currently paused since i can't figure out how to make it work financially (you can still use it though). The space is really crowded and most people don't really think about dependencies, so it's quite a hard sell.
I might open-source the project and continue with it in the near future but I'll need some validation that the tool is useful before I commit to that. So if you do like it, I'd love to have a chat :)
It's a generic note storage (with a DAG based model) that's very extensible and comes with a demo task manager implementation: https://github.com/zadam/trilium/wiki/Task-manager
Skimming through their Wiki, it looks like a tree-oriented outliner with a link graph - i.e. a similar model to what Roam, Obsidian, Logseq or org-mode (especially when paired with org-roam) offers.
This is as close as I've seen graphs at the UI level to hit mainstream, and the extreme hype generated around this class of tools (and Zettelkasten) when Roam showed up was interesting to watch - people reacted to this as if it was pure magic.
I did wonder that myself. But having tried implementing, I'd wager that deep many-to-many parent-child relationships are not directly visible more often is because no one has figured out good paradigms [1] to surface the functionality in a way that users would want to use most of the time (witness MS Project) versus the alternative tags, saved search, etc approaches.
[1] It's a fairly chunky challenge. Consider for example, what happens, and how is it presented to the user during the simple operation of removing an item. What happens when it has multiple parents? What about if it also has child dependencies? What about if some of those children have different ancestors? And it must be undoable and also needs to be usable on the limited screen estate of a mobile phone? ...
I suspect that might be a big part of the reason. I believe [0] that one big change that happens when you "upgrade" from a tree to a DAG is that you lose the ability to visualize your model in a compact and direct plaintext form
Sequences you can print an item per line, or separate by commas. Trees you can visualize with indentation, possibly decorating with some form of arrows. But DAGs seem to require you either use indirect references[1] (or duplication, which is just a more verbose and limited form of references), or give up and start drawing arrows and boxes. There's a qualitative jump in difficulty here - you (or rather, the software) needs to start thinking about layout, which is pretty much a non-issue with trees.
The biggest problems are with the evolution of the data structure. Trees and sequences don't "jump around" when you add or remove single nodes - edits cause, at worst small local rearrangement, and the rest of the tree is shifted to make/take space. DAGs are the first stage in this "from sequences to graphs" progression at which any single edit could force you to re-layout the entire visualization to keep it readable.
I have one nit though:
> And it (...) also needs to be usable on the limited screen estate of a mobile phone?
This is true now, but it wasn't true just a few years ago. Where are all the products from the last decade, that didn't have the "design for smartphones" constraint?
--
[0] - I strongly suspect this to be a mathematical fact, but I haven't encountered a proof of it.
[1] - If you want to keep parents next to their children, you're almost always forced to start doing things like:
#1=Parent1 ----v
Parent2 ---> Child1
Parent3 ---> Child2
#1# --^
... which kills readability, as now the reader has to keep a cache of those labels and dereference pointers in their head. If, instead of references (like #1#) you just duplicate the node (e.g. write "Parent1" again), the reader still has to keep a mental map of which nodes are represented multiple times in the text, and which are just similarly named.
From the other end, I know MS Project has pretty much all the things you need, but has questionable UX, is quite buggy (I've personally managed to brick it after running auto-scheduling on a project with ~20 tasks...). There probably exist tools with the correct representation, perhaps even better UX - but I've never heard of any. Neither did a project manager I know, in a decades-old company with well established "classical engineering" culture, which includes all the PMBOK-related concept space.
And if I'm doing my semi-regular project management rant once again (a subset of more general ranting that, on Mastodon, I started to tag as #ItsAGraph, #NotATree), let me pile on some extra wishlist items: counterfactual modelling, conditionals, probabilities. That is, expressing the idea that there are alternative strategies to pursue, and which one to take depends on information available only partway through the project.