Taskwarrior - console task list manager

In my quest to find a good distributed issue tracking system I ran into taskwarrior. I have now been test driving it for a while, so I figured I might as well write down my thoughts on it.

Despite my speculations in 2008, it seems distributed issue tracking projects still have not made it into the mainstream. Which leaves me wondering why, because there still seems to be interest in the community.

Taskwarrior, however, does not concern itself with DVCS at all. It is simply a console replacement for todo.txt. After seeing its first release almost five years ago in 2008-06-03, it has been under stable development and is currently at version 2.2.0. So it really is a good, maintained choice for a simple task tracker. Unlike most of the distributed issue trackers, which have all but died after severely stagnating.

Pros

So, what's best about Taskwarrior? Simplicity, I would say. Unlike projects like Ditz, that prompt you for several lines and are cumbersome to use, taskwarrior usage mostly consists of intuitive oneliners that you can quickly write.

task add +blog write taskwarrior review

How much easier could it get? I could go on and list plenty of example commands, but that would be waste of time.

Because the second great thing about taskwarrior are the good tutorials (part 1, part 2). After skimming the pages, you get a pretty good idea of what taskwarrior is capable, without having to install anything.

How to use it with separate projects

This is a point I struggled with when I started using taskwarrior. If I want to track tasks sepately for a single software project of mine, how do I do that? By default, taskwarrior is geared towards one task repository in \~/task.

There are two options. First one is to modify \~/.taskrc and put the following in it:

data.location=.task

Downside is that you need to run taskwarrior from a directory that contains the .task repository.

Second option is to use an alias like:

task rc.data.location:/path/to/.task

Personally I think taskwarrior should look for first directory in the hierarchy that contains .task, similarly to how git does.

Database format

Taskwarrior saves its data in three files: completed.data, pending.data and undo.data.

$ cat .task/completed.data  
[description:"dummy task" end:"1370083020" entry:"1370083006"
modified:"1370083020" status:"completed"
uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
$ cat .task/pending.data  
[description:"data format demo for blog" entry:"1370082974"
status:"pending" tags:"taskwarrior"
uuid:"d274a9ac-b456-4f2c-83bc-8f560d6ad73f"]  
$ cat .task/undo.data  
time 1370082974  
new [description:"data format demo for blog" entry:"1370082974"
status:"pending" tags:"taskwarrior"
uuid:"d274a9ac-b456-4f2c-83bc-8f560d6ad73f"]  
---  
time 1370083006  
new [description:"dummy changes" entry:"1370083006" status:"pending"
uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
---  
time 1370083016  
old [description:"dummy changes" entry:"1370083006" status:"pending"
uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
new [description:"dummy task" entry:"1370083006" modified:"1370083016"
status:"pending" uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
---  
time 1370083020  
old [description:"dummy task" entry:"1370083006" modified:"1370083016"
status:"pending" uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
new [description:"dummy task" end:"1370083020" entry:"1370083006"
modified:"1370083020" status:"completed"
uuid:"d50d0a3c-2843-4da7-91ff-9d2dd313b19d"]  
---

As can be seen above, the open tasks are in pending, finished ones in completed, and historical data of changes is in undo.

Export formats

Import/export is supported in TXT, CSV and YAML formats.

Conclusions

Taskwarrior is a nice todo.txt replacement for console. Running "task <id> done" and seeing your tasks disappear off the list is actually satisfactory, so taskwarrior might actually boost your productivity instead of drowning it into issue management. I recommend checking out the tutorials, and deciding whether it's the right tool for you based on those.