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:
- Arbitrary nesting of tasks
- Arbitrary tags on tasks
- Sequenced tasks
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.
taskwarrior
doesn't support nesting tasks or prerequisites- The
todo.txt
format has the same limitations
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!