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

Module Bundle Laravel Package

modera/module-bundle

Modera Module Bundle provides a modular structure for PHP applications, letting you organize features into self-contained modules with configuration, dependency handling, and lifecycle hooks. It helps keep large codebases maintainable, reusable, and easier to extend.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — low, and the framing needs correcting. modera/module-bundle is a Symfony 2/3-era bundle, not a Laravel package. Its only real behavior is a Composer script handler that rewrites AppKernel::registerBundles() after install/update so newly installed bundles self-register. A Laravel application has no AppKernel, no equivalent hook, and therefore no production code path this package can occupy. The capability it provides — "install a package, have the app discover it" — is already native to Laravel via extra.laravel.providers and php artisan package:discover. There is no gap for this dependency to fill.

Integration feasibility — zero for direct adoption, meaningful only as reference. Last release 2016-06-13, archived, 0 stars, 0 dependents, score 0.015. It predates PHP 7 type declarations and modern PSR-4 conventions, will not satisfy Composer platform constraints on PHP 8.x, and has no branch targeting current framework versions. There is no maintainer, no release path, and no patch channel. Adding it as a dependency would be an unsupported-code audit finding for negative value.

Technical risk — high and asymmetric. The mechanism is invasive by design: source-code mutation of a kernel file at install time. That conflicts directly with reproducible builds and immutable containers, and it produces boot-time failure modes — the most expensive class, where the whole application fails rather than degrading. Zero downstream users means zero production validation and no community patch path.

Key questions for the requester:

  1. Is the target application Laravel or Symfony? If Laravel, the request is out of scope and should be re-scoped to "we need modular package registration."
  2. What is the business driver — third-party plugin extensibility, per-tenant feature modules, or internal monolith ergonomics? Each has a different solution and none of them is this package.
  3. If a legacy Symfony app is in scope, is it on Flex or pre-Flex? Flex supersedes this package entirely.
  4. What is that application's PHP upgrade horizon? If a PHP 8 migration is within 12 months, this is a blocker regardless of anything else.

TPM read: the value here is not the artifact, it is the validated requirement set — deterministic registration order, cache invalidation on install/remove, rollback on failed install, and no source mutation. Treat the repository as a requirements source for our own module story, budgeted as a reading exercise, not a dependency.

Integration Approach

Stack fit — none natively; map the intent instead. Every capability this bundle offers has a first-class Laravel equivalent with no third-party code:

Legacy mechanism Laravel-native equivalent
Composer-triggered injection into AppKernel extra.laravel.providers + bootstrap/providers.php + package:discover
Symfony Flex recipes / config/bundles.php Laravel package discovery (default since 5.5)
Modular bundle registration nwidart/laravel-modules, or an in-house ModuleServiceProvider reading a manifest/registry

Migration path. For a Laravel target, the "migration" is a decision not to add it: implement registration through a ModuleServiceProvider that reads a registry (config, DB, or deploy-time generated manifest) and calls $this->app->register(). For an inherited legacy Symfony app, the path is: inventory the dynamically injected bundles, codify them into a static config/bundles.php under Flex, remove the Composer hook, then verify with a cold-cache boot and cache:warmup.

Compatibility — blocking. Expect Composer platform refusal on PHP 8, incompatibility with Symfony 4+/Flex, and no forward-compatibility branch to pin to. There is nothing to vendor-patch toward a supported state.

Sequencing — spike, not a delivery item:

  1. Confirm stack (Laravel vs. Symfony) — half a day, resolves most of the ticket.
  2. If Laravel: close with the native-mechanism recommendation and file the requirement behind the existing package-discovery capability.
  3. If legacy Symfony: 2–3 day timeboxed spike proving a Flex-based replacement, then size removal as tech debt against the next release train.
  4. Gate: do not proceed past step 1 without an owning team and a named application.

Operational Impact

Maintenance — unbounded, unowned. Aarchived repository means the maintainer has explicitly disclaimed support: no security response, no CVE triage, no patched release. Any defect becomes permanently internal work. The code is small enough to fork, but forking converts a bad dependency decision into a permanent headcount line.

Support — reverse-engineering only. Zero stars and zero dependents means no issue corpus, no Stack Overflow trail, no peers with production experience. Onboarding is entirely source reading, and incident response has no external escalation path.

Scaling — not the constraint. The mechanism runs once at boot, so steady-state throughput, memory, and horizontal scale are unaffected. The cost concentrates in cold start: container image builds, deploy ordering, and cache warmup.

Failure modes to plan around:

  • Boot-time fatal error when a registered bundle class is absent — full outage, health checks red, no partial availability.
  • Autoloader divergence between --no-dev -o, --classmap-authoritative, and multi-stage Docker builds, producing environment-specific behavior.
  • Stale container cache or OPcache retaining a previous bundle list after deploy — "works locally, 500 in prod."
  • Silent registration-order changes that flip service override precedence, surfacing as wrong business behavior rather than an exception.
  • Inflated incident MTTR because implicit registration turns "where did this service come from?" into archaeology.

Ramp-up — low effort, unachievable confidence. Reading the source takes an afternoon; establishing that it is safe on a modern runtime does not have a realistic endpoint. That audit is not a good use of engineering time when the native alternative is a config array.

Recommendation: reject for adoption. Close as "not applicable to Laravel stack; superseded by Composer package discovery for Laravel and Symfony Flex for Symfony." The opportunity is in confirming the underlying modular-registration requirement and routing it to the native mechanism — which removes a dependency rather than adding an unmaintained one, and shows up as a positive line in the next architecture review rather than an audit exception.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource