The central problem, as I see it, is this: projects and tasks form a graph. A task or subproject might be shared between multiple projects. Next Actions are a subset of TODOs. They are sink nodes in graph theoretic terms.
I think tracking these dependencies would be super helpful for me in prioritizing where my time should go. For example, cleaning up the garage might not seem like a high priority – except it that it blocks a home improvement project that needs to be completed by a certain date.
Next Actions and Projects
I like how org-gtd
automates tracking of next actions and correctly shows only the unblocked tasks. But its notion of task dependencies is linear, and it’s not clear that tasks can depend on other tasks across projects, or if projects can have subprojects.
This is what drew me to org-roam
. I like org-roam
for the way it assists linking tasks and exposing the underlying graph structure in a performant way. I want to build a GTD workflow on top of this, one way or another.
It’s not super clear to me how org-roam
and org-gtd
can be used with each other in any kind of obvious way. But I am studying both code-bases to see what I can learn from them. I have many years of experience in software development, and many years of using emacs as my primary editor, but only a passing familiarity with emacs lisp and emacs internals.
Has anyone gone down this path?
What I’m Trying to Get To
I’m trying to blend both approaches. Something with high-level automation around the GTD workflow, as org-gtd
does, but which models task-management as a graph of task nodes. I can see org-roam
as a useful dependency here.
In a pure implementation, every task would be a proper node with an ID. From this perspective, a project is simply a task with a dependency on at least one active subtask. But I suppose it could be useful to explicitly distinguish a Project
from a Task
, from an Area of Interest
, from a Horizon
, and so on.
I would settle for something slightly kludgier in the name of code re-use and getting up and running quickly. But the the task sharing / cross-task dependencies are key, for when a task in one project is blocked by completion of another task in another project, which seems to come up all the time for me.