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.
What this actually is. typo3/cms-backend is not a standalone PHP package — it is one system extension (sysext) extracted from the TYPO3 CMS core monorepo. It contains the backend application shell: the module registration layer (Configuration/Backend/Modules.php), backend route and Ajax route definitions, the backend PSR-15 middleware stack, the backend user/session surface, toolbars, and the shared backend UI scaffolding. It has no meaningful life outside a booted TYPO3 instance.
Architecture fit — no fit with Laravel. This is the headline finding for a TPM. TYPO3's backend is inseparable from TYPO3's own runtime: Core\Package\PackageManager for extension discovery, Core\Core\Bootstrap compiling a Symfony DI container, a separate failsafe container assembled by hand from Classes/ServiceProvider.php files for the install tool, Http\MiddlewareStackResolver driven by per-extension RequestMiddlewares.php, and Core\Schema\TcaSchemaFactory for the table/field layer. None of that exists in Laravel. There is no adapter layer, no service provider bridge, no HTTP kernel shim. Pulling cms-backend into a Laravel app yields an unresolvable dependency graph, not a package.
Integration feasibility. Two viable readings of "leverage":
typo3/cms-core requires it; a standard Composer TYPO3 project gets it for free. The "Dependents: 0" figure is an artefact of this: nothing declares a direct dependency because the transitive path through core is universal.Technical risk.
Resources/Private/Language/*.xlf, English-only upstream), and the asset build (Build/Sources/ → Resources/Public/, which is generated output and must not be hand-edited).Key questions for the stakeholder conversation.
Stack fit. Effectively binary. On a TYPO3 stack the fit is perfect and requires zero work; on Laravel, Symfony, or a bespoke PHP stack there is no incremental path. Do not plan a "partial adoption". The realistic integration unit is the TYPO3 application, and cms-backend is a fixed internal of it.
Migration path (if TYPO3 is the chosen platform). You extend, you do not fork:
Configuration/Backend/Modules.php and routes in Routes.php / AjaxRoutes.php inside a dedicated sysext under typo3/sysext/ or, preferably, packages/.Configuration/TCA/Overrides/<table>.php rather than editing TCA in place.Core\EventDispatcher, #[AsEventListener]) — hooks are legacy and should not appear in new code.RequestMiddlewares.php with explicit before/after ordering keys; ordering collisions are the most common integration defect.Services.yaml autowiring. GeneralUtility::makeInstance() is legacy and shrinking.install/Classes/ServiceProvider.php or the failsafe container breaks. This is a classic, non-obvious failure.Compatibility. Each TYPO3 major pins an official PHP range and a supported database matrix (SQLite, MariaDB, MySQL, PostgreSQL). Treat the core's composer.json branch-alias as the source of truth. Changelog RST under typo3/sysext/core/Documentation/Changelog/<version>/ is the authoritative migration reading list; the extension scanner (checkExtensionScannerRst) flags removed APIs you actually call.
Sequencing for a TPM.
Maintenance. Upstream is well-run: sprint cadence, public Gerrit review, published deprecation policy, RST changelogs for every user-facing change, and a shrinking-not-growing PHPStan baseline. Your maintenance burden is therefore predictable but non-zero and periodic — a major upgrade every couple of years with a defined removal list. Budget it as a recurring workstream, not a one-off.
Support. No commercial SLA attaches to the package itself. Community support runs through TYPO3 Slack, Forge (Redmine, JSON API queryable) and Stack Overflow; the TYPO3 GmbH offers commercial arrangements separately. For an enterprise deployment, assume you need either an in-house TYPO3 specialist or a partner contract — the package alone is not a support story.
Scaling. The backend is an admin surface, not the traffic path. Throughput is governed by PHP-FPM workers, database, and the caching configuration — not by cms-backend. The genuine scaling risks are operational: DI container compile time and cache invalidation on deploy, and heavy Extbase-based modules doing unbounded list queries. Neither is a reason to reject the package; both are things to instrument early.
Failure modes to design for.
before/after anchor.typo3temp/var/cache and you run old code with new files.PackageManager state invalid leaves you in the install tool, which is exactly when the failsafe container matters.Ramp-up. Steep, but unusually well-documented for onboarding: five mechanisms explain most of the codebase (packages/bootstrap, DI, PSR-15 middleware, PSR-14 events, TCA/schema), and the repository ships contributor-grade guidance including a single container-based test dispatcher (./Build/Scripts/runTests.sh) that removes most environment yak-shaving. A competent PHP developer with Laravel or Symfony background should reach productive contribution in roughly four to six weeks, with the real cost being TCA and DataHandler fluency rather than PHP itself.
Recommendation. Treat typo3/cms-backend as an architectural commitment to TYPO3, not as a package to be evaluated on its own merits. If the programme is already on TYPO3, it is free, well-maintained, and low-risk beyond the upgrade cadence. If the programme is on Laravel, the correct decision is to stop here and evaluate Laravel-native admin frameworks — the score's low absolute value (21.09) alongside a high opportunity signal (35.86) is a discoverability and packaging artefact, not evidence that this is an under-used asset waiting to be unlocked.
How can I help you explore Laravel packages today?