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

Updater Bundle Laravel Package

swp/updater-bundle

A Symfony bundle for managing application updates: organize sequential update routines, run them from a command or admin interface, and track which updates have already been applied so deployments stay predictable.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • Architecture fit: Fundamentally misaligned with a Laravel target. swp/updater-bundle is a Symfony bundle from the Superdesk Web Publisher lineage — it depends on Symfony's kernel, bundle registration (AppKernel / bundles.php), the Symfony DI container, YAML configuration trees, and bin/console commands. Laravel uses service providers, Artisan commands, facades, and a different container lifecycle with no bundle concept. The only portable asset is the thin ahilles107/updater core (fetch → extract → copy), which is small enough to read in an afternoon and re-implement cleanly. TPM framing: this is not a dependency decision, it is a pattern-sourcing decision.
  • Integration feasibility: Low as a direct install; moderate as a reference. There is no Laravel auto-discovery, no published config/updater.php, and no Artisan entry point. Composer constraints likely target PHP/Symfony versions from the Superdesk era and will collide with Laravel's pinned Symfony components (console, process, filesystem, finder). A realistic spike is one to three days: read the core library, document its update sequence, kill the spike. Do not budget for a production integration without a legal and security gate in front of it.
  • Technical risk: High and concentrated in two areas. First, security: an updater is a deliberate remote-code-execution channel into production — it writes application files, mutates vendor code, and triggers migrations. An archived, 1-star, 0-dependent package in that path means no security patches, no CVE triage, and nobody to escalate to. Second, license: AGPL-3.0 with the §13 network clause is a blocker for most commercial SaaS and closed-source on-prem distribution, since network users must be offered source. Even a Laravel re-implementation that copies structure is low risk, but any direct code reuse pulls the license obligation along.
  • Key questions: Is ahilles107/updater genuinely framework-agnostic and independently maintained, or does it also depend on Symfony components? What artifact format does it expect (zip? tarball? manifest schema)? Does it verify checksums or signatures before extraction, or does it trust the download URL? Does it support atomic release directories, or does it overwrite in place? Is there any rollback path? What filesystem permissions does it require, and can it run as a user separate from the web worker? Is the AGPL exposure limited to the bundle, the core library, or both? Who on our team would own a fork, and what is the exit plan if we need a security patch in year two?

Integration Approach

  • Stack fit: The bundle itself: no fit for Laravel. The core library: usable only as an isolated, wrapped component behind an internal interface, and arguably not even then — vendoring two or three classes into a Laravel service is cleaner than maintaining a Symfony-to-Laravel shim over unmaintained code. The strongest fit is as a design reference for a first-party UpdateApplication Artisan command.
  • Migration path: There is no migration path onto this bundle for a Laravel app — reframe it as a build decision. If self-hosted update capability is on the roadmap, the sequence is: define the manifest schema (version, channel, url, sha256/signature), define the release layout (immutable releases/<version>/ plus a current symlink), define the execution order (down → backup → extract → migrate --force → optimize:clear → restart queues/opcache → up), then implement with Http::get(), ZipArchive or Storage, and Process. Deployer, Envoyer, or a hosted distribution product are the "buy/different-adopt" comparators to price against that build.
  • Compatibility: If anything is evaluated at all, validate the PHP version matrix, Symfony component version conflicts against Laravel's pins, autoload behavior, filesystem write permissions on the target directories, and behavior under config:cache. Add an explicit AGPL compliance review before any code — bundle or copied — enters the repository. Confirm whether the manifest endpoint is reachable through the customer's proxies, TLS interception, and redirects, since that is the most common real-world failure.
  • Sequencing: (1) Legal/license review and threat model of the updater surface — do these first, they are the cheapest kill switch. (2) Dependency and constraint audit to confirm the Laravel incompatibility formally. (3) Time-boxed spike reading ahilles107/updater and writing a one-page spec of the update sequence we would build. (4) Decision gate: build in-house, buy a distribution platform, or defer. (5) If build: implement with signing, atomic swap, and rollback, then stage-test migrations, cache clears, queue restarts, and permission scenarios. TPM recommendation: no-go on adopting the package; yes to a short spike that harvests the design.

Operational Impact

  • Maintenance: Unacceptable as a dependency. Archived means zero upstream fixes, zero security patches, and zero compatibility updates — every future PHP or framework bump becomes our problem. Adopting it implies forking the bundle, owning a Symfony-to-Laravel bridge, and carrying AGPL compliance indefinitely. That is a permanent headcount tax for a few weeks of saved work.
  • Support: Effectively none. One star and zero dependents means no ecosystem validation, no Stack Overflow trail, no third-party production stories, and no upstream maintainer to escalate a production incident to. Any adoption implies fully internal ownership: runbooks, on-call coverage, and an incident response plan written before first deploy.
  • Scaling: The updater does not scale horizontally — it converts a deployment into a coordination problem. Multi-instance fleets need a distributed lock or a maintenance window, a shared artifact store, version-skew detection, and staged rollout controls. For self-hosted customers on single nodes this is manageable; for our own clustered environments, containers plus a registry eliminate the entire problem class and remain the better architectural answer.
  • Failure modes: Partial file writes leaving a half-updated tree; extraction succeeding but migrations failing; permission errors against hardened directories; stale opcache serving old code after a successful swap; broken autoload from a partial vendor update; version skew across instances mid-rollout; absent rollback forcing manual restore from backup; downtime during the window; and supply-chain compromise via a hijacked manifest URL or unsigned artifact. Severity is high across the board because the failure surface is the production application itself, not a peripheral service.
  • Ramp-up: High for the artifact, low for the pattern. Engineers would need Symfony bundle conventions, the core library's actual behavior, the Laravel adaptation layer, and the security and rollback controls — a poor return on learning investment for abandoned code. Ramp-up on the concept is a day: read the core, write the manifest spec, and build the minimal signed, atomic, rollback-capable updater scoped to our own release format. That is the leverage this package actually offers a TPM — a free anatomy lesson and a concrete artifact for the build-vs-buy-vs-adopt conversation, not a line in composer.json.
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.
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names