Let me be up-front about this: I’m obsessed with task management. I can’t get enough of it. The first thing I look at when I get to work is my task list, and the last thing I look at when I leave for the day is my task list. Given the choice between coffee and my task list, I will pick the task list one hundred percent of the time. I. Love. Task. Management.
I love it so much that I use three task management apps concurrently. At work, I use Things because it’s deceptively powerful but still knows when to get out of my way. (I sync it with other computers by way of Dropbox.) At home, I use Wunderlist because it’s simple and free, and because it’s cross-platform and syncs with a web app. On the go, I use the task manager that’s built into WebOS because it notifies me when I have things to do, and keeps those notifications visible until the tasks are done.
This is insane. I realize that. But I have a very good reason for this wackiness: nothing syncs with anything else! I can’t view my Wunderlist tasks on my WebOS task manager, or view my Things tasks in Wunderlist. Without Dropbox as an intermediary, I can’t even sync one desktop copy of Things with another.
It’s like the bad old days of POP email, when your messages lived primarily on your local computer. The IMAP protocol allowed you to keep all your messages on a central server, and sync all your actions with the server, but it wasn’t until Google rolled out Gmail that IMAP email was available for free. Similarly, it wasn’t very long ago that it was nearly impossible to sync various calendar applications with one another. Before Mac OS Leopard, iCal calendars were only available on Macs and iPhones.
This has changed partly because more and more companies have bought Microsoft ActiveSync licenses so that they can sync with Exchange, but something more significant happened a few years ago: Apple developed a calendar sharing protocol called CalDAV. Based on the WebDAV collaboration protocol, CalDAV allows calendar applications like Google Calendar, MobileMe, iCal, Mozilla Sunbird, and many other applications to communicate with one another. It’s an honest-to-goodness open standard, with an Internet Engineering Task Force memo and everything, and unlike ActiveSync, it’s free to use, so even little developers can use it. Having the same calendar on my phone, my home computer, and my work computer has changed how I work – and kept me from missing more than a few meetings.
Not so Fast
So why don’t we have a standard protocol – call it TaskDAV – for collaborating on tasks? Well, for starters, different task management apps consider tasks very differently. Google’s bare-bones task manager is basically a list of words, with no data about due dates, projects, and the like. Apple Mail’s task list has due dates and alarms but not much else.
Conversely, Things can organize tasks into projects and areas, and it can tag them by category. Tasks in Things can be scheduled to be done on a given date, even if they’re not due until later. You can indicate priority by creating a tag with a name like “High” or “Low.” Oh, and also there’s a robust repeating tasks system, so you can have a task that occurs on the first Tuesday and third Friday of each month.
Wunderlist behaves kind of like the poor man’s Things. You can “star” a task to indicate high priority, but there’s no way to indicate low priority. You can organize tasks into lists, but you can’t organize those lists in any way. A task can have only one date associated with it. Tasks can’t be scheduled or repeat in any way.
By the way, in our imaginary protocol, all applications must talk with each other seamlessly, handle conflicts automatically, and never lose data.
Cultured Code’s infamously long development time for Things cloud sync starts to make a little more sense now. It’s hard enough to sync different applications when they are each talking about the same thing, but how to you synchronize applications that have radically different conceptions of just what a task is?
Let’s Talk It Out
One option might be to consider an XML-based format for describing tasks, kind of like the RSS news syndication format or the XSPF playlist format. Tasks would contain elements like dates and completion status. There would be a set of widely agreed-upon tags, and vendors could propose new tags as needed. Vendors would be discouraged from coming up with different names for the same thing. Applications could refuse to display content that they don’t support, but they would need to leave that content intact when syncing.
In my dream world, all the big web-based task managers – Wunderlist, Remember the Milk, Toodledo, even the anemic Google Tasks – would all speak the same language. Not all of the would envision tasks in exactly the same way, but they’d degrade gracefully whenever they encountered something that they couldn’t handle.
Is this a lot to ask of developers? Sure. Would it require coordination? Tons. Is it a really dorky, low-level thing that vendors couldn’t possibly get excited about investing in? Arguably. But so was CalDAV.