Episerver breaking changes policies
There has been a small confusion regarding our breaking changes policies, and some developers understand it as "Episerver promises to not introduce breaking changes in non-major releases".
That's not entirely correct. We promises to not introduce public APIs breaking changes in non-major release.
What do we consider as public APIs:
- The API is not in an internal assembly. Some assemblies, such as EPiServer.Commerce.Internal.Migration.dll, are "internal assemblies", therefore any types, methods or properties from such assemblies are not public APIs.
- The API is not in an Internal namespace.
- The API is not marked with a special summary, usually "This class is intended to be used internally by EPiServer..."
Those APIs are considered "internal", even if the type itself is public. We reserve the right to change such APIs when needed.
For public APIs, we follow the sematic version rules strictly. Any breaking changes will require a major version. In most of the cases, we obsolete the APIs first, and will leave them there for at least 12 months before actually removing them (in a major release). In extraordinary circumstances, we can remove non obsolete APIs in a major release, but if and only if it's non avoidable.