Recurring tasks

I’ve gotten several requests for support for repeating tasks would for things like weekly backups, etc. I have this on my list already, but there are problems with it that I haven’t solved from a hierarchical perspective.

There are 2 basic ways to do this:

1. Generate a task for every instance of the repeating occurance. This has the benefit of letting you easily modify a single occurance of the task (add notes, change the date, things like that) but makes it more difficult to make changes to all of the recurring events as a whole (you need to make sure that property hasn’t been modified from the original – if it has you probably don’t want to change it).

2. Generate a single task that is displayed for each occurance. This makes it really easy to modify all of the instances of the recurring task at once, but doesn’t let you make changes to each instance.

The hybrid solution I’ve been toying with is to generate a separate task for each recurrance, but also store the inital task information along with the IDs of all of the tasks that were generated. Then if someone changes one of the recurring tasks, I can prompt them:

This is a recurring task, how do you want to proceed?

() Change all recurrances of this task.
() Change all future recurrances of this task.
() Change only this task.
[] Also change tasks that have been modified individually.

() = radio button
[] = checkbox

Then I can loop through all of the recurring tasks and apply the changes to all of the tasks.

The problem this still doesn’t address is: How do I handle this in the heirarchy?

Let’s say I have a category ‘Home Computer’ and I want to create a recurring task ‘Backups’ to be done every Sunday for 1 year. Now I have 52 tasks under the Home Computer category. That makes the collective completion status of the Home Computer category a bit misleading. And I don’t think people want to see 52 of the same task at once under the parent task either. Only one of the tasks is really ‘due’ for this week.

Unfortunately, even if I add an exception so that only the tasks that are currently due (or overdue) count against the completion status of the parent task, then the parent task could inappropriately have a 100% completion status and be hidden from the main view. Also, I’d need some scheduled process to ‘activate’ the upcoming tasks.

It’s a bit of a mess… if you have any ideas on how to manage this, please pass them on to me.

UPDATE (2003-08-11): I’m going to try future dating the future tasks using Date Created and only show them after the current instance of the task is due. Look for this in 2.0.

This post is part of the project: Tasks Pro™. View the project timeline for more context on this post.