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

Migrations Bundle Laravel Package

smartteam/migrations-bundle

A Symfony bundle for managing database migrations, helping you version, organize, and apply schema changes consistently across environments. It integrates migration tooling into your Symfony workflow so teams can track database evolution alongside application code.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Verdict: Reject as a dependency. The package is an abandoned 2018 fork with zero adoption signals, and — critically — it is a Symfony bundle, not a Laravel package. The stated stack (Laravel/PHP) and the actual artifact (a Doctrine/MigrationsBundle-style Symfony extension) do not intersect, so the evaluation resolves to a stack-mismatch rejection before code quality is even considered.

Architecture fit

  • The artifact is a Symfony bundle: kernel-registered, wired through Symfony's DI container, and dependent on Doctrine's migration tooling. It expects a Doctrine ORM/DBAL-managed schema.
  • Laravel's native migration system (artisan migrate, Eloquent, its own schema builder) is a completely separate architecture. There is no idiomatic way to graft a Symfony/Doctrine bundle into a Laravel application, and doing so would mean adopting Doctrine alongside Eloquent — a re-platforming decision, not an integration task.
  • Fit is only non-zero in a legacy Symfony 2.8/3.x/4.x app already using Doctrine Migrations.

Integration feasibility

  • Low friction in exactly one scenario: a pre-existing Symfony app from the same era. Everywhere else, the answer is "not applicable."
  • The description ("Mantainance project of old ZenstruckMigrationsBundle") indicates a private-utility fork kept alive by a single agency (SmartTeamTN), not a product. The typo is a useful hygiene signal.
  • 0 stars / 0 dependents means there is effectively no installed base, so no reported issues, no compatibility fixes, and no community pressure to resolve them.

Technical risk

  • Abandonment risk: realized. Last release 2018-01-18 — roughly seven years of drift across PHP 7.x→8.x, Symfony 4→7, and Doctrine 2→3/4. Expect composer resolution conflicts and runtime deprecations.
  • Supply-chain risk: elevated. A low-visibility organizational fork with no observable provenance, no CI, and no audit trail invites the question of whether the diff against upstream is only composer.json metadata or includes unvetted code changes. "No known CVE" here means "unexamined," not "safe."
  • Correctness risk in migration tooling specifically. Migration generators diff metadata against schema; a stale generator run against newer Doctrine metadata can emit empty or wrong diffs, and a wrong diff means destructive DDL in production. This class of package carries asymmetric downside.
  • Compatibility risk: blocking. Even in a Symfony shop, the pinned constraints likely exclude the current LTS.

Key questions

  1. Is the target application Laravel or Symfony? If Laravel — stop; this is a mismatch, not a trade-off.
  2. What is the actual diff versus zenstruck/migrations-bundle — composer.json only, or functional code? Can it be reviewed in an hour?
  3. Which PHP / Symfony / doctrine/migrations / doctrine/dbal constraint ranges are declared?
  4. Does a maintained successor exist upstream, or has Zenstruck deprecated the bundle outright?
  5. Is there any test suite or CI configuration? What is the license, and does it permit vendoring?
  6. Who inside SmartTeam owns this fork, and what is the bus factor? What is their incentive to respond to an issue from us?
  7. What capability does this bundle add that DoctrineMigrationsBundle does not already provide natively today?

Integration Approach

Stack fit

  • Laravel: zero fit. Laravel's migration system is native, well-maintained, and framework-integrated. There is no gap this bundle fills.
  • Legacy Symfony + Doctrine: marginal fit, and only if the bundle's added commands are actually used. The base capability (schema diffing into migrations) has since been absorbed into DoctrineMigrationsBundle proper.

Migration path

  • If a legacy Symfony app genuinely depends on it, do not add it as a Composer dependency. Vendor the source into src/ (license permitting), register the services in our own services.yaml, and own the file set. The bundle is small enough that vendoring is cheaper than dependency governance.
  • If the decision surface is still open, prefer the paved road: migrate to DoctrineMigrationsBundle and delete the requirement. Treat this as a de-risking/removal project, not an adoption project.

Compatibility

  • Run composer why-not smartteam/migrations-bundle <version> and composer why-not php against the target runtime before any code is read. This is a 15-minute check that likely ends the evaluation.
  • Explicitly test on the oldest and newest PHP versions in the support matrix; deprecation fatals on 8.x are the most probable breakage.

Sequencing

  1. Day 0 — stack triage (1 hour). Confirm Laravel vs. Symfony. If Laravel, close the ticket with a written rationale.
  2. Day 1 — provenance review (0.5 day). Diff against upstream; read every changed file; confirm license.
  3. Day 2 — constraint probe (0.5 day). Attempt install into a throwaway branch of the real app; record resolution failures.
  4. Gate. If installation requires pinning unrelated dependencies or downgrading Doctrine, reject and schedule the DoctrineMigrationsBundle migration instead.
  5. If accepted (legacy only). Vendor the code, add it to our CI matrix, tag it from our own registry, and record an owner in the service catalog.
  6. Exit criterion. No external Composer requirement on this package within one quarter; it either becomes vendored-and-owned or is removed.

Operational Impact

Maintenance

  • We inherit the maintenance burden entirely. Upstream is dormant; there is no one to file a bug with and no release train to ride. Realistic ongoing cost is low in hours but non-zero in attention — it surfaces every time a dependency bump fails and one engineer has to rediscover why.
  • Vendoring converts an invisible supply-chain liability into a visible line of code we own. That is the safer failure mode.

Support

  • No documentation beyond a README, no community, no Stack Overflow corpus, no vendor support. Onboarding requires reading the source — tractable given the small surface area, but it is tribal knowledge by construction.
  • If the original agency relationship lapses, the package is orphaned with our name on the dependency graph.

Scaling

  • Not a throughput concern; it is a build-pipeline concern. Migration tooling sits in the critical path of every deploy and every CI run. Stale generators interacting with evolving schema metadata produce failures that are intermittent, environment-specific, and expensive to diagnose.

Failure modes (ranked by likelihood × impact)

  1. Composer resolution failure after an unrelated dependency bump — high likelihood, low-to-medium impact, recurring tax.
  2. PHP/Symfony deprecation fatal on a runtime upgrade — medium likelihood, medium impact, discovered at the worst time (mid-upgrade).
  3. Unpatched vulnerability in a transitively pulled Doctrine component — low likelihood, high impact, permanently unpatchable by us except via vendoring.
  4. Incorrect or empty generated migration leading to unintended DDL — low likelihood, severe impact; the failure is silent until production.
  5. Bus factor — knowledge concentrated in whoever performed the original 2018 integration; medium likelihood, medium impact.

Ramp-up

  • Code comprehension is a day. The expensive part is the judgment: each engineer must independently re-derive why we own this and what it would take to leave. That cost is paid repeatedly unless the decision is written down.
  • Recommendation: if any legacy dependency remains, attach a one-page ADR stating the framework mismatch, the rejection rationale for Laravel, the vendoring decision for Symfony, and the removal date. The most valuable output of this evaluation is the documented "no."
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