smartbox/core-bundle
Core bundle for Smartbox Laravel applications, providing shared services, utilities, and integrations to standardize common functionality across projects. Extend and configure core components quickly while keeping your codebase consistent and maintainable.
Framing correction (unchanged, still blocking): smartbox/core-bundle is a Symfony bundle, not a Laravel package. The -bundle suffix, Smartbox Group provenance, and Symfony bundle layout point to kernel integration (Bundle class, DependencyInjection/*Extension, config tree). v1.8.0 does not change this — a JMS Serializer visitor is registered through Symfony's DI/compiler-pass machinery, reinforcing it.
Architecture fit — low, now slightly better characterised. The v1.8.0 note is the most informative artifact we have: it tells us the bundle (a) depends on JMS Serializer as a first-class integration, and (b) carries custom serializer visitors, i.e. it customises the serialization/deserialization pipeline rather than merely providing domain services. That is a deeper integration point than a plain service library: visitors hook into graph navigation and are sensitive to the serializer's internal API. Consequences: (a) Laravel remains a poor fit — no JMS Serializer convention exists there, and a visitor is not portable to Laravel's serialization stack; (b) on Symfony, fit is plausible but the integration surface is now known to include serializer internals, which are the most version-sensitive part of the stack (JMS Serializer 1.x/2.x → 3.x changed namespaces, attribute handling, and visitor/graph APIs).
Integration feasibility — still gated on constraints, now with a second constraint axis. Composer resolution must satisfy both Symfony and JMS Serializer. The fact that a new visitor is being added in v1.8.0 tells us the package is actively developed against some JMS Serializer line, but not which. Two readings, and they point in opposite directions:
Determining which is a composer.json read, not a spike: check the jms/serializer constraint, the php constraint, and the Symfony majors. composer require --dry-run still answers the go/no-go cheaply.
Technical risk — high, with two revisions:
Key questions — revised, one new:
composer.json say now — php constraint, Symfony majors, and which jms/serializer major? Does v1.8.0 raise any of these, or only add a class?src/? Enumerate the public API and the capabilities we would consume. Does the serializer customization matter to us at all, or is it incidental to the parts we want?Provisional verdict — softened from "do not adopt," not cleared. The prior verdict rested partly on abandonment; that leg is weakened. The remaining legs are intact: no support relationship, no ecosystem signal, deep serializer coupling, and unknown runtime compatibility. Verdict becomes: do not adopt as a third-party dependency without a constraint check, and even then the realistic path remains fork-and-own. Re-run the go/no-go as a composer.json read (hours), not a fresh evaluation.
Stack fit. Decision tree unchanged: Laravel → no integration path worth building (mine for domain patterns only). Symfony 5.4 LTS on PHP 8.1 → conditional trial, and the new visitor must be exercised explicitly. Symfony 6/7 → assume incompatible until a fork proves otherwise. Add: if we do want the serializer behaviour, note we may be able to reimplement a plain-text visitor natively in far less code than adopting the bundle — a small, contained piece of logic is a poor reason to take the whole dependency.
Migration path. Still net-new adoption, so the risk is exit risk. Unchanged and now more important given deep serializer coupling:
Compatibility.
composer.json first: php, symfony/*, jms/serializer. This is now the single highest-value artifact.composer require --dry-run and composer why-not smartbox/core-bundle <version> against our real root composer.json; capture the lockfile diff — pay attention to which JMS Serializer major the solver picks.Sequencing (timeboxed, fail-fast):
composer.json, license, bundled-asset audit. Hours, not days. Do this before anything else now; the release makes it cheaper than the prior plan assumed.If step 1 or 3 fails, close the initiative and record the finding. Stopping now costs hours to days.
Maintenance. Effective ownership still transfers to us in practice, but the characterisation changes from "abandoned" to "single-track upstream." A release exists, so there is someone; there is still no published support commitment, no cadence, no LTS statement, and no evidence of compatibility engineering (the release is a feature, not a PHP/Symfony upgrade). Assume our upgrade cycle is not on their roadmap. Budget the same fork-and-modernize effort — constraint relaxation, deprecation fixes, CI, test backfill — but with a new line item: ownership of a JMS Serializer visitor written against an API we did not choose, which must be re-validated at every serializer upgrade. Recurring tax at each framework and serializer upgrade cycle.
Support. Unchanged and still the dominant red flag. No SLA, no maintainer responsiveness commitment, one-sentence release notes with no migration guidance, documentation no deeper than a README. A single recent release does not constitute an escalation path. Bus factor remains effectively one, and that one is outside our organisation. Under incident pressure, the remediation path is still "our engineers read PHP they did not write."
Scaling. Unknown, must be measured. Two hot spots to watch, one new: inherited Smartbox data-access/caching assumptions (N+1 patterns in pricing/availability logic, synchronous remote calls, cache invalidation cadence tuned to their traffic), and now deserialization throughput — plain-text coercion in a visitor is per-payload CPU work on whatever path consumes it. Load-test that path explicitly if it sits anywhere near request handling.
Failure modes, ranked by likelihood:
Ramp-up. Engineers must read compiler passes, a config tree, and now a JMS Serializer visitor, plus whatever domain logic is encoded. Estimate 1–2 days for a senior Symfony developer to form a credible opinion during the spike; longer to become productive editing it. No tutorial corpus; onboarding is paid in source reading. Plan for the two engineers who do the spike to be the owners — knowledge will not distribute itself across a team with no documentation.
How can I help you explore Laravel packages today?