Important: What a project may build on is now named 

Description 

Until now nothing said which classes of the academic extensions a project may rely on. Projects subclassed controllers, replaced them with a copy, and replaced repositories and services through an XCLASS - and each of those broke on releases that did not mention the class at all.

The new chapter Extension points of this manual states the public API of every academic extension and of category_types: the events and the types they hand to a listener, the interfaces, the services and classes a project names in its configuration or its code, two controller traits, the domain models, and the templates, settings, TypoScript and TSconfig keys, label keys and CategoryTypes.yaml. Everything listed carries the @api tag in its docblock, and a release that breaks or deprecates any of it says so in a Breaking or a Deprecation changelog entry.

Everything the chapter does not list is not public API, whether it is final or not, and may change in any release without a changelog entry. That includes every repository and every plugin controller. The plugin controllers are all final in 3.0.

Subclassing or XCLASSing a class is unsupported, listed or not, with one exception: a subclass of a domain model, which is how a project adds fields to a model. The configuration check of academic:upgrade:check therefore reports an XCLASS of a domain model as a notice instead of a warning, and no longer fails because of it. Every other XCLASS is reported as before.

Impact 

Nothing changes for a visitor or an editor. An installation that extends a domain model through an XCLASS sees a notice instead of a warning from the upgrade check, and the command exits with 0 if nothing else is found.

A project that XCLASSes a class the chapter does not list keeps working as before, but should move that code to the events the chapter names before the next update. A subclass or an XCLASS of a plugin controller no longer loads in 3.0, see the Breaking entries of academic_bite_jobs, academic_partners, academic_programs and academic_projects.