Hi Christoph,
Indeed, it is 2 levels and DAO is rather internal interfaces (SPI) while REST API and all the transport objects are external API.
What level of compatibility we suppose to have now?
My vision is that we have to be rather flexible here, it is always the compromise between current state of project "stability" (in the other words freedom of core developers) and potential implementors issues (ones who follow our front version).
So, I would say for the time being:
- we should consider as a REALLY special case lost of backward compatibility on API level between minor versions. I.e. we try to do our best to avoid any incompatibility in REST API, DTO etc and we must warn contributors and deprecate "old" things for some time (maybe 1 or 2 intermediate versions) before replace it.
- we basically do not consider any compatibility limitations for SPI level. I.e. we do our best to inform, discuss those things (well, not always but will try :) ) but do not postpone to release those changes. Well, we try to be reasonable here, for instance adding method to SPI (like we have now) is probably not the same sensitive change as changing method signature.
When our API/SPI become more "mature" we make the policy more strict.
Does that make sense for you?