macnificos/broadway-bundle
Symfony bundle for Broadway event sourcing that wires command and event buses, event stores, read models, and sagas into the container, reducing boilerplate when building CQRS and event-driven PHP applications.
Architecture fit — poor, with a fundamental mismatch. The package is a Symfony bundle, not a Laravel package. Its entire value proposition is Symfony-specific: a Bundle subclass consumed by Symfony\Kernel, DI extension classes that load YAML/XML service definitions, and auto-registration of Broadway console commands via FrameworkBundle. Laravel has no bundle concept — it uses Illuminate\Support\ServiceProvider and its own container, event dispatcher, and command registration. While Laravel shares individual Symfony components (HttpFoundation, Console, Process), it does not boot bundles. Consequently, zero percent of this package's code is executable in a Laravel application. The only reusable asset is the upstream broadway/broadway library it wires together, which can be adopted directly.
Integration feasibility — low for the package, moderate for the concept. To use Broadway under Laravel you would write a bespoke ServiceProvider reproducing what this bundle does: bind EventStore, EventBus, CommandBus, EventStream, serializer, and read-model repositories into the container, plus tag console commands. That is a day or two of work, and none of it can be lifted from this repository without translation from Symfony DI semantics. The bundle therefore adds a dependency without reducing integration effort.
Technical risk — high. Compounding signals:
| Signal | Observation | Implication |
|---|---|---|
| Stars / dependents | 0 / 0 | No production validation, no community triage |
| Last release | 2019-08-26 | ~6 years stale; predates Symfony 5/6/7 and PHP 8 |
| License | MIT | Permissive, so forking is legally viable |
| Scope | Thin glue layer | Little unique IP to salvage |
The 2019 release implies PHP 7.x constraints and Symfony 3.4/4.x era DI configuration. Under PHP 8.1+ you should expect deprecation noise at best and hard constructor/type failures at worst; under modern Symfony the bundle would not compile at all. For a Laravel host, Composer may still resolve the package (Symfony bundles are ordinary libraries), producing a false sense that integration succeeded while nothing is wired.
Key questions for the requesting team:
broadway/broadway directly plus a first-party Laravel provider?spatie/laravel-event-sourcing, eventsauce/eventsauce, or patchlevel/event-sourcing — which ship Laravel-native or framework-agnostic integrations?Recommendation: reject. Do not introduce a zero-adoption, six-year-stale Symfony bundle into a Laravel codebase.
Stack fit — not applicable as shipped. There is no supported path to install this bundle into Laravel and have it function. Any "integration" is effectively a reimplementation. If the underlying pattern is desired, the correct target is broadway/broadway directly, or a Laravel-native alternative.
Migration path. Three viable routes, in order of preference:
spatie/laravel-event-sourcing (Laravel-first, active, Eloquent-backed projections) or patchlevel/event-sourcing (framework-agnostic, modern PHP). Lowest total cost, lowest risk, and a community to lean on.broadway/broadway, write an EventSourcingServiceProvider binding the event store, buses, and serializers, register commands in Console\Kernel, and define config/event_sourcing.php for driver selection (Doctrine DBAL, MongoDB, or in-memory for tests). Budget ~3–5 engineer-days including a spike.Compatibility. Expect conflicts on PHP (^7.x constraints likely), Doctrine DBAL (broadway/event-store-dbal pins older majors), and Symfony components beyond v4. Laravel 10/11 ships Symfony 6/7 components; the transitive graph will likely require --ignore-platform-reqs or a Composer conflict resolution exercise — both red flags in a production dependency.
Sequencing (if proceeding via route 2):
Maintenance — unacceptable as a dependency. Zero maintainers, zero dependents, no issue triage for six years. Any defect is ours to fix, and upstream will not merge or release. The upstream broadway/broadway project itself has low activity, meaning even the correct integration carries long-horizon maintenance exposure. This is a "you are the maintainer now" decision that must be made explicitly and staffed.
Support — none. No documentation beyond the repository README, no community channel, no security response process. For a package touching persistence, serialization, and event replay — the parts of a system most expensive to get wrong — this is a material gap. Security posture is unknown: stale transitive dependencies are a supply-chain liability that will accumulate CVEs with no patch path.
Scaling. Broadway's model scales acceptably along the write path (append-only streams, optimistic concurrency) but the operational ceiling is set by projection rebuild time, event store growth, and snapshot strategy — none of which this bundle addresses. The bundle contributes nothing to scaling; it is pure wiring. Adopting it neither helps nor hinders throughput, which reinforces that it carries cost without benefit.
Failure modes to plan for regardless of route:
Ramp-up. Event sourcing is a paradigm shift, not a library choice. Expect 2–4 weeks before a team is productive and considerably longer before it is reliable in production. Symfony-to-Laravel conceptual translation adds friction if anyone tries to follow this bundle's patterns or docs. Choosing a Laravel-native package substantially reduces both the conceptual and the mechanical ramp, and gives the team a maintained reference implementation to learn from.
Bottom line. The bundle is a stale, unused Symfony integration that cannot run on Laravel. Decline the dependency; if event sourcing is a genuine requirement, select a maintained Laravel-native library or integrate Broadway directly under first-party ownership.
How can I help you explore Laravel packages today?