>with a DAG, nesting stops being a first-class concept
This is what I was wondering about. Please correct me if am wrong. If tasks are indeed modeled using a DAG, then there is essentially no nesting, right? What we think of nesting in the traditional sense can just a bunch of small tasks with varying dependancies.
Yes and no. A DAG eliminates nesting as a concept, but you can, and probably[0] should, still reintroduce it. There is a meaningful difference between tasks that are conceptual subcomponents of another, vs. tasks that merely depend on another. This could be reflected by different labels/colors of DAG edges (e.g. :depends-on vs. :component-of), and could be appropriately visualized in GUI.
The metaphor of nesting is a solid one - tree structure does capture a good subset of thoughts about task management. So I'd start with a proper tree of subtasks, not limited by depth[1], and then add the ability to link any other task as a dependency (as long as no cycle is formed).
You could expand the types of edges[2] to allow things like "optional dependency" or "starts when dependant task starts" to model parallel work. But I'd begin with just augmenting a tree with backlinks and surfacing the graph structure. And then providing GANTT charts and PERT analysis. I really do want to have the critical path be always computed and evident to the team, as well as available slack on each task.
--
[0] - I haven't seen a tool like that nor do I have working prototypes, so I'm all playing it out in my head.
[1] - I currently have such proper tree in Org Mode - and my tasklists tend to routinely grow 3-4 levels deep.
[2] - Instead of edge types, you could use node groups. Like, have "Task 3.a.1" represented as "Start of Task 3.a.1" -> [subtasks of 3.a.1] -> "End of Task 3.a.1", but multiple edge types are likely to be much easier to work with.
This is what I was wondering about. Please correct me if am wrong. If tasks are indeed modeled using a DAG, then there is essentially no nesting, right? What we think of nesting in the traditional sense can just a bunch of small tasks with varying dependancies.