Ashley
It has some trade-off about choosing a self-contained or a dependency plugin.
- plugin designer might create a new plugin(or behavior) copied from official plugin because that he/she want to add only one action into this official plugin.
- A self-contained is easy to use for beginner. But user might need to learn the same interface once again at other plugin (or behavior).
For example, user had already known how to use official function object, then user need to learn the same interface in 3rd plugin once again.
- the plugin will become very large if it duplicate all of dependency and hard to maintain, more bugs.
<img src="http://i1081.photobucket.com/albums/j352/rexrainbow1/Tilebased_zps6bef913f.jpg" border="0" />
Here is my board plugin system. I agree that it has a learning gap for beginner. Each plugin has it's own job, user might learn a new plugin member easily when he/she already understand how to use the core plugin(board plugin).
Dedicate condition/action/expression is more easy to read at some cases. In these case, I will chose to have a dedicate ACE.
Edit:
I thought a well-organization architecture is the most important thing. Easy to maintain, more readable, and more extend-able.
A self-contained plugin might not be the best choice sometimes, imo.