I've found that maintaining a proper to-do list consistently boosts my productivity. The challenge, however, is finding task management software that fits with my workflow. I've tried several web solutions—including Remember the Milk (RTM) and a self-hosted Tracks setup—but the problem with browser-based to-do lists is that I tend to ignore what's not immediately visible on my desktop. Fortunately, there are several reasonably good open source to-do list tools for Linux.

I recently started using Getting Things GNOME (GTG), an organizer for the GNOME desktop environment that provides a robust feature set and a relatively high level of usability. Although it's still at an early stage of development and has some rough edges, it meets my needs better than any of the other to-do list programs that I've tested. It has supported for nested substasks, tagging, and task notes.

The GTG user interface provides several convenience features that I find particularly advantageous. It has a quick-add entry box which allows users to create new tasks on the fly without having to input any extraneous data. Users can optionally specify tags for the task directly in the quick-add box alongside the task title. Another nice user interface feature that I like is the Work View, which will give you a flattened and filtered view of your task list with immediate action items.

GTG is written in the Python programming language, which makes it easy to modify and extend. I've added several additional features to it myself, including a D-Bus interprocess communication interface which the GTG developers recently merged. Using D-Bus, I've been able to tightly integrate GTG into my article management workflow. For example, I wrote a script that allows me to add new tasks directly from Vim, my favorite text editor.

GTG has a modular backend system that will eventually make it possible for the program to store its data in web-based services such as RTM. At the present time, however, the only backend that is officially supported by the program's developers is one that stores tasks in flat XML files on the filesystem. Using GTG's APIs, I implemented my own experimental backend that stores the tasks in a CouchDB database. I'm hoping to use CouchDB's replication features to keep my tasks synchronized between computers.

The only major downside of GTG is that I haven't quite found a way to integrate it with the Evolution messaging client, which I use for e-mail. Evolution has its own built-in to-do list system that is cumbersome and less feature-packed than GTG's, but has one really nice feature--it lets users seamlessly convert an e-mail into a task item. I'd like to be able to do that, but push the generated task into GTG instead of Evolution's built-in to-do system.

With that goal, I started coding an Evolution plugin in C# that will take advantage of my GTG D-Bus interface. I ran into a snag, however, as I have not been able to get the NDesk D-Bus library to work properly in an Evolution plugin (but it works fine in a standalone program). I've posted some preliminary test code. If anybody knows what I'm doing wrong, I'd appreciate some tips.

Other task management tools

GTG mostly works great for me, but it might not meet everyone's needs. There are plenty of other options for users who have different requirements. Another good choice for GNOME users is Tasque, a lightweight to-do list program that integrates well with RTM and has a highly streamlined user interface. Originally created during a Novell Hack Week, Tasque has become quite popular and it shipped by default as part of the GNOME environment in OpenSUSE 11.1.

For KDE users, the top-notch task management tool is KOrganizer. It can be used standalone or as part of Kontact, the KDE messaging suite. KOrganizer has a very rich feature set, including support for subtasks, calendaring integration, task progress, and alarms notifications. It stores its data in Akonadi, KDE's unified PIM storage service. There is a simple to-do list widget that integrates with KOrganizer and will make it easy for users to see their pending tasks directly on their desktop.

KDE users who want RTM support might want to keep an eye on the RTM Plasmoid, which is still under development. There is also a Plasmoid that works right now which is based on the RTM Google Gadget.