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

Event Base Laravel Package

rundum/event-base

rundum/event-base gives Laravel developers a lightweight foundation for event-driven code, offering base event classes and helpers for defining, dispatching, and organizing domain events consistently across an application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is described as "basic events for symfony projects"; our platform is Laravel. The two are not strangers — Laravel composes symfony/* components internally, and its dispatcher is PSR-14 adjacent — but nothing here will auto-wire into Laravel's container, EventServiceProvider, queue, or broadcasting layer. All glue is ours to write.
  • The name and description imply base abstractions (event contracts, a bus/dispatcher base, possibly aggregate or store interfaces) rather than a working event-sourcing runtime. That is the more defensible thing to depend on — thin contracts age better than frameworks — but it also means the delivered value may be roughly equivalent to interfaces we could author in an afternoon.
  • Overlap with native Laravel is substantial: Illuminate\Contracts\Events\Dispatcher, model events, observers, queued listeners, Event::fake(), broadcasting. Any adoption needs a stated reason why the built-in mechanism is insufficient.

Integration feasibility

  • Mechanically easy: Composer-installable, MIT, presumably PSR-4. The friction is architectural, not procedural.
  • Expect to supply: service provider, container bindings, config (if any exists upstream), test helpers, and an adapter to Laravel's dispatcher. None of that ships with the package.
  • Zero dependents and zero stars means no external evidence it resolves against current Symfony 6/7 or PHP 8.2+. Constraint compatibility must be verified by hand, not inferred.

Technical risk

  • Maintainer/vendor risk — high. Single publisher, no visible community, no downstream consumers. This behaves like a private library published to Packagist; its roadmap is not ours to influence.
  • Abandonment risk — high. Last release 2024-08-15 with no activity signal. A future Symfony major or PHP minor can strand us mid-upgrade.
  • Contract stability — medium. "Base" packages are frequently pre-1.0 with evolving interfaces. Pin exactly and plan to vendor.
  • Security surface — low but unconfirmed. Likely a pure abstraction layer with no I/O. Confirm there is no event deserializer; deserialization of event payloads is a classic gadget-chain vector.
  • Dual-bus fragmentation — medium. If it expects Symfony\Contracts\EventDispatcher or its own interface, we inherit a second event system beside Laravel's, splitting observability and debugging.

Key questions

  1. Who maintains this (Rundum/hepisec), and is it an internal base published publicly or a genuine OSS effort with a roadmap?
  2. Does it depend on symfony/event-dispatcher contracts, PSR-14, or a bespoke interface? This determines whether it composes with Laravel's dispatcher or competes with it.
  3. Is there a persistence/event-store component, or is dispatch purely in-memory? Persistence materially changes risk, replay, and storage obligations.
  4. What is the serialization strategy for events (native PHP, Symfony Serializer, JSON)? This governs queue compatibility and replay.
  5. Are the public surfaces interface-first and semver-versioned, or are we binding to concrete classes?
  6. What does CI cover — PHP version matrix, Symfony version matrix, coverage percentage?

Integration Approach

Stack fit

  • Poor-to-conditional. Laravel's event system is already a superset of "basic events." The package only earns a place if we specifically want framework-agnostic domain-event contracts that could later be lifted out of Laravel into a shared kernel consumed by a Symfony service — a real but narrow scenario.
  • If the underlying goal is domain events or eventual event sourcing, the honest comparison set is spatie/laravel-event-sourcing, ecotone, prooph, or plain Laravel events. All have adoption, documentation, and a support path. This has none of the three.

Migration path

  • Do not rip out existing events. Define our own port — App\Domain\EventBus — and adapt either Laravel's dispatcher or this package behind it. That keeps the decision reversible at near-zero cost and is the single highest-leverage move regardless of which way the spike lands.
  • If adopted: add a service provider in app/Providers, bind the contracts, and register an adapter that delegates publication to Illuminate\Contracts\Events\Dispatcher so queued listeners, Event::fake(), and existing observability keep working.

Compatibility

  • Verify the PHP constraint and Symfony component versions against our Laravel version first — a conflicting constraint blocks install outright and ends the evaluation cheaply.
  • Confirm no global helpers, no static event registries, and no singleton mutable state. Static registries break Octane and --parallel testing.
  • Check Octane/Swoole safety explicitly: long-lived workers turn a static registry into a correctness bug, not a style issue.

Sequencing

  1. Timeboxed spike, one engineer, one day. Clone, read the entire source (it is small), run its test suite, attempt install in a throwaway Laravel app.
  2. Decision gate. If it is contracts-only and trivially reproducible, write our own ~100-line equivalent and drop the dependency. If it encodes non-trivial behavior (store, upcasting, projections), proceed.
  3. Adapter plus contract tests in a non-critical bounded context — audit log or notifications.
  4. Single-module production pilot for one sprint, with the adapter as the only integration point.
  5. Fork and vendor before any rollout beyond the pilot.

Operational Impact

Maintenance

  • We become the de facto maintainers. Budget for vendoring via a path repository or private fork so we can patch without upstream. Steady-state cost is modest (~1–2 engineer-days per year), but any PHP or Symfony major becomes unplanned work on someone else's schedule.
  • Treat every upstream version bump as a code review, never a blind composer update.

Support

  • No vendor, no community, no Stack Overflow corpus, no CVE feed, no security advisories. Internal documentation becomes the sole support artifact — write the ADR and the adapter's contract tests at adoption time, not after the first incident.
  • Absolute onboarding cost is low (small surface) but conceptual cost is persistent: two event mechanisms invite the recurring question "which bus do I publish on?" That ambiguity is the real tax.

Scaling

  • In-process dispatch scales exactly as Laravel's does; no new scaling dimension is introduced. Note the package will not make listeners asynchronous for you — synchronous work on the request path remains our responsibility.
  • If events are ever persisted or replayed, store growth and replay volume become our operational burden with no upstream tooling to lean on.

Failure modes

  • Silent divergence: domain events published on one bus never reach listeners on the other. Mitigate by making Laravel's dispatcher the single transport and the package purely a vocabulary layer.
  • Queue incompatibility: events lacking serialization support fail as queued jobs; ShouldQueue may not be honored by the package's own bus.
  • Framework dead-end: an eventual Laravel/Symfony major renders the package uninstallable, discovered at the worst possible moment — mid-upgrade.
  • Octane state leakage: static registrations surviving across requests.
  • Abandonware drift: no patches, low likelihood, non-zero impact.

Ramp-up

  • Roughly half a day for a mid-level engineer to read the source and the adapter. The onboarding doc must state plainly: this is a domain-event vocabulary, not a replacement for Laravel events.
  • Require explicit sign-off from the platform/architecture lead, since adoption creates a long-lived abstraction boundary that outlives the package itself.

Recommendation: Do not take a runtime dependency on a zero-star, zero-dependent, single-maintainer package unless the spike reveals non-trivial behavior we would otherwise rebuild. Default to reproducing the contracts in-house behind an EventBus port — preserving the architectural intent, eliminating the vendor risk, and keeping the option to adopt upstream later if it demonstrates sustained releases and third-party adoption.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels