Skip to content

Instantly share code, notes, and snippets.

@alehandrof
Last active May 15, 2024 14:25
Show Gist options
  • Save alehandrof/9941620 to your computer and use it in GitHub Desktop.
Save alehandrof/9941620 to your computer and use it in GitHub Desktop.
How to GTD with Simpletask

How to GTD with Simpletask

This is a guide to implementing Getting Things Done (GTD) using Simpletask by Mark Janssen.

Simpletask uses the todo.txt syntax, but has sufficient differences and quirks of its own to be worth describing in detail---at least, that's the story I'm going with. I actually began this guide as an exploration of my own trusted system. Personal workflows are by definition eccentric; I have included only what seems to me to be broadly useful.

This implementation of GTD covers the "standard" classifications: next actions by context, projects, somedays, agendas by person and meeting, etc. In a departure from strict GTD, each entry in these lists is also tagged with an area of focus, interest or responsibility. I find that the ability to slice the system by this extra dimension is worth the additional complexity at the processing and organizing stages. Limitations, issues and workarounds are discussed at the end.

Before we begin, some words of wisdom:

Your system has to be easy enough (and complete enough) that you will be motivated to work it even when you have the flu. The system is only as good as what you're willing to maintain when you don't feel like it. ---David Allen, "Let the Lists Fall Where They May"


Entries

I refer to every line in your todo.txt as an "entry" to differentiate them from tasks. Simpletask takes a broader view of what constitutes a todo.txt file.

Entries may belong to one list (@something) and they may have one or more tags (+something) assigned to them. They may also utilize due dates (due:2014-04-2) thresholds (t:2014-04-3), recurrance (rec:1w) and priorities ((A)).

Lists (@)

Simpletasks collects all @somethings in your entries and calls them lists.

Lists hold all entries on the first four Horizons of Focus: from Runway to 30,000 feet, or Next Actions to Goals & Objectives. If you find this format appropriate, you could feasibly include items from the remaining two altitudes: Vision, Purpose and Principles.

Lists are mutually exclusive. If an entry can be placed in more than one list, you need to clarify either the entry or your lists.

Inbox (Capture/Collect)

The inbox consists of all entries that have not been assigned to a list. They are typically not tagged, either. Although I will often revise entries before tagging and assigning them to another list, I generally preserve the original creation date.

Do not create a list called @Inbox; it will just slow you down at the collection phase. If you want to view just your Inbox, filter by - in the left drawer.

Next Actions (Runway)

Next actions are filed in lists that begin with an at-sign (@), one for each context. The at sign is an established shorthand that reinforces the idea that the context (place or tool) is required for the action to be performed. More importantly, the at-sign makes these lists sort above the others, so you can find them more quickly.

The standard GTD contexts are:

@@agendas
@@anywhere
@@calls
@@computer
@@errands
@@home
@@office

Next actions are tagged with an area tag and, for entries relating to communication, an agenda tag (either a person or meeting).

Agendas may be listed under @@agendas (for face-to-face and impromptu communications) or required context (@@calls, @@computer, etc.) but not both.

Projects (10,000 ft)

A list called @Projects with an entry for every multi-step outcome you are committed to completing within the next year. Each project entry is tagged with an area and, if applicable, an agenda.

Example: Clean out the garage +household @Projects

Someday/Maybe (Incubate Runway/10,000 ft)

A list called @Someday with an entry for every project (multi-step outcome) or single action you are incubating -- i.e., that would like to periodically review but are not committed to moving on, yet. Each someday entry is tagged with an area and, if applicable, an agenda, allowing you to view potential commitments along with your current ones.

Example: Learn to play the piano +creativity @Someday

You could feasibly have multiple Someday/Maybe lists (@Someday-Soon or @Someday-Never, etc.) if you need the additional granularity.

Tickler (Incubate Runway/10,000 ft)

A list called @Tickler contains all tickled items which are not actions. Tickled items are all entries with a threshold date; if their threshold has not passed, they will also have a priority of (B). Tickled actions are not included in this list; they are placed under the appropriate context.

Waiting For (Runway)

A list called @WaitingFor with an entry for each delegated action, tagged with both area and agenda.

Example: +JSmith re: conference +consortium @WaitingFor

Areas (20,000 ft)

A list called @\_Areas with entries identifying all your areas of focus, interest or responsibility. There is overlap between this horizon and the area tags (described below), but a 1-to-1 correspondence is not obligatory. How you set up this horizon depends on how you think about your life and how it makes sense to carve up your commitments.

Example entries:

  • Family +family @_Areas
  • Health, Vitality & Well-Being +health @\_Areas
  • Hobbies +blog +painting +rpg @\_Areas

Note: the underscore in front of this list is merely to have it sort to the bottom of your Lists.

Goals & Objectives (30,000 ft)

A list called @\_Goals with an entry for every outcome you are committed to completing within the next 2-5 years, tagged with an area and, if applicable, an agenda. Goals are treated basically as long-term projects.

Example: Attain some promotion +career @\_Goals


Tags (+)

Simpletasks collects all +somethings in your entries and calls them tags.

Tags specify areas of focus, interest or responsibility, as well as agendas for people or meetings.

Areas

All lowercase tags refer to areas of focus, interest or responsibility. These generally relate to the 20,000 feet horizon, but will probably be more granular. There's no rule here; you will need as many areas as you need. A word of warning, however: avoid making area tags too specific (so that they basically map to your projects). Most area tags will be somewhere between projects and areas (or approximately 25,000 feet :)

Examples:

+gtd
+blog
+health
+household

To make sure that these are always available, define them in your @_Areas entries or add them to a hidden entry (see below).

Agendas (People & Meetings)

All tags that begin with a capital letter refer to agendas -- that is, to people or meetings.

Tag Examples:

+Mom
+JSmith
+StaffMeeting

Place agenda entries in the appropriate context list and they tag them with an area.

Examples:

Tell +Bob about the party @@agendas +fun
Email +DevTeam re: new client @@online +work

People and meetings you refer to often can be added to a hidden entry (see below) for easy access.


Other Features

The Left Drawer

The left drawer allows you to view your system by any combination of horizon, area and agenda. This is a rough sketch of how your left drawer should look:

  • Lists
    • Inbox
    • Contexts
    • Higher Altitudes
  • Tags
    • Agendas
    • Areas

The most frequently used ways to slice your system -- contexts and areas -- are the quickest to reach, being at at the top and bottom, respectively. Less used stuff is in the middle. (YMMV.)

You can choose multiple lists and tags to slice your system in various ways. For example, you can see all the @@calls you have to make for +work, the @Projects relating to your +family or all the +fun things you might do @Someday.

Hidden Entries

These serve as placeholders to preserve your lists and tags when they do not contain any items.

Examples:

h:1 Contexts: @@agendas, @@anywhere, @@calls, @@computer, @@errands, @@home, @@office
h:1 Other Lists: @Projects, @Someday, @Tickler, @WaitingFor, @_Areas, @_Goals
h:1 Contacts: +Mom, +JSmith, etc.

Due Dates

Per GTD, I only use due dates for the "hard landscape", such as appointments, rather than estimations of when I'd like to do something. I also add them to projects to indicate deadlines (after which completion becomes moot).

For time-sensitive actions I prefix generally prefix times like so: [10:15] Taskname

That said, I find Simpletask's calendar integration to be really clunky, and I have begun adding items straight to the calendar, which I find problematic.

Threshold Dates

Threshold dates allow you to incubate actions or reminders (tickled entries). Add the (B) priority to all newly created tickled entries. Tickled actions are filed under the appropriate context. For reminders, you can use the @Tickler list.

The priority is remove when the entry has been "tickled" (the threshold has been passed).

Priorities

GTD does not have a priority system. I use the todo.txt priority syntax to help me filter two kinds of entries:

  • Entries with (A) priority are "hot": they are actions that I plan (not would like) to do today or, at most, tomorrow. I update this list daily.

  • Entries with (B) priority are "tickled": all actions or reminders with a threshold date have this priority until the threshold is passed.

Projects and higher altitudes never have priorities.

Saved Filters (The Right Drawer)

Saved filters allow you to bring up or review aspects of your GTD system. The ones I've found most useful are:

Hotlist

The Hotlist shows me anything with a priority. In this way I see all my "hot" actions for today or tomorrow, as well as all "tickled" entries (incubated actions with a threshold that have become relevant).

The hotlist not a GTD concept, but in interviews David Allen has accepted the it as a potentially useful, as long as it does not become a system unto itself. It also allows an incubation system with date-specific triggers.

Typical

  • Hide completed tasks and tasks with threshold date in future.

Review

  • Show all tasks (including complete and tasks with threshold in the future).
  • Sort with Completed on top.

Other details

  • Simpletask provides an option to automatically generate a creation date for new tasks. Use it.

Issues & Problems

The following are known issues with the GTD implementation in this guide.

  • Inbox. I enter data straight into the todo.txt with Simpletask or a text editor. I haven't experimented with using emails or other input, which is why I don't discuss this at all. There are some ifttt recipes, but I haven't tried any of them.

  • Calendar. You do not need a calendar with this system -- at least insofar as your GTD system is concerned. Integration with an online calendar would be useful, but that is a feature that would need to be provided by Simpletask, or via something that can read the text file and populate the calendar.

  • Reference System. This is outside the scope of a list maker such as Simpletask.

  • Project Support. A subset of the Reference System that is related your active actions, projects, etc. There is no inherent

I include these as "notes" (see above). For example: 2014-01-07 Complete Something or Other // Files in Dropbox > Projects > SomethingOrOther.

  • Read/Review.

    • "Must read" items go into the main system at the appropriate context -- since I am committed to reading or reviewing them. This works very well for items that you can keep on your Android device.

      Example: Read email from bank @@anywhere +finances.

    • "Nice to read" things do not go into the main system. You might want to add some of these to your classify @Someday list, if you would like to review them weekly.

Since I don't care much if anything falls through the cracks, they are housed in various systems: books and movies are in text files (in a custom format, but I might convert these to the todo.txt format as well), online articles are in a read-it-later service, etc.

  • Performance. Simpletask becomes quite slow if you are viewing many entries at once (over 200 on my phone). You might want to experiment with breaking off the Someday/Maybe entries into their own todo.

    That said, my todo.txt is over 400 lines and, while not snappy, is still usable.

Changelog

  • 0.1.0 - Intial public release
@mpcjanssen
Copy link

Some comments:

I like the term entries. Will use that as well :)

Tickler

Why don't you use threshold dates for tickling? If the date is in the future, the item will come back to the visible entries if the threshold date has passed.
Also I find using prios very clunky. The todo.txt prio implementation also doesn't have prios in completed tasks (simpletask does support this) so completing a task with prio will lose it.

Calendar

In newer versions there is proper calendar integration which automatically adds all tasks with due date to the calendar, is this still clunky? I agree calendared items shouldn't really be on your lists though.

Performance

I did look quite deeply in improving performance. For me performance is acceptable with thousands of tasks. What type of phone do you have?

@jaimemrjm
Copy link

Note that Simpletask includes an option to use todo.txt terms, to be closer to GTD. That is, to use context (@:) and projects (+:) in a "common way" instead of tags and list. So your List and Tags sections are optional.

@stoffe123
Copy link

I have migrated from the todo.txt app (which stopped working after dropbox api update) and I have a problem that the simpletask widget doesn't seem to understand the prios but simply outputs them like "(A)" etc. Not very nice. Also I would like newly added items (With the + button in widget) to appear on the top of the list but don't know how to do that in a simple way.

@Gnossos
Copy link

Gnossos commented Dec 31, 2017

I'm a refugee from Micro$oft's takeover of Wunderlist and just discovered todo.txt yesterday. This led me to install Simpletask Dropbox on my Android phone, which in turn led to me discovering this page. Thank you for it!

But being new to both todo.txt and Simpletask, I'm unclear about how much of what you wrote is built into Simpletask vs how much is how you've implemented GTD using Simpletask (and if it could also be implemented with todo.txt).

One thing that jumps out is your statement that entries can belong to only one list. You also give a set of contexts beginning with @@. Since @@ begins with @, these are also lists by definition. But I always thought GTD takes an atomistic view of contexts. So that, for example, adding two contexts to an entry such as "@computer @work" versus "@computer @home" could be used to distinguish being at work and writing that report for your boss versus being at home and designing your family holiday greeting card for next year. Apparently you use area tags (e.g., +work) for this purpose, but, for example, I work out of two offices so I would need three tags: a generic one for +work in general plus two others, one for each office. This quickly becomes cumbersome. For this reason, I very much like the atomistic approach with multiple lists being allowed per entry and use it extensively for my own trusted system.

But as a newbie reader, I'm not sure if Simpletask allows this. If the one-list-per entry rule is build into Simpletask, then it can't be used this way. OTOH, if it's just how you recommend implementing GTD using Simpletask, then individual users could decide on whether or not to abide by the rule.

Similarly, I'm not sure from your description of ticklers if Simpletask does things automatically (e.g. give all pending ticklers (B) priority) or if this has to be done manually.

Perhaps the issue of distinguishing what's in todo.txt vs what's in Simpletask vs what's in your implementation could be easily addressed by adding brief summaries, or even links to brief summaries, of todo.txt and Simpletask to the start of your article. If somewhere on the web there's a page explaining the differences between plain todo.txt and Simpletask, a link to it would be useful too.

One last point. Todo.txt's simple, plain-text data structure allows easy extensibility. For example, for complex projects I sometimes want to use a PERT/CPM approach to project planning. I can see how todo.txt can easily be extended with something like pred: and succ: tags for predecessor and successor tasks and with an est: tag for estimated time for completion. I can imagine someday (or someone) writing a tool that could add such fields to a todo.txt file and reformat a project's data to be input to project planning software.

As far as I can tell, Simpletask already does a few things like this, e.g. by adding the threshold tag, and your GTD implementation takes advantage of them. It would be good to point out such things as Simple-task specific, especially when they're central to you GTD implementation, so readers would know when they can get away with tools that just know about todo.txt versus when they absolutely need a Simpletask-capable software. Perhaps asterisks or color-coding individual headings would serve this purpose. AFAIK, right now Simpletask software mainly runs on mobile devices, but there are some really good todo.txt tools for desktop OS's. If I am right about Simpletask being mobile, it would be helpful to understand when desktop tools would be sufficient vs when they would cause trouble for someone who's adopted your system.

To close this long missive, let me contribute something. Several previous posters have brought up the issue of calendaring. One solution I'm working with is using Mozilla Thunderbird's todo.txt extension. By pointing it to my todo.txt file on Dropbox, it automatically adds tasks to the Lightning calendar that's now included with Thunderbird. This works very well. By using the Google Provider extension, I'd like to synchronize these entries with Google Calendar. Of course, most other calendaring software today can synchronize Google Calendar, so this is the holy grail. Unfortunately, TL and GC have entire different, and to some extent incompatible, formats for tasks. So this part of my project is still a work in progress.

Thanks again for your wonderful post!!!

@sergeevabc
Copy link

Too long to read, give an example above all.

@aleksfadini
Copy link

Could you provide a todo.txt file as an example? Your system is terrific but an example would help to understand how @Projects work with +tags

@alehandrof
Copy link
Author

I haven't used this system for many years, and I don't recall how I implemented it anymore :)

@aleksfadini
Copy link

aleksfadini commented Aug 6, 2021 via email

@alehandrof
Copy link
Author

My needs have changed over the years, as well as the tech I use. When I wrote this I was using Linux and Android, but now I use a MacBook and an iPhone. My current system relies on Things but is pretty close in implementation to the above, though I don't use contexts as much as I used to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment