This article originally appeared in TidBITS on 2010-03-22 at 12:18 p.m.
The permanent URL for this article is:
Include images: Off

Things, a Nimble, Flexible To-Do List Application

by Matt Neuburg

In recent years, I've tried some applications dedicated to the elaborate Getting Things Done (GTD [1]) model of organizing your to-do list, such as Thinking Rock (see "Get a Piece of the Thinking Rock [2]," 9 October 2006) and OmniFocus (see "OmniFocus Willing, But Not Quite Ready, To Help Get Things Done [3]," 30 April 2008). I also use a calendar program, Remember? (see "Remember? Not Forgotten [4]," 30 June 2003), that tells me when an event is upcoming, and is smart about events that repeat at regular intervals. I've also used some utterly simple to-do list programs, such as Ambrosia Software's ToDo! desk accessory. (ToDo! doesn't run on Mac OS X, and I bet most of you don't even remember what a "desk accessory" was; you can get a notion of ToDo!'s simple, clean interface from the screenshots [5] of Omicron's ToDo X, which is modeled after it.)

The nice thing about Things [6], from Cultured Code (a development house based in Stuttgart, Germany), is that it combines aspects of all of these. Its interface is bright, clean, and simple. It understands due dates and has a very good notion of repeating events. It can be used in the very simplest way, with the most basic organization, like assigning a task a priority value or a vague target date. But it can also implement something very like a full-fledged GTD system. And that flexibility is the whole point: Things gives you a few elementary tools, and you combine them the way you want to.

Things Descriptive -- A task in Things is minimally just a word or phrase specifying what you want to accomplish. It has a checkbox so you can mark it completed, and you can drag it around in the Things window. And that's basically all! But if you want to, you can attach further information, such as:

On the left side of the window is a sidebar containing "levels of commitment" to which a task can be assigned:

A task that isn't in the Inbox must be in Someday or Scheduled or Next, and a task in Next either is or is not also in Today; that basic fact is one of the few Things fundamentals that must actively be grasped in order to use the program effectively.

The sidebar can also display "areas of responsibility." These are arbitrary categories, rather like tags; and at first you might not see why you'd use areas of responsibility as opposed to tags. One reason is that it's nice to have a way of seeing tasks that's independent of levels of commitment. For example, I have a "Programming" area of responsibility, just to have a place in the sidebar where all programming-related tasks live, regardless of their status. You can actually combine areas and tags: every task in an area of responsibility automatically acquires any tags assigned to that area.

Some tasks are complex, and need to be broken down into simpler sub-tasks, providing you with a clear sense you're getting somewhere even though you haven't yet completed the whole task; a task like that should be a "project." A project is itself a task, with a few special features. For example, a project's tags are automatically assigned to its sub-tasks. Most important, if a project is in Next, just its first few uncompleted sub-tasks are displayed there. This keeps a project from becoming overwhelming, and keeps you focussed on the sub-tasks in order. (A project cannot have sub-projects.)

To focus on a set of tasks, click something in the sidebar; this limits the main display to the contents of what you clicked. For example, to see the Next tasks, click Next. Then, at the top of the window, there's a region called the "filter bar," which lets you focus still further. This region appears only if it's needed, and it contains only buttons relevant to what's being displayed in the window. So, if some tasks displayed in the window have due dates, the filter bar appears, with an alarm-clock button in it; click that button to see only the tasks with due dates (in date order). If the window is showing some tasks that have tags, the filter bar appears, with buttons representing those tags; click one (or more) to see only the tasks with those tags. There's also a search field at the bottom of the window, so you can limit what you're seeing to tasks whose title, note, or tags contain certain characters.

Things has some additional features that I haven't tried, such as synchronization with iCal or the Things iPhone app (which I also haven't tried). And there are some other features, such as the Add Teammate menu item, whose purpose is not clear to me.

[Adam here... I've used the iCal and iPhone app synchronization, and both work well (look for their controls in the Things preferences window). Syncing bidirectionally with iCal requires choosing which levels of commitment you want to sync - Today or Next - and which iCal calendar tasks in those levels of commitment should appear in. A Custom option adds syncing of Someday, and lets you sync specific areas with particular calendars. Since iCal synchronization works via Sync Services, programs like BusyCal can read and write those tasks too. Syncing with the Things app [7] for iPhone or iPod touch occurs via Wi-Fi once you've paired your device with Things, and any time you launch the app while Things is running on your Mac, the two sync any changes. The Things app faithfully converts the program's Mac interface to the iPhone; the main lack is an equivalent of the filter bar. The Add Teammate menu item? It's described, briefly, in a blog post [8], but without sharing of tasks between networked users, it's hard to consider using it in favor of a site like Manymoon [9].]

Things Judgmental -- In general, I like Things quite a lot. It doesn't adhere strictly to any prefabricated philosophy; rather, it provides a small number of fairly simple features and leaves it up to you how to use them. It has remarkably few menu items; yet it packs a lot of power. I'm not terribly fond of the non-standard interface - to my mind, it wastes space, plus I find myself clicking and double-clicking rather frantically, trying to get things to expand or collapse, or lose or gain focus - but I can live with it.

Sometimes the interface seems a bit too simple, though. For example, the filter bar lets me limit my view to tasks that have a certain tag; but there's no way to see only tasks that don't have a certain tag. To see why this might be needed, consider a tag whose meaning is negative ("on hold" or "waiting"); it's still in Next, but you can't actually perform it right now, so you need to hide it in order to pick something you can do.

Similarly, there is no view in which you see all your tasks: you must select just one level of commitment in the sidebar, and then you see only the tasks in that level. Similarly, the pending arrival of an item's due date isn't magically signalled; you have to deliberately look in Next and deliberately filter/sort by due date. As a result, as soon as I have more than a few tasks, I tend to become confused about what's where; I have to keep poking around, looking at various lists, trying to get an overall picture of the situation.

But those are minor quibbles compared to the lack of decent documentation. What documentation there is feels like an afterthought; indeed, until fairly recently the best explanation of Things was a user's online video, not even hosted at Cultured Code's site! There's online help (which appears in Apple's dreaded Help Viewer), but it's sketchy and uninformative, not to mention downright incomplete: for example, you'd never know from the online help that you can drag files into a tag's Note, or what the mysterious Add Teammate menu item is for. Similarly, Things is scriptable with AppleScript, and there's a PDF Things AppleScript Guide; but this isn't mentioned in the online documentation, and the download doesn't include the Guide, so how on earth are you supposed to find out about it? Cultured Code has a habit of describing a feature on their blog [10] or their wiki [11] and leaving documentation to catch up a year or two later; but not everyone wants to search the Web for basic facts about what an application does.

The online help is also inconsistent, using different terms for the same concept in different places (is it a "task," an "item," or a "to-do"?). The application's interface terminology has the same problem. The Add Teammate menu item creates a sidebar section called People (not Teammate) - two terms for one thing. "Levels of commitment" (per the documentation) are also called "Focus" (in the sidebar). When a task is selected, a certain menu item reads Move to Someday or Move to Next; when a project is selected, the very same menu item reads Make Inactive or Make Active, and does exactly the same thing - a clear candidate for Occam's Razor. My prescription is, as usual, that Cultured Code should hire an experienced teacher and documentation writer to rewrite the online help, provide a PDF manual, and straighten out the interface terminology.

Despite my reservations, I think that Things is an eminently usable application, which, ironically, is just what you want when what you're really after is not to use the application at all, but rather, to get things done. The price seems a little steep, but that hasn't damped the enthusiasm of users on Culture Code's forum [12], who are vociferously telling Cultured Code how they really use this program. That's a healthy sign; another is that Cultured Code is fairly open [13] about what new features they're working on.

Things requires Mac OS X 10.4.11 or later. It costs $49.95 ($74.95 for a five-user, one-household "family pack"), and the download [14] is fully functional without a license for 15 days.