Using Emacs org-mode for GTD

A brief overview of org-mode Emacs and how it can be used to implement David Allen's Getting Things Done methodology.

[February 2009 - This article has been largely superceded by a more recent article]

Table of Contents

Getting Things Done (GTD) is a productivity system taught by the American consultant and author David Allen. He has coached many people in this system through seminars and consulting, but the most popular wasy has been his book Getting Things Done. The Art of Stress-Free Productivity published by Penguin Books. (More details can be obtained from the Amazon web site

The heart of GTD is a workflow of collecting, processing and making decisions up front about all the things you need to get done in your life. A key success factor is tracking everything in a trusted system rather than in your head. A trusted system could be paper based (notebook, a ring bound planner), Palm / PocketPC computer or a computer program such as org-mode described in this tutorial.

To Do lists are a thing of the past. In the GTD methodology, decisions are made at the time of processing all of the things in your life demanding some of your time, energy and decision making. Examples include letters, email, action items resulting from meetings or phone calls, ideas, your roles and responsibilities at home and work, and interaction with people.

Instead of making lists of things to do, two questions are asked about each item:

What is the desired outcome? What is the next physical action I can take to get closer to this outcome?

As well as defining the Next Action (often referred to as an NA), a decision is made about the context of the action. A context is where the action can take place subject to various restraints or resources required.

For example, the context of "Phone" requires having a telephone available. An "Office" context means that the action can only take place in the office, similarly, the context of "Home" is for items that can only be done in the home.

Each person's list of contexts will be different and will require some experimenting to determine a practical working set. My contexts include:

Office (I use this for phone calls to be made during business hours)

(I use this for phone calls to be made during business hours) Home (this context is also used for phone calls

(this context is also used for phone calls Computer (home computer)

(home computer) DVD Watching (I borrow a lot of DVDs from the library)

(I borrow a lot of DVDs from the library) Reading (this gets done on my train trip to work)

The GTD methodology uses many lists such as the Next Action lists described in the previous section. David Allen uses the term "Agendas" to describe lists of actions you need to discuss with particular people or to raise at a regular meeting. Agendas can be thought of as a special form of next action list.

For example, if you have a regular meeting with your boss, you can create a list called Boss recording items to discuss when you next meet. If you are manager, you could created agendas for each of the people in your team.

Another type of list is a "Waiting For" list. Often when you complete a next action or delegate an action, you need to wait for a response. Writing this information on a "Waiting For" list is a useful reminder.

A Project is an outcome that requires more than one several Next Action steps to be completed. When reviewing the things you need to get done, think in terms of the desired outcome and as many of the Next Actions as you can. It is not necessary to think of all of the Next Actions you need to take, but enough to get started.

For example, an outcome of "Dinner Party" is a project. Some of the Next Actions would have a "Phone" context: "Ring Bill and Hilary", "Ring Valerie and Mark". Under the "Shopping" context, there could be next actions for "Buy red wine from bottle shop".

Make a list of your active projects to use as a checklist during your weekly review. This will ensure that you are creating next actions for each of your projects, and approaching completion on each of your projects.

Calendars are used to record date-specific or date and time specific information only. Calendars are not used to write to-do lists as encouraged in the old style of planners. The calendar is a place for recording appointments, meetings and date-specific information (for example, birthdays).

This a system to store forward-dated action items. Often this takes the form of 43 folders (12 months + 31 days), although a software based system is feasible. For example a bill requiring payment on the 20th of the current month would be filed in the folder labelled "20". The list of Christmas card recipients would be filed in the "December" folder.

You can't do everything now, so the Someday/Maybe List is used to record ideas about things you would like to do but don't want to schedule them now or make further progress. This list is frequently updating during the Weekly Review. Items on the list may become active projects, or conversely, you may decide to de an active project or Next Action to a later date.

Deciding what to do next is going to be based on context, how much time you have available and your energy level. Because your Next Action lists are reviewed at the Weekly Review, you have a means of directing your activity during the week. When you are at home, you can review the HOME list without being distracted by items in OFFICE context.

The heart of the GTD process is a weekly review of all projects, Next Action lists, Waiting for Items. Each project is checked to ensure that a next action has been defined.

The goal of GTD is to get everything out of your mind into an external, trusted system. This will maximmise the readiness of your mind to gain focus on getting things done.

A mind sweep is a technique used to recall all of the things that you are thinking about doing.

Emacs is a highly extensible, customizable, self-documenting real-time display editor (quoting from the Emacs Manual). Emacs dates back to the mind 1970s and is very popular on Unix systems. The core of Emacs is a Lisp interpreter and this forms the basis of writing extensions that add functionality to the editor. org-mode is an example of such an extenstion.

Emacs is available for Windows, Linux, Mac-OS X, and just about every other Unix operating system.

The org-mode package is a mode for keeping notes, lists and doing project management with a fast and effective plain-text system. Org-mode is based on top of the Emacs outline-mode and provides a very usable, color-coded outliner with powerful functionality.

The heart of org-mode is organising the contents in a hierarchical structure, using the outline, and assigning tags (for contexts) and optional dates to headlines. Viewing and editing the document is achieved by folding (hiding) parts of the document to show the relevant content.

A headline has one or more asterisks at the beginning of the line with the level being determined by the number of asterisks.

* Colors ** Red This is a content for the Red headline ** Green ** Blue

The contents of the file can be shown or hidden using the Shift-TAB key. Pressing the TAB key cycles through a top level overview, all headings and all headings with content.

Here are three screen shots from an outline about the twelve months in Australia, shown side by side. At the left is the top level view, then all the headings, and on the right is the complete contents of the file.

A headline (a line beginning with one or more asterisks) and the lines following (without asterisks at the beginning) make up a branch on the outline and can be moved around with "structure editing" commands.

Org-mode provides a full range of commands to promote and demote headings and subtrees, moving branches up and down the file, as well as copying, killing and pasting sub-trees.

Tags are added with the C-c C-c command, which prompts for a tag. This can be seen in the screen-shot shown above. Tag completion is supported, for example typing the letter C followed by the tab key will completed the string making COMPUTER. The list of tags is built up by scanning the buffer. You can also specify a list of tags with short cut letters for fast tag selection.

The C-c \ command is used to prompt for a tag search expression, then display a "sparse tree" of headlines that contain the tags specified in a search. A sparse tree means that the entire document is folded as much as possible, but the selected information is made visible along with the headline structure above it.

The tag search can be a single keyword (for example, HOME) or a Boolean expression using & for "and" and '|' for "or", for example "HOME | COMPUTER".

The following example shows a search on the keyword of HOME:

Org-mode provides functionality to tag headlines with a Todo tag, commands to display these Todo tags and marking for completion. I do not use this feature as GTD relies on lists of actions by context. Choosing which Next Action to do next depends on the context, and time and energy available.

I use one file to contain all my projects, tasks, agendas and someday/maybe lists.

I named my file mygtd.org and included the following three lines at the top of the file.

#+STARTUP: overview #+TAGS: OFFICE(o) COMPUTER(c) HOME(h) PROJECT(p) READING(r) DVD(d) #+STARTUP: hidestars

The first line tells org-mode to only display the top level headings when the file is opened.

The second line is a list of contexts I use. The single letters in parentheses are used for the fast selection of contexts. Choosing a contest is done by issuing the command C-c C-c then entering the letter correspoding to the category.

The third line causes org-mode to suppress the leading asterisks on headings which greatly improves readability.

You will probably need to experiment with a file structure that makes it easy to review your areas of responsibility, projects and life areas. The category tags are the useful components but the sequence of headlines and structure is not important.

One possibility is to create some headlines corresponding to your key areas and responsibilities at work and home. List the names of your family members and their activities. Each active project can have a headline. At the weekly review reviewing the file will double up as a checklist.

* Miscellaneous tasks ** Ring Service Station to book car for service :PHONE: ** Send email to Bill regarding sales order :COMPUTER: * Emily This headline is to remind me to check on my daughters school activities! ** School subjects ** Viola ** Piano ** School Certificate Exam preparation * Work ** Work Prject 1 *** Next action item :OFFICE: * Home ** Ready for Anything (David Allen) reading project *** Read Chapter 1 :READING: * DVDs to watch ** Casablanca :DVD: ** King Kong :DVD: * Someday/Maybe ** Books I would like to read *** Life - A users manual (Georges Perec) ** Movies I want to see ** Restaurants I want to try ** DVDs I would like to hire *** Godfather III *** Memoirs of a Geisha

An excellent way of ensuring you have thought of everything for your file is to do a "mind-sweep". Start a heading at the end of the file and start a new line with two asterisks.

* Mind Sweep ** Ring Bill about that meeting ** Change tap washer in laundry ** Pay membership subscription.

Set a timer or alarm clock and spend five minutes brainstorming all the things on your mind that need doing. As you think of the item, type a brief description, then Alt-Enter to start a new line to create a headline at the same level.

Work fast to get everything out of your mind. When the timer is finished, review the list, add tags and move to the appropriate section of the file.

I have played my file ( mygtd.org ) under source code control. I use the SubVersion program for tracking changes made each day. The file gets backed up to CD as well as copied to a USB-drive for portability between home and office.

I added some code to quickly open my GTD file. Now I can enter the command M-x gtd and a new window is opened with my org-mode file.

(defun gtd () (interactive) (find-file "c:/homes/charles/gtd/gtd/mygtd.org") )

I use index cards (3 by 5 inches) to capture ideas and next actions. Sometimes I use the cards as the basis of my decision making. These cards are reviewed during the weekly review and my GTD file is updated with actions that are still outstanding.

I use a week to an opening paper diary to record my appointments, due dates for library books, family events, children's school activities and so on. Therefore I don't use use the scheduling features of Org-mode.

Refer to the org-mode documentation for details on assigning deadlines and scheduled dates to headings. The agenda view (C-c a) is used to display items with associated dates in a date and times sequenced display.

I like to carry a simply formatted printed list of my next actions for each context. I wrote a Perl script (file:orghip.pl) to read my Org-mode formatted GTD file and produce Next Action lists by context. [February 2009 - This Perl script was written before I understood writing customised agenda commands. Refer to the main page for more articles.].

The script displays the PROJECT list first, followed by the OFFICE context, then the remaining tags are displayed.

The sequence of the items in each context correspond to the order in which they were found in the file, and this gives some sontext to actions in the same context.

Here is an edited version of this file using the an example file, mygtd.org.

Date Printed: Sun Sep 3 14:13:33 2006 PROJECT: [ ] IPTM 9 Testing (Beta Release) [ ] Learn to typeset music with Lilypond [ ] C# Windows Forms Programming [ ] Learn to Inkscape [ ] GTD Implementation OFFICE: [ ] Install latest Ethereal [ ] Retest bugs in RESOLVED status [ ] Go to Post Office and buy stamps [ ] Ring Dentist to change appointment HOME: [ ] Picture hooks in lounge room [ ] John Byrne Book - work through COMPUTER: [ ] Typeset "Eleanor Rigby" for Katie [ ] Typeset piano part of Sicilienne [ ] Speech timer (use Egg Timer as basis) [ ] Note entry program for LilyPond [ ] Study Tutorial 1 [ ] Learn org-mode properly [ ] Write and publish tutorial on org-mode DVD: [ ] Howl's moving castle DEADLINE: <2006-09-07 Thu> [ ] Fantasia DEADLINE: <2006-09-15 Fri> READING: [ ] Review "Prognosis User guide"

Read more articles by Charles Cave on org-mode, Emacs and GTD.

David Allen's web site (http://www.davidco.com)

Getting Things Done Wikipedia article (http://en.wikipedia.org/wiki/Getting_Things_Done)

43 Folders (http://www.43folders.com)

Getting Things Done email group (http://finance.groups.yahoo.com/group/Getting_Things_Done/)

Charles' GTD Blog (http://charlesgtd.blogspot.com)

http://en.wikipedia.org/wiki/Emacs

http://www.gnu.org/software/emacs/emacs.html (this author uses GNU Emacs for Windows available from.

Author: Charles Cave <charlesweb@optusnet.com.au>