The missing standard for todo apps

In the video-editing field XML is used as a standard to move projects from one software to another. This is an important feature that allows us to switch application and even operating system in an easy way while we’re working on a project. Some information is lost in the process, but most of the times the transition is possible and hassle-free. This kind of behavior is so important that when a company like Apple delivers an editing platform that doesn’t support the XML import/export standard (think about the initial release of Final Cut Pro X) people start to legitimately criticize it and move to other solutions. The lack of XML support means that you can only work within an environment, and the migration of projects and assets toward other apps or even different kind of tools (i.e. from video editing to audio editing and viceversa) will be a pain the ass.

The problem

Now, there’s a weird thing that I can’t explain to myself. There are tons of gorgeous todo apps out there. Every ones in a while some indie developer or some important software house release a new “todo app” with great features. The experimentation on UI in this kind of apps is mind-blowing. The problem is: there’s still no standard. These apps don’t know how to import and export data to share it. When you want to try a new one, you have to start from scratch. When you want to move back, the progress you made is lost.

The solution

I’m not a developer, I just like to make mockups and think about software and user experience. I suppose that the database of a todo app isn’t much complex – actually there are apps that use just plain text, like TaskPaper – and I’m pretty sure the XML format is perfectly suitable for this task. Why XML? It’s a simple, extensible language. That’s it. Different todo and reminders apps could read and write the same XML file. The file could look like this (but I’m not not an expert, I’m sure this is far from perfect):

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE todos [
<!ELEMENT todos (todo*)>
<!ELEMENT todo (area,list,text,note,url,priority,alarm,snooze,private,starred)>
<!ELEMENT area (#PCDATA)>
<!ATTLIST area name CDATA #IMPLIED>
<!ELEMENT list (#PCDATA)>
<!ATTLIST list name CDATA #IMPLIED>
<!ELEMENT text (#PCDATA)>
<!ELEMENT note ANY>
<!ELEMENT url (#PCDATA)>
<!ELEMENT priority (#PCDATA)>
<!ELEMENT alarm (#PCDATA)>
<!ELEMENT snooze (#PCDATA)>
<!ELEMENT private EMPTY>
<!ELEMENT starred EMPTY>
]>

<todos>
    <area name="Home">
        <list name="Groceries">
            <todo>
                <text>Milk</text>
                <priority>Default</priority>
                <alarm>None</alarm>
                <snooze>None</snooze>
                <private />
            </todo>
        </list>
    </area>
    <area name="Work" />
    <area name="Study">
        <list name="Maths" />
    </area>
</todos>

As you can see the basic structure can be really simple. Maybe apps like Clear, Things and Task Paper couldn’t share the same XML file (but that would be awesome because you could store it in a DropBox folder) because they are too different, but I’m sure that their databases could be based on this same XML standard, and that would make it possible to reliably import/export todos.

Now think about this dream-like scenario: you regularly use the gorgeous Clear but you wake up in the middle of the night and decide to purchase and download the (slightly overpriced) before mentioned TaskPaper. What happens next? The app opens and ask you if you want to read an XML stored on DropBox or create a new one. You select the same XML you already use within Clear and your wonderful things to do magically appear in this new gorgeous UI, so that you can go back to sleep and be happy. The next day you start playing with the new app but after a while you decide to move back to Clear: no problem, your stuff has been updated, there’s no pain in the transition. Even if those apps couldn’t read/write the same file, they could import and export a file of the same type. They could understand each other.

Other two important consequences: first, there’s no desktop version of Clear right? You could sync Clear for iPhone with whatever desktop app you like. Second: web apps that manage todos could be updated to read this new standard XML file. Sound good, right?

Conclusions

I really believe that a scenario like the one I described above is possible today. If something like the great TweetMarker can quickly become a standard supported by a number of awesome apps, I’m sure that a simple and open standard for todo apps should already be out there, ready to be used by developers around the globe. This imaginary XML file could have an extension to clearly distinguish it: like RSS stands for Really Simple Syndication, the new todo standard could have its own extension and logo. I hope you people like this crazy idea and respond to my post. My deep belief is that this kind of communication between different apps and different platforms should definitely be an ordinary thing today, and it’s kind of sad that it’s not a reality yet.

Post Scriptum

I want to make it clear that this post is not in my native language because I want to reach an international audience. After I finished writing this post I found out that the XML exemple above lacks the fundamental “Completion status” element for the todos. Moreover, a task can be “archived” and that need to be in the XML too. But I repeat that I’m not a developer of any kind and that was just an exemple to illustrate the core concept. I also discovered that Tom Bush (and probably a lot of other folks) had the same idea in 2010, but today there’s still no real progress, so I decided to publish this post anyway and know what you think.