ibexa/core-persistence
Part of Ibexa DXP, this package delivers the core persistence layer: database-backed storage implementations, SPI handlers, and data access abstractions that underpin content, user, and configuration management across the platform.
Assessment: this is not a Laravel package, and should not be treated as one. ibexa/core-persistence is an internal component of Ibexa DXP (formerly eZ Platform), extracted into its own repository so that the Ibexa monorepo can version its storage layer independently. The README makes the intended consumption path explicit: install Ibexa DXP, and this package arrives as a transitive dependency. There is no standalone usage documentation, no example bootstrap, and no public API surface described independently of the parent platform. Any evaluation framed as "can we drop this into a Laravel app" should begin with the assumption that the answer is no, and then test whether that assumption holds.
Architecture fit — poor for a Laravel codebase. The package implements Ibexa's persistence SPI: Doctrine DBAL-backed gateways, handlers, and mappers that operate on Ibexa value objects (Content, ContentInfo, Location, Section, URL). It presumes Ibexa's schema, its migration set, its Symfony service container wiring, and its SPI contracts as the caller-facing boundary. Laravel's persistence idiom is the opposite: Eloquent models, active-record-style repositories, and a query builder over Illuminate\Database. There is no shared abstraction to bridge them. Installing this package into a Laravel project yields classes you cannot call meaningfully, because the collaborators they depend on are defined in ibexa/core and the surrounding bundles, not here.
Integration feasibility — technically installable, practically inert in isolation. Composer will resolve it, but you inherit a dependency graph pinned to specific Doctrine DBAL and Symfony major versions, plus a schema that only Ibexa's migrations know how to create. The realistic integration is not package-level but platform-level: run Ibexa DXP as a content service and consume it from Laravel over REST or GraphQL. That is a fundamentally different decision with a fundamentally different cost profile.
Technical risk — concentrated in licensing. The package is dual-licensed: Ibexa Business Use License (requires a paid DXP subscription) or GPL-2.0 copyleft. GitHub reports NOASSERTION, which means automated scanners (Snyk, FOSSA, Black Duck) will flag it and block the build until a human clears it. GPL-2.0 imposes distribution obligations and is incompatible with Apache-2.0 and GPL-3.0 downstream; the BUL path avoids copyleft but converts an OSS dependency into a recurring commercial line item. This is a legal gate, not an engineering one, and it should be resolved before any POC code is written.
Adoption signal is effectively zero. Three stars and zero dependents confirm the package is not independently consumed — it ships inside Ibexa. The opportunity: 64.49 score should not be read as demand; it is almost certainly a function of low existing adoption (little competition for a niche) rather than unmet market need. The 2026-08-20 last-release date is also anomalous relative to the copyright range and should be verified directly on Packagist before it is used in any planning artifact — treat it as a data-quality flag, not a maturity signal.
Key questions for the review:
Stack fit — recommend against package-level integration. Ibexa is Symfony-based; Laravel is a different framework with its own container, routing, ORM, and migration system. Two realistic patterns exist, and neither vendors core-persistence into the Laravel app:
If the underlying need is simply "a robust repository abstraction over Doctrine DBAL," use Doctrine DBAL directly. It is MIT-licensed, has a large support base, and does not require adopting a DXP.
Migration path. If a pilot is warranted, scope it as a platform evaluation rather than a dependency trial: stand up Ibexa DXP (or its trial), model two or three real content types, expose them via GraphQL, and have a Laravel service read and render them. Timebox to four to six weeks with a written go/no-go gate at the end. Do not begin by adding this package to composer.json in an existing Laravel application — that path produces integration debris and no usable signal.
Compatibility. Expect version friction at the Composer level: conflicting Symfony majors, Doctrine DBAL majors, and PSR implementations between the Ibexa stack and a modern Laravel install. In the sidecar model this friction disappears, because the two applications share nothing but an HTTP contract. Confirm the PHP version matrix against your platform baseline (Ibexa's supported PHP range typically trails the newest Laravel requirements).
Sequencing.
Maintenance. Release cadence is dictated by Ibexa's DXP release train, not by your roadmap. The package moves with the monorepo, so its changelog is only meaningful in the context of a platform upgrade. Major DXP versions have historically required content migration work; budget for that as a recurring, non-optional cost. Subscribers get vendor patches and security advisories; GPL users rely on community channels that, at three stars and zero dependents, are effectively empty.
Support. There is no community safety net. The only credible escalation path is a commercial contract. Internally, expect near-zero existing expertise: Ibexa/eZ Platform is a niche skill market, and contractor rates and lead times reflect that. Any key-person dependency here is a material risk.
Scaling. The persistence layer is built for large content repositories on MySQL/MariaDB and will scale further than most teams need. But the baseline operational footprint is heavier than a Laravel application's — you are running and tuning a full DXP, not a library. Note also that core-persistence is storage only: search, caching, and HTTP delivery are separate components. Adopting this package does not give you a content platform; it gives you the bottom slice of one.
Failure modes to plan for:
NOASSERTION will fail CI policy gates.Ramp-up. High. Allow four to eight weeks before an engineer is independently productive with Ibexa's SPI, content model, and migration tooling — and accept that very little of that knowledge transfers back to Laravel work. The POC should be budgeted as exploratory with a genuinely open outcome; on current evidence, the most probable and least expensive conclusion is to decline the package and address the underlying requirement with a Laravel-native or API-first alternative.
How can I help you explore Laravel packages today?