Foreword: If you’ve just discovered dstask, I recommend the README file which contains everything you need to know!
I’ve been using taskwarrior (which I still maintain is excellent) to track what I have to do on a daily basis. It as served me well, working as a mental-offload both at work and at home. I also used it to produce a log of what I’ve been doing at work, which is useful for catchup meetings.
However, after some time using it there were a few things that I didn’t like:
Contexts apply to the task list, but not when adding new tasks. This means that it is necessary to type the context with every task add, for example task add project:backend +work +bug fix 500 internal server error.
Contexts have to be defined in the configuration, rather than on-the-fly. I tend to use many different, mostly temporary contexts so reconfiguring every time is a pain.
Synchronisation depends on running a taskserver and setting up a PKI. Whilst this works, I’d rather not have to maintain such a service and keys. I’d rather use git like I use for my blog (hugo), my passwords (password-store.org) and my notes.
The table view breaks if any task description is too long
There is no way of indicating paused tasks
There were several things I did like about taskwarrior:
Its CLI interface, and task view
It’s prioritisation, tagging and project system
The various task reports
Being able to mark tasks as active – It’s useful to record what I’m currently working on to resume after lumch or the next day
I decided to write dstask after encountering the issues. Dstask is much the same as taskwarrior, except:
Contexts are automatically applied to new tasks
Contexts don’t need to be predefined
It uses YAML files and git for data storage
There’s only one colour theme, and a few time based filters
Priorities are added by the keywords P0P1P2P3. Lower number is more urgent. There is a default, P2.
It’s written in Go, for easy cross-platform static executables
Table rendering is more stable
The open command, which looks for URLs within a task and opens them in the browser, like taskopen
Tasks which are started then stopped are marked as pause
Using git for data storage means that synchronisation, resolving merge conflicts and undo support are all implemented with little effort. Dstask’s context system means it’s easier to focus.