David Allen’s Getting Things Done struck a chord with compulsive organizers as well as people struggling to bring order to their lives. The book was written at a time when Day Planners, paper and index cards were still common business tools. However, its principles haven’t become obsolete. Just google “GTD” and you’ll find many products and services claiming to implement it.

For me, the value of Allen’s system – it’s more method than a strict methodology – lies in a few common sense concepts to put you in control of your agenda:

  • Getting your task list out of your head and into an external repository. You mind is then clear for productive thinking instead of worrying.
  • Handling new incoming traffic – usually e-mail – by making a spot decision. Requests that can be handled in a couple of minutes are answered immediately. Everything else goes into a queue. Postponing time-consuming requests to later in the day keeps you from being distracted while satisfying all but your most impatient contacts.
  • Focusing on next actions instead of trying to prioritize all the tasks as 1-2-3 or High-Medium-Low. For example, if you want to re-model your house, you could exhaust yourself just thinking about all the possible pre-planning steps. But if you pick just one of the initial steps you know you’ll need, e.g. “Go to Home Depot and look at carpet samples”, you’ll be on your way.
  • Regular review. Deferring work doesn’t mean forgetting about it. Once a week or so, Allen suggests you go through your projects and decide what you’ll work on now versus later. It’s OK to punt stuff and sketch dream tasks that you may never get around to doing, if you set aside time once in a while to reassess them.

Now, I’m not a GTD zealot, but I’ve looked for software (SaaS or desktop install) that fulfills these goals. Very few products come close. Most are just glorified task lists where your list of to-do’s quickly grows beyond your ability to manage it.

Tracks is a Ruby on Rails application that takes the GTD concepts seriously. If you’re not already running Rails, you can install a pre-build environment like the Bitnami Rubystack.

What makes Tracks better than most to-do lists? It helps you narrow your focus by hiding what’s irrelevant at the moment. One illustration: any task can be assigned to a Context as well as a Project. A Context is the general location or venue where you’ll perform it – e.g. Work or Home or, perhaps more specifically, Errand or Computer. Your to-do list is grouped by Contexts, so you don’t waste time scanning tasks at times when you can’t do anything about them. To further reduce the size of your lists, you can designate Projects as Hidden or Completed.

Tracks groups tasks by Context

Following the GTD emphasis on Next Actions, Tracks allows you to “star” a task to make it a priority. You can quickly filter by only starred tasks to get a list of what you want to work on right now. I find that I don’t miss the ability to set multiple priority levels, because I usually have more than enough “level 1” tasks to work on at any moment. This constraint is also consistent with the spirit of GTD. By not providing fine-grained prioritization or progress indicators (a task is either done or undone, not X% complete), the application helps procrastinators avoid the unproductive exercise of constantly re-ordering the backlog, and encourages wishful planners to break complex tasks into smaller steps. When a project has no starred tasks, it’s time to pick the next activity.

Like any competent task manager, Tracks lets you set due dates and manage items with recurring dates. In keeping with its goal of removing clutter, Tracks also allows you to define when to show tasks. For instance, if you need to return a library book in 3 weeks or take your car for an oil change, you probably don’t need to be reminded about it until a few days before it’s due. Incredibly, many task managers don’t provide a Show date.

The tracks user interface color highlights tasks due in the coming week, and tasks that have aged without being completed. The UI has Web 2.0 features like the ability to edit items without pulling up a separate data entry screen. Forms appear in inline; you can drag items within some lists to re-order them; and items disappear as “done” when you check them off.

Tracks also provides an API and RESTful tools for setting and getting its data outside of the application. Simple feeds like RSS or a text list of your tasks are built-in. It’s not difficult to write a script to download and e-mail yourself a daily to-do list. As a web app, it can also support multiple user accounts, although it has no collaboration features: all tasks are private to the owner.

Tracks uses tagging for any additional classifications you need. Say you want to filter a list of tasks that require help from your IT department. “IT” by itself is not a Project. You could add a tag called “IT” to those records and then search on the tag. In fact “starred” items are designated by these kinds of tags. Tags can be immediately added by typing them, and you can have multiple tags for any record.

What’s not so great about Tracks? The application is a little sluggish on my home server. Perhaps there’s a more optimal configuration for the web server (mongrel). It doesn’t come with many useful built-in reports. And it hasn’t added many new features in the past year, although there’s a good forum to help you solve your problems. Still, I think it sets a good model for task managers. I’m currently writing my own task list app in Python, and it will borrow a lot of ideas from Tracks.