Alternatives

Before diving in and spitting out this package I looked at the alternatives below. If I have missed something please drop me a mail.

It isn’t meant to be unbiased, and you should try the packages out for yourself. I keep it here mainly as a reference for myself, and maybe to help out people who are already familiar with one of the entries below.

Todo

Check for recent additions to the arena.

arbtt

The “Automatic Rule-Based Time Tracker”, where automatic could equally be awesome. You run the daemon and it records yours tasks automatically. The rules to configure switching are easy to write, and depending on your needs may well catch all your task switching.

It only falls down when you need to record tasks which aren’t 100% about whacking away at the keyboard in a window, so if your time tracking needs are entirely screen based I recommend you try it out.

gtimelog

gtimelog is an interesting tool, and ticks many of the boxes for me. The ideas are quite well thought out, and the interface is simple to use. I’m sure it’s great for people with strictly structured working days, but that definitely isn’t me.

As a side note, when we were playing with it at the office several of my co-workers stumbled across various bugs that dogged its usage. Unfortunately, the project is developed with bzr and launchpad, therefore it was simply abandoned in favour of trying to fix it. Most moved on to org-mode, and some to rdial.

hammertime

hammertime is a great tool for tracking time in a simple manner, however it has a couple of drawbacks for my use case.

First, it stores data in a git branch which means all projects need their own git repository. This works surprisingly well for the most part, but makes fetching all the stored data across multiple projects quite cumbersome.

The more significant problem for me is that the implementation works by stashing changes and switching branches, which will cause annoying rebuilds every time you call git time if you’re using a time based build tool like make. However, this could fixed by using git hash-object directly for storing updates and git cat-file for reading data, should anyone be interested in working on it.

I still happily recommend it to people who are simply trying to log the time spent working on small projects.

hamster-time-tracker

ProjectHamster and its associated clients are a neat solution to time tracking. The gnome applet and command line interface are particularly polished. The hamster-cli in particular is extremely nice to use, and the built-in DWIM date handling provides some great shortcuts for adding missing entries.

The data backend is a simple SQLite database, and is therefore very amenable to external processing. It provides tagging on top of the fields provided by rdial, and that alone may make it more useful to you.

ktimetracker

Works well, but isn’t available on most of the platforms I care about. If KDE is available everywhere you care about, I’d heartily recommend it.

org-mode

org-mode includes fantastic time tracking support, and some excellent reporting mechanisms. You can interleave your time tracking with other data, maintain hierarchies of projects with their own time tracking data and take advantage of all the other features org-mode has to offer.

If I had a copy of emacs available everywhere I wanted to log time data I wouldn’t even consider using anything else. And if you use emacs then you shouldn’t either!

taskwarrior

taskwarrior has some support for time tracking, and if you only need to maintain a log of the time you spend on previously defined tasks it is probably enough to get by.

I still take advantage of its functionality now, in combination with rdial, so that I can see when I started working toward a task in my to-do list.

timewarrior

From the same stable as taskwarrior, timewarrior is an excellent solution for time tracking. It doesn’t support close messages, but it does have amazing tag support and some really useful query options.

There are import and export scripts in the extra subdirectory, and I truly recommend trying timewarrior out.

The only possible drawback is its speed, as with large numbers of records its startup becomes very slow. Exporting my eight year rdial database results in three second pauses on each timew run.