Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Domain Event Bundle Laravel Package

gpslab/domain-event-bundle

Symfony bundle that integrates gpslab/domain-event with the framework, making it easy to publish and handle domain events through Symfony services and configuration. Lightweight setup for decoupled domain events in Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

Unchanged. The package is a Symfony bundle, not a Laravel package. It ships a Bundle subclass, a DI extension, and compiler passes wired to Symfony's kernel and EventDispatcher. Laravel has no equivalent extension point, so the packaging layer remains dead weight in our stack and the useful parts would have to be re-hosted. The underlying pattern — record domain events on aggregate roots, collect them, release them after the transaction commits — is framework-agnostic and genuinely valuable. It is the bundle glue, not the concept, that misfits. v2.3.1 does nothing to alter this: no Laravel service provider, no auto-discovery, no dispatcher bridge.

Integration feasibility

Feasible but non-trivial, and still mostly a rewrite rather than an install. A Laravel integration requires a custom ServiceProvider, re-implementation of the compiler-pass logic (tagging and collecting subscribers) using Laravel's container tagging or explicit registration, and an adapter that forwards released events into Laravel's dispatcher or queue. The piece actually worth evaluating remains the framework-agnostic core (gpslab/domain-event); the bundle would largely be replaced by ~150 lines of our own code. The 2.3.1 fix (Doctrine ORM >= 2.7 compatibility) is irrelevant to us — we would drive the core from Eloquent models, not Doctrine entities.

Technical risk

High, marginally reduced at the margins.

  • Corrected from the prior assessment: the project is not dormant. v2.3.1 lands on an active 2.3.x line with tagged releases and a compare link between versions. The "last release 2021-05-24, roughly four years without activity" characterisation no longer holds and should be retired from our decision record.
  • New: GitHub Actions CI is now configured and building from GitHub CI (bugs #13–#15). This is a real, if modest, positive: it means a fork can be validated against upstream's own test suite rather than reverse-engineered, and the workflow file is a starting point for extending the matrix to our PHP and Laravel versions.
  • Still 14 stars, 0 dependents, effectively single-maintainer. No security policy.
  • Still no evidence of compatibility with PHP 8.2/8.3 or Laravel 10/11. The release notes touch Doctrine, CI, and README badges — nothing in the PHP/platform constraint area. Composer platform constraints are still likely to conflict, pushing us toward --ignore-platform-reqs or a fork.
  • Still no Laravel package discovery and no published Laravel integration path.
  • Release cadence is unknown. Five patch-level maintenance commits in one release after a long gap is a sign of life, not evidence of a sustainable schedule.

Key questions

  1. Can we take the core library only and drop the bundle entirely? If yes, the risk surface shrinks considerably.
  2. Does the core run clean on PHP 8.2+ and our target Laravel version, or does it rely on legacy patterns (untyped properties, deprecated Symfony contracts)? 2.3.1 does not answer this — the CI matrix needs inspecting directly.
  3. Does the CI added in #13–#15 run across modern PHP versions, or only the legacy range the bundle targets? This determines whether the new CI is reusable for our fork.
  4. What is the maintainer's roadmap beyond 2.3.x? Is there intent to support PHP 8.x formally, or is this maintenance-only?
  5. What is our exit plan if the repository is archived or the maintainer disappears?
  6. Do we need out-of-process delivery (queues) or is synchronous in-process dispatch sufficient? This determines whether the package's commit-release semantics are even in scope.
  7. Are the release-after-commit semantics correct for our database/queue combination, or will we need to override them?
  8. Is there any feature here materially better than a thin in-house implementation over DB::afterCommit plus Laravel events?

Integration Approach

Stack fit

Poor as delivered, unchanged by a patch release. A Laravel-native approach — an aggregate trait that buffers events plus DB::afterCommit plus Laravel's dispatcher — covers the same ground with zero third-party risk. Adopt this package only if the spike demonstrates a concrete capability we would otherwise spend more than a sprint building.

Migration path

Treat the package as a design reference first, dependency second. Run a timeboxed spike installing the core library in a scratch Laravel app, then port the bundle's compiler-pass behavior into a ServiceProvider that tags subscribers and wires them to Event::listen. If we proceed, vendor a pinned fork under our own namespace so we control PHP/Laravel compatibility and can patch without waiting on upstream. Pin to a specific 2.3.x tag rather than a branch — the release line is now moving, so an unpinned constraint is a live risk where it previously was not.

Compatibility

Inspect composer.json platform requirements before anything else; still expect Symfony 4/5 and PHP 7.x constraints. Assume a fork and a patched release are required. No auto-discovery; registration will be manual. 2.3.1's Doctrine fix suggests upstream is maintaining its Symfony-side integration rather than modernising its platform floor — the two are not the same thing, and we should not read the former as progress on the latter.

Sequencing

  1. One-week spike against the core library only, on our actual PHP/Laravel versions.
  2. Review the new GitHub Actions workflow and determine whether it can be extended to our version matrix in the fork.
  3. Build-vs-adopt decision with a written cost comparison against the in-house alternative.
  4. If adopting: fork, add CI against our version matrix, tag an internal release.
  5. Integrate behind an internal DomainEventDispatcher interface so the implementation is swappable.
  6. Roll out to a single bounded context, measure, then generalise.

Operational Impact

Maintenance

Still effectively self-maintained, but no longer in an abandoned-repository sense. Upstream is responsive enough to merge community-reported bugs and to maintain CI. That materially improves one thing: fork patches now have a plausible path upstream, and the added CI gives us a test harness to inherit. It does not reduce our compatibility-patching burden. Budget two to four engineer-days per quarter for compatibility patches around PHP and Laravel upgrades, plus unplanned work if a transitive Symfony or Doctrine dependency breaks. Fork ownership must still be assigned to a named team, not left implicit. Do not treat 2.3.1 as evidence of a support commitment — it is a maintenance release, not a roadmap.

Support

Negligible community support. Fourteen stars means no Stack Overflow corpus, no tutorials, no third-party write-ups. Onboarding still depends on reading source directly, and knowledge concentrates in whoever ran the spike — a real bus-factor risk. The new CI shortens the distance to a working local build, which helps slightly, but it is not documentation.

Scaling

Default behavior is synchronous in-process dispatch. Scaling to queues or multiple consumers requires our own adapter, and the commit-ordering guarantee must be enforced explicitly. At higher event volumes, buffering events on aggregates increases memory pressure per request; long-running workers need explicit flush boundaries. No change here.

Failure modes

  • Silent event loss when the release hook is not invoked on a code path.
  • Duplicate dispatch if release is called twice (e.g., retries, nested transactions).
  • Events firing on rolled-back transactions if commit-ordering is misconfigured.
  • Composer constraint breakage on any framework upgrade.
  • Downgraded: abandonment with no successor. The repository is active as of 2.3.1; the realistic risk is now slow-motion stagnation — maintenance releases without platform modernisation — rather than archival.
  • New: an unpinned dependency now carries drift risk, since the 2.3.x line is producing releases. Pin explicitly. All are detectable, but every safeguard is test coverage we must author ourselves; none ships with the package.

Ramp-up

Conceptual ramp-up is low — domain events are well understood by most mid-level engineers. Practical ramp-up is high because there is still no documented Laravel path: expect one to two weeks for a mid-level engineer to reach productive use, including the adapter and the test harness. The new CI removes perhaps a day of build-environment archaeology; the integration work is unchanged.

Recommendation

Do not adopt the bundle. The v2.3.1 release changes our risk narrative but not our decision: it is a Doctrine compatibility fix plus CI housekeeping on the Symfony side, with no Laravel surface and no platform modernisation. Correct the record — the project is maintained, not abandoned — and timebox a one-week evaluation of the core library, defaulting to a thin in-house implementation behind an internal interface. The pattern is worth borrowing; the package is still not worth depending on.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib