Open Hobadee opened 11 years ago
I'd been thinking an overhaul in this area would be a good idea too. Haven't had a chance to think about precise specifics yet though.
I've been thinking about this more recently. I think IITC has now reached a point where a single conversion won't be possible. Instead, I recommend an upgrade path. A new API should be designed and formalized. It should then be implemented along-side the existing plugin method. Plugins can then slowly convert to the new API without breaking anything. Once all plugins are changed over, the old interface can be deprecated.
To what ends? Couldn't a lot of our woes be solved with a bit of documentation?
As this project grows, plugins will become harder to manage. As such, a more formalized API for them should be set.
A simple "registerPlugin()" function which returns an object with the plugin name, version, and initializing function would go a long way. If something like this was implemented, users could list currently installed plugins and check for updates, and other plugins could search for conflicts or requirements to enable or disable additional functionality. A function like this could also be easily extended in the future without breaking backwards compatibility.
Edit: I know this would require a decent sized overhaul to properly implement this, but it's better than requiring a massive overhaul later.