Diagram Scene Example
This gives another detail which I've forgot:
3.5 The connectors/routing engine. I put it 3.5 and not 4 because isn't mandatory in the first phase, even if it would be very nice to have it. The connectors are special shapes (usually arrows, lines) which connect two or more 2D shapes and when one from these shapes move, the connected (glued) line (connector) will adjust itself (rotates, grows etc.) in order to keep the link with the moving shape. Usually all these features are provided by a 3rd party diagramming framework.
However, I want to stress a danger here:
We/Pierre must be careful here in order to not produce (as community) an unbalanced, distorted program.
If we provide an (e.g.) powerful painting engine bolted on a browser with bugs, instabilities and other blatant problems we will have a great percentage of 'bounces' - ie. users which will be attracted by the distorted (big) feature (the nice painting module, in our example) but they will be pushed away by the frustration caused by the lack of eg. drag & drop between tree branches, problems (bugs) with on-disk (file) management (move, rename etc.) and with DB management (too many to post them here) will ultimate turn away from the program and will promote a negative impression about the program which will undermine the Brand's reputation.
OTOH, the added complexity will make fixing the existing bugs even harder and the users more impatient seeing that their outstanding annoyances are neglected.
That's why I think that we must continually take in account, as one of our main priorities, the balance, the harmony, the equilibrium of the program.
Disclaimer: Yes, if XnView MP would have a "Paint plugin" as well as a RAW non-destructive processing engine I would use them immediately.