TaskWarrior, Taskjuggler, Planner and Well Planning Things Part 2
In part 1 I discussed at great length task management in the sense of a todo list. In this article/blog thing I want to talk about it in the context of planning. I should state from the very start I do not use Microsoft and especially not Microsoft planner/planning. Whilst I was looking for task management programs I did find some reviews implying that the resource management of MS Planning is not very good but I can not actually say I know from experience.
So where to start?
Planner
I have used planner on and off since around 2006. It is incredibly simple to setup and use for planning a project. You can define the start date and the nature of a day (work, holiday) in a custom calendar for each project not to mention different custom phases.
Then it is a simple case of populating the tasks these can be “containers” which are full of subtasks as well as populating resources. So you quickly build up a task list, a resource list and all the while you do that you also get a dynamically generated Gantt chart displaying the information.
It doesn’t however automatically schedule tasks. You can define a priority and it is suppose to sort them but that never seemed to work. You can also define a fixed work package duration and start times. You can of course setup a start when previous task completes and a whole range of alternatives e.g. starts-with-start. So with a bit of pushing and poking you can readily build your Gantt and with it also the the critical path. However this is where for me things started to go wrong. I found it really annoying that it would basically default everything to the project start date irrespective of order. More so it was a faff changing each task’s start date and if I set them to be related to the completion of a previous task then it was ok but I had to go through a menu and several mouse clicks to do that.
Once I got my task, resources and Gantt in a good shape I often found it difficult to actually get that data out and into another document without resorting to screenshots which is crazy. But this isn’t the reason I stopped using planner. What killed planner for me was resource allocation. When I sat down and said ok this machine, this bit of kit and my time are all linked to this task it would make the task 1/3 the length. Grrrh. Ok I will fix the task duration to be X days. Then it made the machine, the kit and my time utilisation 1/3. Which was wrong. There was no way to get planner to let me assign three resources to a task at 100 % utilisation without the task being 3 times longer in duration than the reality or 1/3 the duration.
So I started looking elsewhere….
Taskjuggler
I’d always avoided taskjuggler for the simple reason that I am a Gnome user and Taskjuggler in Fedora < 18 is a KDE program/application. I find it frustrating having KDE apps because, well, they want to of course install dependencies and sometimes it is just a few libs and that is fine (as in this case) other times it is art and desktop schemes and that is just not on. Anyhow I was so annoyed by the resource failure of planner I installed taskjuggler KDE dependencies and all.
This proved to be somewhat of a let down as when I fired up taskjuggler (TJ) I could not figure out what the hell to do at all. Ok I thought I will check the web but the examples made no sense and so I turned it off and began sulking.
Several days later I returned back to TJ and tried again using the example files it comes with but again I could not get my head around the process. I stop again. On the third go I picked a larger project, found a useful website, figured out that I needed to “compile” the list of code in front of me and got the default example to generate a Gantt and list of jobs. So I spent a while reading the web some more and started to modify my file making it more and more complex. It would however often fail to work with the web examples - which was annoying (I will come back to this). I went back to planner and took the xml file it saves the project out as and pasted that into TJ and began editing and fixing things so it was compatible.
About one days worth of work and learning I had a Gantt for a two year project. A very simple Gantt but one that worked. Next I needed to get the Gantt out into a nice picture. So I began trying the exports and again I was happy with the output which via a pdf I could cut and edit using GIMP into a nice little png. Not ideal but well it worked.
I then noticed a bug. Where my critical path had a dependency that ran from my container task to the next instead of the final task in the container series it would artificially extend the container task duration to finish when the dependant task was set to start. Hmmm annoying. So I posted to the google groups about this. Whilst I was posting the bug I also included what I thought was the TJ version info. But a little bit later on I realised it wasn’t at all and in fact that was the bloody KDE version info.
All the pages I had read online referred to TJ version 3 or above. But I had been using TJ 2.4.3. This was going to bite me in the ass one more time. So I decided to move to TJ 3.4.0 only to discover no Fedora rpm until 18+. Then I discovered that it was a ruby package that could be simply downloaded by typing:
gem install taskjuggler
Arrrrrrgh I had installed KDE rubbish for no reason - well so I thought. It also turns out that version 3 and version 2 of TJ are not entirely compatible with each other nor is there a GUI for 3. No problem I will use 2’s GUI - NO, NO, no I wouldn’t be doing that. Why? Well the version of 2 I had was 0.0001 of a version too old to let me use the workarounds. I pushed on regardless and quickly moved from the warm safety of the TJ 2 KDE gui to setting up Geany to treat TJ3 as a compiler and working from a set of new files exported from 2, tweaked via reading the web and now basically a CLI to TJ3 and a simple editor. Gosh this felt like the old days working with shelxl and doing refinements - bloody brilliant.
However my excitement once again began to waiver as I realised the output html files and the now massively modified TJ3 inputs would not go back into TJ2 nor could I get the Gantt picture I needed out. Also I realised that the process of “exporting” also effectively had done a freeze on the project which was not good as I was in the planning stage still. More web reading and I found some nice report templates and help on making my Gantt (remember this is for 2 years) output as a nice single picture in the html output. But how to get that into my document? It was a dynamically created picture not a simple png. Google-chrome made a complete mess of it as Google-chrome does when it comes to printing anything. Even firefox was not making me happy. Then I found an article on this issue and discussing using wkhtmltopdf and/or wkhtmltoimage. Both of which are in the Fedora repo tiny, tiny footprints - so installed. These both work amazingly well and now I have a clean work process from TJ3 input editing in Geany to TJ3 compiling via Geany or the CLI to forming a nice png via wkhtmltoimage.
And that is it nothing more to say other than with both task (taskwarrior) and TJ3 (taskjuggler) it takes a bit of time getting use to the process. Don’t be freaked out by the need to code the input files and a lack of GUI help they soon make sense and the final product is nice. I must admit I’ve used 1/100th of TJ3 actual capability the next phase comes when I get to actually convert that simple project plan into something much more meaningful.