Beware of absolutes.....
While it makes sense to have start dates without due dates, which is on
the list of enhancements...
It's not so clear what to do when both exist....
Here what we know:
0) Tasks without due dates but with start dates are needed.
1) Due dates need to be sacred; the only way to change a due date is to
Change it.
2) Recurrence should recurr Due Dates not Start Dates because humans
think in due dates and the GUI feels wrong if you recur start dates;
symantecally from a language standpoint it seems like start dates should
recurr. The program was changed to recurr start dates a while back by
community request, call it a failed experiment. It will be changed,
because in real world practice the majority of users don't like it the
way it is now; because iteraction with the GUI doesn't produce the
obvious expected outcomes.
3) If you have recurrence, you have to check if the due date is "in or
out" of the pattern. If the due date is out of pattern you have to warn
the user to make a correction; annoying but necessary. Auto correction
is sloppy at best.
4) Lead time complicate things. Leadtime = due - start. So you have to
define which are the locked attributes. If you are locking due dates;
then it seems to make sense to "lock" lead times as we. If that is the
case then if you move the due date then the start date has to move too
in order to preserve the lead time. In order to have free floating like
you are asking you'd have to float the leadtime or eliminate it.
Floating the lead seems to work ok on single instance tasks but a pain
in the arse on recurring tasks, becuase you defer a recuring instance
and poof the lead time is all fouled.... I've been playing with various
iterations of this and locking due date and lead time seems to have the
best balance.