October 23, 2006

Make time for GnoTime

Author: Joe Barr

GnoTime, the GNOME Time Tracker, is a lightweight task/time tracking tool. It's easy to use and not overloaded with project management features, but it suffers from weak reporting tools.GnoTime is free software, licensed under the GPL, and it runs on several flavors of Unix, including Linux and Mac OS X. Several major distributions -- Debian, Red Hat/Fedora, SUSE, and Fink among them -- include it in their distribution.

At its heart, GnoTime is an electronic stopwatch. Select a task and click a clock, and seconds start piling up in a heap reserved for that task. But it's a smart stopwatch, because it cuts itself off after periods of keyboard/mouse inactivity. Still, in the few days I've been playing with it, I've often found it easier to fill in the actual times manually, after the fact, rather than having to remember to start and stop the timer as many times as I might have to do in an interrupt-driven workday.

I started using GnoTime in order to document how much time I spent working on specific story assignments. I then decided that simply tracking by story would not granular enough, so I broke each assignment down into stages: research, writing, and revision. GnoTime lets you do that quickly and easily.

Adding a primary task is as easy as clicking on New on the GnoTime toolbar, entering a title for the project, and clicking OK. Secondary tasks are just as easy to enter, but require an extra step to make them subordinate to the primary. After you create secondary tasks, you must select each one and drag it over the primary task. When the context-sensitive arrow which appears when dragging a task points down instead of to the left, drop the selected task. It then appears beneath the original task.

While I found it easier to fill in the time entries manually than to use the built-in timer, the first time segment for each task needs to be created using the timer. As you can see in Figure 1, the task being timed shows up in lime-green in the GnoTime interface. When you click the timer again, the clock is stopped for that task and it returns to its normal color.

Once you have created the initial time-segment for a task, it's easy to add new ones or modify start/stop times manually. Simply select the task from the UI, then click on Activity Journal. In the window that appears, you can click on the date, start time, or end time of a displayed time segment and bring up a menu that allows you to add, edit, or delete a time segment.

Click to enlarge

In addition to remembering your start and stop times, you can use GnoTime to record a number of other items relating to each project you're tracking:

  • Project description (in addition to title)
  • Notes about the project
  • Billing rates (regular, overtime, double-time, flat fee)
  • Urgency
  • Importance
  • Status
  • Planned start, stop, completion dates
  • Hours to finish
  • Percent complete

You can set any of those properties by selecting the project in the UI, clicking, and then clicking on the appropriate tab.

All that is fine and dandy -- you can tell GnoTime a lot about what you're doing. The question is, what can GnoTime tell you about what you've told it?

Is the glass half-full, or are you just lazy?

Reporting is the great weakness of GnoTime. The utility comes with several canned reports, which appear as windows on your desktop, but none of them offers something as basic as a detailed listing of your work week, showing total hours clocked per task or project, and totals for the week. The only report I find useful from those listed on the Reports menu is the Daily report, shown in Figure 2.

Luckily, there is a way to get the reports you want or need: write them yourself. The reports menu contains a Primer on writing them in Scheme, a dialog for adding new reports to the menu, and a way to edit existing reports.

Scheme doesn't look like a difficult language; if you can write PHP code or bash scripts, you'll probably have no problem learning it well enough to whip up a couple of reports. You'll want to have a basic understanding of HTML as well, since all the existing reports are written as HTML.

If you like to code in another language, GnoTime keeps its data in .gnome2/gnotime.d/gnotime-data.xml. You can always simply read the raw data (see Figure 3) and create your own reports using Perl, Ruby, bash, Cobol, C, C++, Java, BASIC, or whatever poison you prefer. I don't have the time or the inclination to pursue the custom report option, regardless of language, but perhaps others do.

An even better solution than simply writing your own reports is to write them for everyone by contributing them to the project when you're done. You can submit bugs, feature requests, and patches here, on the SourceForge project page.

GnoTime could be a great little time-saver if not for the lack of adequate reporting. I like the interface and the ease of use. If only it was as easy to get information from it as it is to record it, it would be a top-notch application.


  • Management
Click Here!