liverbool/media-bundle
liverbool/media-bundle is a Symfony bundle for managing media assets and uploads, offering storage integration, image processing, and flexible configuration for attaching files to application entities. It helps developers add reusable media handling to Symfony projects without building upload and fi...
The single most important TPM lever here is premise correction. Despite the "Laravel/PHP package" framing, liverbool/media-bundle (repo dos-media-bundle) is a Sylius/Symfony bundle, an early extraction of the old Sylius MediaBundle. A TPM's first job is not to score the code but to strike the option from the Laravel evaluation set before any engineering time is spent. That is a scheduling and prioritization decision, not an engineering one, and it belongs in the architecture review record with a one-line rationale: wrong ecosystem.
Architecture fit — poor even in its native ecosystem.
Integration feasibility — near zero (Laravel), low (modern Sylius). Expect composer.json to constrain PHP to the 5.5–7.0 range and Symfony/Sylius to 2.x/3.x and 0.x. Under PHP 8 and Symfony 6/7 the graph will not resolve; forcing it surfaces removed container APIs, deprecation flooding, and mapping drift at cache warmup. A TPM can convert this into a cheap, decisive kill test: authorize a half-day spike to run composer require liverbool/media-bundle --dry-run against the target constraints. A failed resolve is the deliverable, and it closes the ticket with evidence.
Technical risk — severity: critical.
Key questions a TPM must force to closure.
How a TPM leverages this: as a documented "do not adopt" decision that narrows the option set, feeds the supply-chain risk register, and reframes "free package" as a multi-week internal ownership cost.
Stack fit — do not integrate; redirect to a supported equivalent. The TPM deliverable is the mapping, not the code:
| Context | Recommended path | Why |
|---|---|---|
| Laravel | spatie/laravel-medialibrary + laravel-filesystem/Flysystem + intervention/image |
De facto standard, actively maintained, PHP 8+ |
| Modern Sylius | Sylius core media + LiipImagineBundle (filters/thumbnails) + VichUploaderBundle (uploads) + Flysystem |
First-party or supported; current PHP support |
| In-house build | Read this bundle as reference architecture only — never vendor it | Prior art on entity/asset organization |
Migration path (only if inherited in a legacy Sylius install). A TPM owns the ticketing and sequencing, not the diff:
composer.json.Compatibility. Assume incompatible until proven otherwise; the dry-run spike is the gate. Do not authorize a forced install.
Sequencing — the roadmap-level insight. Schedule removal ahead of any framework upgrade. If this package stays pinned, it becomes the blocker that stalls an otherwise independent PHP/Symfony/Laravel modernization. Owning that ordering is squarely a TPM responsibility: it converts an opaque "upgrade risk" into a named, dated piece of work.
Effort. Small codebase, no docs, no tests — roughly one engineer-day to read it end to end. Migration cost is dominated by data backfill and call-site rewrites, not comprehension, so estimate against the touchpoint inventory, not the line count.
Maintenance — you would own 100%. No upstream, no maintainer to escalate to, no release cadence. Every PHP version bump, deprecation fix, and security patch lands permanently in your backlog. Frame this to stakeholders against an amortized maintained dependency: the "free" bundle is a recurring internal cost with no vendor to bill.
Support — effectively none. Zero stars and zero dependents means no community, no issue triage, no third-party documentation. Internal knowledge is a single point of failure; if one engineer holds it, that is a bus-factor entry in the risk register.
Scaling — unknown and unverified. Expect a naive 2016 implementation: synchronous file writes on the request path, local-disk assumptions, no CDN or object-storage abstraction, no queue-backed derivative generation. Assume it must be fronted by object storage and async processing before any meaningful traffic, and budget that as a prerequisite rather than a follow-up.
Failure modes to watch for (each maps to a risk-register line item).
Ramp-up. Low time-to-read, high time-to-confidence. No docs, no test suite acting as specification, no way to distinguish intentional behavior from bug. Estimate one engineer-day to read, but a multi-week tail before anyone can change it safely — and that confidence never fully arrives without a test suite you would have to write from scratch. Communicate it to stakeholders as acquisition cost is low, ownership cost is open-ended.
Overall recommendation. Score as unsuitable and record it. The ecosystem is wrong for the stated Laravel context, the project is abandoned, and the capability is superseded by maintained first-party or de facto standard libraries in both Sylius and Laravel. If already in a codebase, classify it as technical debt with a funded removal ticket, not as a dependency to be managed — and sequence that removal ahead of the next framework upgrade.
How can I help you explore Laravel packages today?