TextMate GTD Bundle

As of 25 AUG 2006

Introduction

The TextMate GTD bundle is yet another attempt at creating the perfect To Do List.  The main concept in the development of the bundle is "plan in projects, execute in context."  What this means is that I like to think about what I have to do by focusing on one project at a time, but I may do a bunch of things from different projects, depending on the context.

Overview

A quick overview of the terms may help.  First, a Project is a collection of related tasks.  It may be somewhat focused, e.g., "build a bookcase," or it may be a more general grouping, like "things to do in the yard."  Next, a Task is a discrete action.  For example, a task for building a bookshelf would be "measure the area where I want the shelf," or "buy the materials for the shelf."  Strict adherents to David Allen's Getting Things Done may want more detail, like "go to the hardware store" and "buy nails" as separate tasks, but I don't always feel that I need to document minute steps of a project.  The final concept for the GTD bundle is Context.  Context is where or how a task is accomplished.  Again, some people like specific "office computer" and "home computer" tasks, but I tend to aggregate them, where possible.

Now a screenshot:



This is my current setup.  All of the files are part of a TextMate project (not to be confused with a GTD project).  You'll notice that each GTD project is a seprate file, with a .gtd extension.  Still looking at the list of files, notice that the top file is called "contexts.gtd;" this is a special file for use within the bundle.  I'll explain it in more detail later.
Within the main window, you can see the various tasks assosciated with building a bookshelf.  The first word in each line, in ALL CAPS, is the context.  A lot (most?) GTD folks like to see an ampersand (@) at the front of a context.  However, I don't feel the need - I know its a context, so why bother with the extra character?  

The part that makes this bundle usefull is how it groups tasks by context.  Here is a screenshot of the list:

 

See how it groups tasks from different projects?  If you think that's a cool idea, keep reading!

Setting up the GTD Bundle

The latest version of the GTD bundle can always be found at the textmate repository.  Additionally, you'll need two files, a contexts file and an exclusions file.  These files need to go into a folder where you plan to place all of your .gtd files.  I keep mine in ~/Documents/ToDo.

Basically, the contexts.gtd file is a list of contexts, as described above.  There are several data elements for each file, a couple of which I no longer use, but keep so that I don't break the system.  The big things to get right are the context (first cell), the shortcut key (second cell) and the context string (third element).  

The exclusions.gtd file is a list of gtd files that you don't want to see listed in the rollup of tasks.  Why?  Well, it allows me to create project files that I can hide until I want to deal with them.  For example, I created a ookshelf.gtd file that lists all of the tasks assosciated with building shelves in my garage.  However, I'm not ready for that project yet, so I hide it from my rollup.  I've tried to make the GTD bundle as customizable as posssible, so while you must have the excluded.gtd file, you are free to not use it.  

Using the GTD Bundle

Now that you have downloaded the bundle and the supporting files, you are ready to jump in!  First, create a new project file in your ToDo folder (or whatever you call it).  Then begin adding tasks by entering a shortcut and hitting the "Enter" key - not "Return."  This should replace the shortcut with the corresponding context string from contexts.gtd.  Then tab to the data field(s) for that task and hit return to finish entering the task.

Contexts are great, but there is also a status component of the gtd list in the GTD bundle.  The normal status is how the task is created.  The two modified statuses are "WAIT" and "DONE."  To change the status of a task to "WAIT" type "w" and then the tab key anywhere on the tasks line (just make sure it is either the first character or there is a pace in from of the "w").  Then, when you want to "unwait" the task, do the same thing with "u".  When a task is done, mark it as "DONE" using "d" and the tab key.

Like I said in the beginning, my objective is to plan in project, execute in context.  So, I have a couple of list views, "Active GTD List View" and "GTD List View".  The major difference between the two is that the active list does not show completed tasks, although it does show "WAIT" tasks.  Either way, the bundle creates a nice looking list of tasks, arranged by context.

One other subject area is additional list formatting.  You can sort all of the tasks in a project by context by pressing F5.  I personally don't like this, because my projects are generally built in a rough sequence.  I have to look up a phone number before I can call it, for example.  So, the feature is there, but I don't really use it.  There are also a couple of cleanup commands.  Cleanup (CTRL-Shift-C) moves all of the "DONE" tasks to the bottom of a project list.  Remove (CTRL-ALT-Shift-C) does what it says; it removes completed tasks.

The Future of the GTD Bundle

The GTD Bundle is an ongoing pet project for me.  It is getting pretty close to where I want it, but there are a few little things that I would like to do.  I want to be able to print to 3x5 cards.  There are other smaller tweaks that I may do.  At this point, user feedback is a big driver.  If you try the GTD Bundle and like it, please let me know what works and what doesn't work for you.  I'm not promising anything, but I can try (and I'd be happpy to have others add their concepts).  Happy GTD'ing!