1 - predicate implementation
2 - state machine implementation
3 - external interface (e.g. http, xml-rpc, carrier pidgeon)
4 - storage of currently active tasks
5 * Can likely to be something quite simple like mongodb
6 * Have a unique task id
7 * Have a few objects below that:
12 Note: ONLY currently active tasks. anything else can be archived / dumped to
13 logs once a task is complete! (preferably as JSON or something). If people
14 want access to old task data, it would be better to have it as part of a
15 seperate database rather than cluttering the design of the ephemeral data
17 - Replace DeprecatedDependencyMagic with a TaskDependencyManager
18 This can know about internal structure of tasks, and might be able to offload
19 some of the magic from TaskFactory
21 - Clean up many, many things