typo3/cms-backend
The TYPO3 CMS backend package supplies the core administrative interface and framework: backend modules, user and group management, authentication, routing, layouts, and UI components for editors and administrators. It is a foundational system extension for extending TYPO3 backend functionality.
typo3/cms-backend is the system extension that provides TYPO3's backend shell — module registration (Configuration/Backend/Modules.php), backend routes and Ajax routes, PSR-15 middleware stacks, and the toolbars/menu machinery. Any decision about building a custom back office on TYPO3 is effectively a decision about this package.mfa.provider, fal.file_renderer), Services.yaml autowiring, #[AsEventListener] attributes, and a dual container (full Symfony DI plus a failsafe container for the installer). This shapes hiring profiles, code review standards, and partner expectations.Feature-*.rst changelogs scoped to the in-development version from Typo3Version::BRANCH, a shrinking PHPStan baseline — tell you upgrades are governed and predictable. Budget for a major-version migration lane every cycle rather than reactive patching.DataHandler remains the central write path and TCA/schema (TcaSchemaFactory) govern content modeling, decisions like workspaces, versioning, and localization are architecture-level, not plug-in features. Plan them before UI work, not after.runTests.sh suites (unit, functional on SQLite/Postgres/MariaDB, Playwright e2e, CGL, PHPStan, integrity/RST gates) mean CI cost and QA process are known inputs, not unknowns.Consider it when:
typo3/typo3 monorepo, not an independently consumable library. Zero dependents confirms it is a component, not a product.declare(strict_types=1), constructor injection over GeneralUtility::makeInstance(), events over legacy hooks, TcaSchema over $GLOBALS['TCA'].review.typo3.org, Redmine at forge.typo3.org, no pull-request-style flow.Look elsewhere when:
SystemEnvironmentBuilder → Bootstrap::init() → Core\Http\Application, plus the failsafe-container wiring rules for anything that must run in the installer.Build/Scripts/runTests.sh as the only sanctioned entry point, Resources/Public/JavaScript|Css as build output that must never be hand-edited, mandatory RST changelogs per user-facing change).For executives: TYPO3's backend is an enterprise CMS administration layer with a proven governance model — versioned deprecations, enforced changelogs, and a documented test matrix spanning multiple databases and browser-level end-to-end tests. It is a platform commitment, not a library purchase. The commercial question is not "should we adopt this package" but "should we standardize on TYPO3 for our editorial back office." If yes, this package delivers the admin surface at effectively zero build cost and shifts our spend to content modeling and custom modules. The material risk is licensing: GPL-2.0 is copyleft and constrains how we distribute or embed the result — legal sign-off is required before commitment.
For engineering leadership: This is a core system extension inside a monorepo, with zero external dependents and a Gerrit/Redmine contribution path. It brings a full Symfony DI container, PSR-15 middleware pipeline, PSR-14 event system, and a typed TCA schema layer — modern, conventional PHP architecture. Costs are real but bounded: container-only tooling (runTests.sh with -b docker), a functional test suite that provisions a real instance per case and is therefore slow, mandatory RST changelog entries for user-facing changes, and unique timestamp-based exception codes enforced by an integrity check. Upside is that architecture decisions are constrained in useful ways: constructor injection over service location, events over legacy hooks, TcaSchema over globals. Expect a one-major-version upgrade lane each release cycle; the deprecation policy (@deprecated since v<current>, removed in v<next> plus E_USER_DEPRECATED) means breakage surfaces early and loudly rather than at deploy time.
For the delivery team: Treat this as an inherited platform, not a greenfield dependency. Before writing a module, read the extension shape (Classes/, Configuration/, Resources/{Private,Public}, Tests/{Unit,Functional}, ext_localconf.php, ext_tables.sql), understand that frontend assets compile from Build/Sources/TypeScript/<ext-key>/ into generated Resources/Public/ output, and remember the failsafe container: any service needed by the install tool — including Fluid ViewHelpers used in installer templates — must be wired manually in Classes/ServiceProvider.php because autowiring does not apply there. Also note the label reference syntax <extkey>.<resource>:<identifier> applies from v14 onward; backports to 13.4 need the legacy LLL:EXT: form.
How can I help you explore Laravel packages today?