todo.dir is like todo.txt, but with luggage space
My tasks lived in todo.txt some years ago. It was close to perfect for managing my everyday tasks. Razor fast, easy to work with, and it was supported by most text editors I used. Compared to the bloated, database-driven, task managers I had dealt with up until then, todo.txt was a cool breeze in hell.
There was one problem though. todo.txt uses one line per task, and sometimes this was not enough. I have a habit of maintaining notes, links, attachments and all sorts of things that are connected to tasks. Try to bung this all in to todo.txt and the format loses it’s zen like beauty.
My workaround was to keep tasks in todo.txt and everything else stored in my good friend, zim-wiki. This was ok, but eventually the friction of having to browse my wiki for task related notes got to me, and I stopped using todo.txt for my task management needs.
Today, I use org-mode in Emacs, which provides all that I need from a plain text task management system. However, I did not entirely abandon todo.txt. I use it to this day for simple checklists (shopping, vacation etc) and it works great.
This morning, as I was ticking off items from my list, I had a moment of insight. It hit me that the solution to the problem over which I stopped using todo.txt was staring me in my face. It was right in front of me all day long. The File Manager from my Operating System.
Introducing todo.dir
todo.dir is exactly the same as todo.txt, except, instead of using a single file to hold our todos, we use a directory full of text files. Each file in this directory is a task, and the file name is the task name. The syntax is exactly the same as in todo.txt except for maybe the file extension, if you want to add one.
We tend to forget that the default OS infrastructure these days is pretty good. The file explorer in my Linux Mint installation, just like in any other OS, sorts by filenames or dates and provides excellent search capabilities. Since each todo item is a text file, you can list, sort, add, delete and essentially mirror many actions that make todo.txt so flexible and easy to use. Standard tools in the File Manager such as window splitting, copy/move, bookmarking and so on make manipulating individual files easy.
When a task is done, just add an x at the head of the filename to sort it to the bottom of the list, or delete the file if you don’t need it. For archival, you could just dump these files indicating completed tasks to a folder called done.
The Benefits of todo.dir
All the benefits of todo.txt: todo.txt is so brilliant because it is quick and snappy, loads on any device, is sustainable as a format, easy to version-control and is dead simple to maintain. todo.dir enjoys all of these benefits and some more.
Easy to use, simple to understand: Files-in-a-folder is among the first computing concepts that people learn. This means the ubiquitous file manager either in GUI form or in the terminal. Concepts such as create, copy, move, rename, or delete file are all one needs to use todo.dir (alongside the simple todo.txt format rules, of course)
All the Space I need for notes: Since each task is a text file, you can bung in as much reference notes as you need. Create sections for sub-tasks, logs, reference notes, time stamped audit trails, code snippets… let your imagination go wild.
Use any Plain Text Format you like: You can use any plain text format that suits your need. Go with plain, unadorned .txt files if you’re simply dumping content or use Markdown format for pretty headlines, images and links.
Projects with arbitrary depth and sub-task complexity: Imagine you have a project that has many dozens of tasks, each of which have many dozen sub-tasks. You can treat a subdirectory as a task, instead of a file. Now it will list alongside all the other tasks (which are files), except that you can drill down into it to see further tasks (files) with even more data inside them. Although, if this contrived example were real, you’re probably better served using a dedicated project manager with task dependencies and critical path analysis and all that.
How has todo.dir worked for me so far?
I only comped up the GIF as a prototype to test my idea and see what it might look like. I am already heavily invested in Org-mode, and don’t see myself switching to todo.dir anytime soon (for practical use at least). Having said that, if I stop using emacs for some reason, todo.dir probably comes closest in allowing me to store arbitrary amounts of data and metadata, using a simple, flexible task management system.