We promise to be backward compatible for classes and methods annotated with @api within MINOR and PATCH updates to our components. As changes are introduced, we annotate methods with @deprecated. The methods are removed only with the next MAJOR component version.
Let’s recap what we had with Magento 1 – where everything is an extension points. All the protected mess and so on.
We can’t make changes in contract – all changes suppose to extend existing contract.