Last week I talked about how all existing TaskWarrior wrappers were not going to satisfy the requirements for task_time, so I decided to roll my own Ruby wrapper rtasklib and started working on the JSON to domain object marshalling and vice versa. I realized that I was reinventing the wheel a bit with the domain objects and to some extent with the data type coercions (though obviously some custom coercions will be necessary).
Last week I talked about picking an appropriate TaskWarrior wrapper for my task_time project. A rundown of the options are taskw (Python, GPL, low on documentation, durations not implemented yet), tasklib (Python, BSD, good documentation, durations not implemented, does not read in users .taskrc), and taskwarrior (Ruby, MIT, just does JSON marshalling/unmarshalling). In the end I decided none of these were actually going to cut it, since none implemented duration features, so my choices were to either Fork and implement durations and whatever other features were needed or to roll my own. In the end I really would rather use Ruby for this so I decided that it would be good to write the wrapper from scratch, while taking cues from each of the other implementations. I named the repo rtasklib in following with the ruby convention of naming wrappers with lib and either a leading r or trailing _ruby (dashes imply a subclass and are only used when your're gem extends an existing gem not an external program). You can find the repo at dropofwill/rtasklib and the task_time repo at dropofwill/task_time.
This is a plan for a project that will act as a plugin for the application Taskwarrior that allows the users to use task to keep track of their time involved with tasks. I chose task_time as the name because the original program is run with the task command and in Ruby underscores are used to denote spaces (dashes imply some sort of class hierarchy).