kanban-warrior sees its first birth!

In a previous post I described how you can implement a Kanban board with Task Warrior.
To make life a bit easier when using the flow, especially moving between the stages, I made a wrapper script around Task Warrior, which I called kanban-warrior
It accepts simple commands (in the style of Task Warrior ๐Ÿ™‚ ), to add and move around tasks in the different stages. It also gives an error message when you try to move a task to the wrong stage. It can also generate reports of the different stages.
Since kanban-warrior provides just some convenient shortcuts to implement the flow (if you look at the code, you will see that it actually executes TW commands), you can just use it in combination with other TW commands (and equally fuck up things ๐Ÿ™‚ )

I released version 1.0 and you can get it here.
It is one of my first projects in Python, so forgive me if the coding style is not according to Python standards.
Please contact me if you have comments, encounter bugs, have suggestions for new features, or even if you want to contribute.

A basic usage example

Add a task to the backlog

./kanban-warrior addtobacklog "Starship:propulsion" "Add static warpfield converter"
Created task 3.
The project 'Starship:propulsion' has changed.  Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining)

Display the backlog

./kanban-warrior.py list backlog Starship
ID Project                  Pri Added                 Started Due Recur Countdown Age Deps  Tags     Description                  
 3 Starship:propulsion   -  14-3-2013 20:59                 -                              2m           backlog           Add static warpfield converter                                                                                                                                                        
1 task

Move a task from the backlog to the Work In Progress Queue and start it immediately

./kanban-warrior start 3
Loading task list..

Modifying task 3 'Add static warpfield converter'.
Modified 1 task.
Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining).

Starting task 3 'Add static warpfield converter'.
Started 1 task.
Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining).

Set a task on hold

 ./kanban-warrior.py hold 3 "Fucked up"
Loading task list..

Stopping task 3 'Add static warpfield converter'.
Stopped 1 task.
Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining).

Modifying task 3 'Add static warpfield converter'.
Modified 1 task.
Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining).

Annotating task 3 'Add static warpfield converter'.
Annotated 1 task.
Project 'Starship:propulsion' is 0% complete (1 of 1 tasks remaining).

Invalid move

./kanban-warrior.py finish 3
Loading task list..
Error: Task must be in progress

You can’t move a task in the ‘on hold’ stage directly to the ‘done’ stage, it has to go through the ‘in progress’ stage first

Note: The ‘3’ in the commands above is the TW task id, which you can retrieve by just generating a TW report (either with or without kanban-warrior)
More information about the siupported commands can be found in the README file and there is also a short help screen when executing kanban-warrior -h

Kanban Warrior

Yesterday I discovered this awesome command line tool called Task Warrior. It is basically a to-do list on steroids; you can define tasks, group them into projects, generate reports etc. etc. (see the website for more information). When I was fiddling around with the program, the thought occurred to me (since I use mostly Scrum+Kanban methodologies in my work projects): Can Task Warrior be used to implement a Kanban board? (for more information about the Kanban methodology see here).

After some thought and browsing through the Task Warrior forum about this topicย with some very good ideas, i’d come up with my own workflow. It is actually based on the solution Nikola Petrov posted in the forum. Note that there is no checking on constraints (max WIP items, illegal moves between columns, etc.), so it’s possible to mess up things, that is all up to you. Then again, when using an “analog” whiteboard you can also do these funky things.

Explanation of stages

  • Backlog: Work items defined to be done in this period/sprint/whatever
  • In progress: A queue of work items that YOU are currently working on. See it as your personal backlog. This should be limited to maybe 1 or 2 items (but that is a matter of convention. Can contain active items, i.e. the things you are really working on at this very moment
  • Done: Work items that are done
  • On hold: Work items that can’t be worked on due to an external cause

You can see an example and screenshots below. I used the terminal application found in Xubuntu and for each stage (Backlog, In progress, Done, On Hold) I defined a tab. I use the tab Control for administration, i.e. adding & modifyng tasks.

Add some tasks to the backlog:

task add project:"Starship.Propulsion" +backlog "Implement subspace distortion detector"
Created task 1
The project 'Starship.Propulsion' has changed.  Project 'Starship.Propulsion' is 0% complete (1 of 1 tasks remaining).

task add project:"Starship.Propulsion" +backlog "Implement warp coil heater"
Created task 2
The project 'Starship.Propulsion' has changed.  Project 'Starship.Propulsion' is 0% complete (2 of 2 tasks remaining).

task add project:"Starship.Propulsion" +backlog "Implement warp containment field modulator"
Created task 3
The project 'Starship.Propulsion' has changed.  Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

task add project:"Starship.Defense" +backlog "Implement tachyon beam detector"
Created task 4
The project 'Starship.Defense' has changed.  Project 'Starship.Defense is 0% complete (1 of 1 tasks remaining).

task add project:"Starship.Weapons" +backlog "Improve phaser array"
Created task 5
The project 'Starship.Weapons' has changed.  Project 'Starship.Weapons is 0% complete (1 of 1 tasks remaining).

Moving items from the backlog to the ‘In progress” queue

task 1-3,5 modify -backlog +inprogress
Modifying task 1 'Implement subspace distortion detector'.
Modifying task 2 'Implement warp coil heater'.
Modifying task 3 'Implement warp containment field modulator'.
Modifying task 5 'Improve phaser array'.
Modified 4 tasks.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

(Re)start working on items in the In progress queue

task 1,5 start
Starting task 1 'Implement subspace distortion detector'.
Starting task 5 'Improve phaser arrayr'.
Started 2 tasks
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).
Project 'Starship.Weapons' is 0% complete (1 of 1 tasks remaining).

Stop working on an item (but it’s not finished yet)

task 1 stop
Stopping task 1 'Implement subspace distortion detector'.
Stopped 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

Start working on an item, but then the item is put on hold for some reason

task 3 start
Starting task 3 'Implement warp containment field modulator'.
Started 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

task 3 stop
Stopping task 3 ''Implement warp containment field modulator''.
Stopped 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

task 3 modify -inprogress +onhold
Modifying task 3 'Implement warp containment field modulator'.
Modified 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

task 3 annotate "We can't set the correct delta-factor compensation"

Putting an “On hold” item back to the “In progress” queue and start working on it again

task 3 modify -onhold +inprogress
Modifying task 3 'Implement warp containment field modulator'.
Modified 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

task 3 start
Starting task 3 'Implement warp containment field modulator'.
Started 1 task.
Project 'Starship.Propulsion' is 0% complete (3 of 3 tasks remaining).

Setting items to Done

task 1,3 modify -inprogress
task 1,3 done
Completed task 1 'Implement subspace distortion detector'.
Completed task 3 'Implement warp containment field modulator'.
Completed 2 tasks.
The project 'Starship.Propulsion' has changed.  Project 'Starship.Propulsion' is 66% complete (1 of 3 tasks remaining).

Notes:

I used the ‘subproject’ feature to indicate my user stories (so ‘Starship’ is the name of the project and ‘Propulsion’ is the name of the story), so that I can relate tasks to a particular story.

Screenshots

[nggallery id=1]