Introduce custom workflows as a primitive to replace TODOs

I love Logseq TODOs but they could be better. There are two nomenclatures for the same thing: TODO/DOING/DONE and LATER/NOW/DONE. Thus the app supports a single workflow. Why not allow multiple workflows (state machines) to be defined within the config.edn?

Kanban/Trello boards (e.g. workflows) can be almost anything you can imagine. Logseq already supports workflows, it’s just that it only supports a single basic one. Why not allow customizable workflows? Folks are wanting to tweak the basic TODO workflow anyway.

{
  :workflows: [
    {:name :TASK :incomplete [:TODO, :DOING] :complete [:DONE] :cancel [:CANCELED]}
    {:name :ARTICLE :incomplete [:IDEA, :DRAFTING, :EDITING, :PROOFING, :DEFERED] :complete [:PUBLISHED] :cancel [:DISCARDED]}
  ]
}

If the same term is used in multiple workflows no matter. When adding a new block using a term it will automatically assume the first workflow which uses the term. Then a keystroke allows the user to visually cycle through the workflows sharing the term to disambiguate. In that case, a hidden piece of metadata (like the collapsed block state) can track the select workflow. Hopefully shrewd users will avoid reusing terms, but it may be unavoidable at times. (All terms are stored in the marker slot of block objects.)

The incomplete and complete states allow the task to be checked off in normal fashion. It could make sense to have only a single complete state but I don’t think it would be bad to be able to cycle between different possible end states. And having the cancel category is useful for showing an aborted workflow, just as Logseq already renders CANCELED tasks differently from completed ones.

While, obviously in a state machine it is possible to define valid transitions, I’m not going there. I think that cycling to the next desired state is good enough. And keystrokes (something?) could provide a means of jumping to the complete and cancel categories.

The benefit of having custom workflows is it solves the Kanban primitive problem. There are currently Kanban plugins but they are grafted into pages. Having workflows become the primitive would allow one to toggle the current screen between outline and board views much in the same way that Microsoft Planner and ClickUp and countless other tools do. And with Logseq as frequently used for GTD as it is for PKM, it’s not a far reach to say “it belongs.”

Making this configurable means your average user might never upgrade from ordinary to-dos into varied workflows. Everything would work exactly as it already does for such users.