@s_molinari wrote:
I agree with oddz. If you do avoid core code changes from your clients, then you end up with some form of API and changes to them are usually part of the upgrade. These API changes can be backwards compatible, but in some cases they aren't.
The other (less obvious) possibility is a metadata system for add-ons or plug-ins or custom modules or whatever you want to call them, which uses API versioning. This is something I am contemplating about myself and have yet to do any work on. I am also designing this system for a form of PaaS, so probably a whole other ballgame, than what you are doing. I am also not even so sure if PHP, with its share-nothing paradigm, could even support such an API versioning well. All things I am researching.
Scott