There are many reasons to keep todo list: to remember things better (it’s known that when you write down something it gets better stored in your brain), to feel yourself organized, to do simple time/resource management. Writing down all items on paper is the simplest solution but paper becomes cluttered when you complete items and strike them out. Better idea is to store them on computer in a text file; it’s always clean and you may copy-paste items to other applications, send them by email or IM. Having dedicated application to edit this file is even better idea; it may hang in system tray to be at hand, group items and enhance them visually. After using some tools to manage todo list I’d say that none of them are perfect; here are guidelines for the ideal solution:

– Items should be simple single-line text strings. Additional properties such as dates and location may be just written within the item. The reason is that all those structured properties will just distract from the item itself. If there is need to keep structured records you’d better off using bugzilla.
– Items should be nested. It’s natural for the humans to break complex tasks in subtasks so child items may be provided for any todo item. There should be no dedicated categories or folders; todo list is all about execution – not record keeping.
– There should be no ‘completed’ checkbox. If item is done it should be removed. If you don’t want to remove it by some reason it’s not done. If it contains some reference data such as web site url or phone number then you should move them to some other storage such as browser bookmarks or address book.
– Items should be stored in text file so you may edit them in any text editor. Each item occupies one line; child items are prepended with tabs so if the item is far from the left side then the upper item (has more tabs in the beginning) then it’s a nested item.
– Application should allow to associate colour labels with items. They are generic flags that may be used to prioritize items or mark for review or further investigation. They should be stored by application in some other stoarage, not in the text file with todo items.
– Application should always be at hand; most obvious solution is to load on startup and hang in system tray.
– Name of the text file with todo items may be specified in preferences or the last opened file may be used. File should be saved automatically after changes.

The best application for Mac that I’m aware of that almost fits in this description is CheckOff []. Sources of this application are freely available so it’s not a big deal to roll out a version that implements this vision.