The following is a definition of what we consider to be "public API". Public API is protected by semantic versioning.
New public API will not be introduced in patches, but can be introduced in minor and major releases.
Existing public API will not be removed or altered in patches or minor releases, but can be removed or altered in major releases.
These are explicitly included in our definition of public API (unless excluded below):
signatures of functions/methods that are considered public API
$this->extend('someExtensionHook', $someVariable);
)These are explicitlynot public API:
private static
properties which aren't annotated with@internal
)@internal
Other entities might be considered to be included or excluded from the public API on case-by-case basis based on how likely it is to cause problems during an upgrade.
API from third party dependencies may implicitly be incorporated into our definition of public API if:
When defining a return type or a parameter type, it is preferable to use a more generic interface rather than a specific class. Third party dependencies that are used for internal purposes and are not explicitly exposed via the Silverstripe CMS public API are not covered by semantic versioning and maybe substituted without notice.