On May 12, 2006, I hacked together my first bash script that was more than a dozen lines and published it on Lifehacker.
todo.sh manipulated a todo.txt file at the command line using
cat: all the shell-based text tools that I knew and loved. Back then, in Lifehacker's heyday, I was obsessed with the simplicity and portability of text files, mostly because Danny O'Brien featured them front and center in his original life hacks talk.
Since then, Todo.txt CLI has grown into a legitimate open source project with dozens of contributors, hundreds of people on the mailing list, regression tests, custom add-ons, and a Python fork. This script has literally run my life since 2006, but using it hasn't been its greatest value--the collaborative development experience has.
Because the project attracted Unix geeks with skills way beyond mine, through mailing list discussions, I learned much more about Unix software design than I could have ever expected. Last year, when I left Lifehacker and had more time to pay attention to the project, thanks to a suggestion on the mailing list, I moved it over to GitHub and absolutely fell in love. (All of my active software projects live on GitHub now, including my full-time job project, ThinkTank.) GitHub's commit history doesn't include all the early contributors, but I'm still getting pull requests for the project, as recently as this week. Check out a screenshot of the fork network graph:
At this point the
todo.sh code is stable; I just released version 2.6 with some fixes and tweaks. I use it plus some key add-ons (like projectview) every single day. Four years after I hacked together todo.sh's first pathetic iteration, my
done.txt file is a delightfully
grep-able 1,000+ line archive of completed tasks. I'm still using GeekTool to pin my high-priority tasks to my desktop in a heads-up display; and I store my todo.txt and done.txt files in Dropbox so I can access it from all of my computers and my phone.
Call for Android Developers
Todo.sh's biggest problem right now is mobile access. While a contributor did put together an awesome web-based mobile interface to todo.sh, I'm gearing up to create an Android application that displays and updates your todo.txt file using Dropbox's APIs. Let me know in the comments or on the mailing list if you're interested in helping out with that.
If you haven't seen todo.txt in action, here's a quick screencast.
todo.sh and the community that surrounds it. Thanks for everything.