There will always be a tension between guaranteeing backward compatibility for the existing user base and the efforts to maintain our codebase, enhance/refactor/innovate it. Considering the peculiar nature of OFBiz, I don't think that trying to define the areas that are part of the "public API" and then guarantee backward compatibility only for them, will resolve this tension. In fact there may be cases in which the "public API" should change in a non-backward compatible way such as: * the cost of maintaining a backward compatible feature is too high for our community (or there is not enough interest in the active community in maintaining it) * the change is required to fix a flaw or a security vulnerability * some fundamental (and important to the community) architectural change may not be backward compatible * etc...
Apart from this, even the definition of "public API" for OFBiz is troublesome considering for example that potentially any OFBiz service can be used by "client" code and as a consequence in theory our community should never change the behavior (or remove) a service. In an ideal World, our community would have infinite resources and would be able to innovate and maintain our codebase while at the same time guaranteeing backward compatibility for all the users... in our reality we have to take the best decisions case by case. Potentially any change will impact someone and we should accept this; our community is also here to support and provide advices to users facing issues during migrations. I don't think it is possible or even meaningful to ask that any change/innovation must be backward compatible. This doesn't mean that we should not care at all about backward compatibility because there are changes that may have a large impact while not being so relevant for the innovation. There are cases (like the one that triggered this conversation) that may involve some community discussion because it is difficult to figure out if the cost (in terms of pains for our users) is worth the gain (in terms of better/cleaner code): sometimes these discussions can be frustrating but if we all try to stay open (to the other point of view), positive, flexible, patient I am sure we will cope with them. Just my 2 cents Jacopo
