Essentially, we need a plugin system that:
- Allows third-party developers to extend the functionality
- Allows users to easily find, install, update, and configure plugins through the application
- Allows developers to include images and css that are made available in the public folder
- Allows developers to denote PHP library dependencies for their Plugins
- Allows developers to denote Plugins that their Plugin depends on
- Allows for the organization, procuring, and proper versioning of all the third party resources
In other words, if I am a developer, I should be able to write a plugin, specify which third-party libraries I need, specify any other plugins I depend on, specify any JavaScript libraries I depend on, and finally, declare which CSS and image resources I have.
As a user, I would expect the system to be able to show me available plugins, let me install those plugins, and take care of everything the plugin needs to operate.