2008-07-05

On task list managers

The use cases I need for a task list application are:
  • I am at the middle of nowhere and some task pops up in my head. I need to save it quickly to prevent it being forgotten. I need to action my mobile phone into "new task" and type the text or record a voice message that will be voice recognized or later transcribed by me to text to be able to full text search it.
  • I also need to quickly append to tasks. So, I need to buy something and I just type shop and my shopping list entry appears. I select it and just add an item to it. (this feature needs full-text search with partial word matching)
  • I need to be able to full text search all my tasks, and since they are so many, they should be indexed to be able to search (like Google) by typing some words. They could be tag categorized (hierarchies are not as useful).
  • Each task should have a reviewed date attached to let me be able to review most old entries and update that date after review.
  • Tasks should notify me at a certain date/time and/or (using Assisted GPS) when I am near a place where I may be able to complete the task (just like Geolife does). To this end each task should have optional date/time and location fields.
  • There are certain repetitive tasks like, for example, cutting the grass that need to be rescheduled once they are completed (otherwise I forget and too much time can pass), so I need to set a time to notify and be able to review if it was too long or too short.
  • Be able to group tasks into toplevel projects or goals. So tasks can have subtasks. And be able to perform operations like review on a task's subtasks.
  • Any task may depend on any other task that would block the first task until it is completed. The user interface should (by default) show only tasks that do not depend on any other for completion. Dependent tasks may be external (maybe other person) and they may be on the shared task list with that other person or even in a public task list.
  • It needs to be scalable to a lot of task entries without losing performance. It should be as O(1) as possible. I have 800 tasks just for one year of use (the Nokia N80 slows a lot with so many tasks) so it would need to be scalable to 100000 tasks to cover a life time. This requirement adds up to using efficient storage like SQLite and having a GUI that can cope with 100000 tasks in the full task list view (probably it should only render some tasks at a time to be fast and do not require huge amounts of memory something that the N80 is not doing)
  • I need to be able to sort tasks by priority. (You can not sort tasks by priority if you have more than 5 tasks using just 5 priorities)
  • Off-line usage. I may not have Internet connection but I still need to access (and search) my tasks.
  • Synchronization. I want to be able to add, edit and remove tasks from by mobile device and my desktop computer. This will also serve as backup as the tasks will reside in any synchronized device.
  • Keep history of changes. In case I did an incorrect edit or deletion.
GTD: Task management with Android software apps is also a good requirements list and a comparison of Android applications.
I am currently using my Nokia N80 as my task list manager, but as you can see from the above list it does not meet all my requirements.
A good on-line task manager is Remember The Milk: Online to do list and task management but it is mostly an online app. Things for Mac and iPhone is also a great one.

No comments: