ibexa/core
Ibexa Core is the foundation of the Ibexa Digital Experience Platform, delivering the content repository, public PHP APIs, and MVC layers needed to build and manage enterprise content applications on Symfony.
Architecture fit
ibexa/core is not a drop-in library — it is the core bundle of Ibexa DXP, a full-stack Symfony 7.4 application framework. It ships its own kernel integration, DI compiler passes, SiteAccess matching/routing layer, RBAC engine, field-type registry, Public API (PAPI), and persistence built on Doctrine DBAL. Every one of those layers competes with, rather than complements, Laravel's container, router, and Eloquent/DBAL stack. Installing this into a Laravel composer.json is not a realistic integration path; the only defensible fit is a headless boundary: Laravel consumes Ibexa's REST/GraphQL PAPI as a content service, with Ibexa running as an independently deployed application. Treat it as a third-party platform integration, not a package adoption.
Integration feasibility Three options, ranked:
ibexa/core inside Laravel — not feasible; reject early to avoid a wasted spike.Technical risk
NOASSERTION is a hard gate. Ibexa core is distributed under GPL-2.0 for the community edition with a commercial tier for enterprise functionality. GPL-2.0 copyleft is incompatible with closed-source distribution, and NOASSERTION means automated scanners cannot clear it. Legal review must complete before engineering commits.v4.6.x (LTS, currently through .27+) and v5.0.x are maintained in parallel, and 5.0.7 explicitly merged the 4.6 branch. Choosing a track is a product decision with an EOL consequence, not an engineering one.5.0.7 bumped Symfony to 7.4 LTS and CI to PHP 8.3/8.4. This forces our own runtime baseline even though the deployments are separate.issues.support.ibexa.co, ibexa.atlassian.net).Key questions before approval
NOASSERTION resolve to, per package, for the specific composer dependencies we would require? Any commercial entitlement needed?4.6.26/5.0.4) in scope? If so, who hosts the model?Stack fit Laravel remains system of record for application domain data; Ibexa is system of record for content. The boundary is a thin Laravel adapter package that wraps PAPI endpoints with typed DTOs, HTTP caching, retry/backoff, and circuit breaking. Keep it isolated behind an interface so the backing CMS can be replaced without touching domain code. Authentication via JWT/OAuth to Ibexa; caches and queues stay separate per system.
Migration path
ibexa:io:migrate-files for binaries; validate dedupe behavior given the deterministic image hashing change in 5.0.7.Compatibility
PHP 8.3/8.4 on both sides is workable. Symfony 7.4 inside Ibexa vs. Laravel's Symfony constraints is a non-issue because the systems are separately deployed — only the HTTP contract crosses. Pin the Ibexa minor version and run an integration suite against a staging instance; do not float ^5.0.
Sequencing License → spike (2–3 weeks, read path only) → go/no-go → build → migrate → cutover. Do not let the vendor procurement and the engineering spike run serially beyond the spike.
Maintenance
The patch cadence is high — 5.0.4 through 5.0.9 landed in a short window, with Symfony and PHP baseline bumps inside minor releases. Each bump requires a staging regression run against our adapter contract, not just a dependency update. Budget recurring upgrade capacity, not a one-time integration cost.
Support Primary support is vendor-gated. There is no public issue tracker or community answer base for this repo. For anything business-critical, a paid support entitlement is effectively mandatory; otherwise we absorb breakage on our own timeline.
Scaling Cost centers are persistence, search, and object storage. Solr/Elasticsearch and the external storage backend are new operational components with their own runbooks and on-call surface. Embedding-based search adds a model-hosting or third-party inference dependency — an additional latency and failure boundary. Caching must be reasoned about per SiteAccess, which is a concept the Laravel team will not have prior intuition for.
Failure modes
ProxyDomainMapperFactory, CriteriaConverter, SerializerFactory) specifically to avoid early connection initialization — misconfiguration here manifests as boot-time connection storms.5.0.7 altered _access_control_attributes propagation, so authorization tests belong in the adapter contract suite.5.0.8) — test them before trusting the admin surface.Ramp-up This is not learnable in a sprint. A Laravel-fluent team needs roughly 4–8 weeks to become productive on read paths alone, and considerably longer for content modeling, field types, and permissions. Recommendation: contract or hire one Ibexa specialist to own platform and upgrades, paired with an internal Laravel engineer who owns the adapter — rather than training a team from zero on a stack this wide.
How can I help you explore Laravel packages today?