Let prepare base for plugins-based application system:
directly relation between plugins should be forbidden (so it should be forbidden to use first plugin from second plugin by importing his modules or methods)
plugins should be easily attached/removed from application
plugins that need some things from each-others should communicate by ServiceLocator or similar pattern
plugins should have easily maintained information about his relations (what services need to work or what others plugins)
Let prepare base for plugins-based application system: