LeRoyce Pearson Blog

Todo List Format

Hello everyone! I'm an avid listener of a podcast Cortex and command line tools. On the cortex podcast they often discuss todo lists, and one todo app that has appeared multiple times is Omnifocus. It's a proprietary iOS app with a ton of great features that I want to replicate on the command line, through plain text if possible. Below I've compiled my thoughts on the subject.

Task Tracking

Syntax concept:

- [x] update finances +priority:high
- [ ] wash clothes +due:sunday
    1. [x] put clothes in washer 
    2. [x] put clothes in dryer
    3. [ ] put clothes away 
- [ ] implement MVP of taskapp +taskapp
    - [ ] implement core
    - [ ] implement frontends
        - [ ] android
        - [ ] command line

The syntax draws heavily from github markdown and the taskwarrior cli app. The features that are supported are as follows:

Nested tasks

Nesting tasks makes it easy to break a task into multiple tasks without making a mess of your todo list. You can use it to make projects into one big task with many subtasks to complete. And if you ever find that a task is bigger than you thought it was, you can simply add subtasks to keep track of smaller steps.

Tags

Tags are words optionally followed by some data, in the format +tag:data. If a tag has no data the colon can be omitted. A tag can appear multiple times with different data.

Tags are useful to filter tasks. If you're at home, for example, you could filter out all the tasks that are tagged +work, so you don't have to be distracted by stuff you can't do at the moment.

Allowing tags to have data attached makes the format very extensible. Instead of having syntax for marking priority, you can tag it +priority:high, and all clients that have support for sorting the priority tag can sort by it. And if a client only supports regex, you can still filter tasks efficiently.

Sequenced Tasks

Some things in life have prerequisites, so a task list must have some way of representing this. This information can filtering tasks more effective, as the user can now ask the app to give them "all the incomplete tasks with all of their prerequisites met".

In this case I show prerequisites as a sequence of tasks, but limiting it to sequences is not my intention. Subtasks, for example, are also prerequisites of a supertask. You could write a list of prerequisites by nesting them all, but that's a pain to write out for longer sequences.

You could also represent prerequisites with a tag, as long as the tasks have some kind of id.

Thoughts

These are the main features I want out of a todo list format. Currently available task managers fail to meet these requirements.

The other features I want are device to device synchronization and an android native application. But that's a story for another time. I would like to hear people's thoughts on this, as I've just been stewing on all this without another voice to balance mine. Feedback is much appreciated!