For simple projects, the built-in sequence works fine to order tasks, but for more complex projects, using the
project_plan module seems like a logical way to go. But in that module, the
predecessor domain of siblings (currently implemented as
('parent', '=', Eval('parent', -1)) is just too limiting to be useful.
I propose that a predecessor or successor could be any work within a single project tree (i.e. has a common ancestor in the same project). This should include any sub-projects (but probably should not descend into tasks within the sub-projects).
This would give the flexibility to organize a project tree around one logic and plan the project around another.