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 grep
, tail
, head
, sort
, and 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.
Happy birthday, todo.sh
and the community that surrounds it. Thanks for everything.
7 Comments
Ian C. Anderson
I may help with the Android project, Gina! I’m currently working on a beer-brewing helper Android app.
Design recipes, calculate beer qualities, track batches, etc.
Learning a lot in the process!
Sean
I’d be interested in helping out with the Android application. I have a little bit of experience developing for Android, but I’ve been looking for a project to really dive into it this summer when I’ll have a lot of free time.
Also, in lieu of a full Android application, you could port the script using the Android Scripting Environment. While it probably wouldn’t have the Dropbox syncing (although it may be possible), you could still have a todo.txt file on your phone’s SD card.
Nathaniel Kabal
ZOMG, Android/DropboxAPI integration would be incredible. Adding it to the watch list.
Don
I was planning an app-based off of Todo.txt for Android and Blackberry, life has been keeping me from it though. I was going to use a service that will sync with Android, hoping someone from Dropbox sees this soon, and allow the user to specify the txt file’s location. Lastly, I thought about syncing the file with an internal DB to speed things up and to make it easier to integrate with a web app in the future.
Don
Todo.py works in ASE, btw. I don’t remember making any changes but had a few issues with todo.sh
google.com/profiles/nk…
Android app would rock!
I’m available to help.
Gina Trapani
Ok available Android developers, let’s get started:
http://smarterware.org/5984/introducing-todo-txt-touch-an-experimental-android-app