friendsofvictoire/title-widget
friendsofvictoire/title-widget is a lightweight Laravel/PHP package for reusable, configurable title widgets. It helps compose page titles from parts, apply separators or suffixes, and render consistent headings and browser titles from views with minimal setup.
Architecture fit — poor, and mis-scoped. Despite being filed under a Laravel/PHP package evaluation, friendsofvictoire/title-widget (FriendsOfVictoire/WidgetTitleBundle) is a Symfony bundle, not a Laravel package. It targets the Victoire CMS (a Symfony 2/3-era CMS) and plugs into Victoire's widget rendering pipeline, Symfony's DI container, and Twig. It exposes no Laravel service provider, no Illuminate contracts, no config publish tags, and no Blade views. There is no architectural seam through which it can attach to a Laravel application.
Integration feasibility — effectively zero as-is. The functional surface is a "title" widget: a configurable heading rendered into a CMS page. That is a text field plus a template. The only realistic integration is conceptual: read the bundle to understand how Victoire modeled a title widget (configurable tag level, text, style options), then reimplement in Laravel as a Blade component plus a Filament/Nova field or a page_blocks row. Effort for the reimplementation is measured in hours, not days — which is precisely why pulling in an unmaintained dependency is unjustifiable.
Technical risk — high and non-mitigable.
| Signal | Reading |
|---|---|
| Stars: 1, Dependents: 0 | No community, no downstream validation, no de facto usage pattern |
| Last release: 2017-05-03 | ~8 years unmaintained; Symfony 2.8/3.x are long EOL |
| Score: 0.035 | Composite health score confirms abandonment |
| Upstream | Requires Victoire CMS core as a transitive dependency — a heavy, equally stale framework |
Concrete hazards: PHP version ceilings (likely ~5.6|~7.0) that will block Composer resolution on PHP 8.2/8.3, Symfony 4+ API breakages in any code path we touch, Twig deprecation churn, and unpatched CVEs in the transitive Victoire/Symfony tree. Installing it puts an EOL framework into our dependency graph to obtain a heading tag.
Key questions for the requester:
title string column plus a heading template does not?Recommendation: reject as a dependency; retain as a reference read only.
Stack fit — none. Our stack is Laravel on modern PHP. This package assumes Symfony DI, Victoire's WidgetBundle base classes, and Twig. There is no shared runtime, no shared autoload contract, no shared view layer.
Migration path — extract, don't adopt. Two viable paths, both of which avoid the dependency:
blocks table with type, payload (JSON), and order, rendered through a Blade component (<x-block.title :level="2">). Configurable tag level and text are validation rules, not framework features. Estimated 1–2 days including tests.Compatibility. Composer constraints will conflict with Laravel 10/11 dependency sets on both php and symfony/* axes. Even a --ignore-platform-reqs install would autoload classes that reference Victoire namespaces absent from our tree, yielding runtime ClassNotFoundError at the first widget render.
Sequencing.
Maintenance. As-is: unbounded and unowned. An abandoned 2017 bundle cannot receive upstream fixes; every future PHP or Symfony upgrade becomes our problem to patch in a fork we did not want. In-house reimplementation: ~50 lines we own outright, with normal test coverage.
Support. Upstream is a dormant org repo with a single star and no dependents — no issue triage, no maintainer responsiveness, no documentation beyond a README. Internal support would rest entirely on whoever read the source, i.e. a single point of failure.
Scaling. Runtime cost of the widget itself is negligible (string interpolation into a template). The real scaling concern is dependency-graph weight: pulling Victoire CMS to render a heading expands the attack surface and upgrade burden by orders of magnitude relative to the feature delivered. Compute scaling is a non-issue; organizational scaling is the problem — every engineer who touches the fork pays a context tax for zero differentiated value.
Failure modes.
Ramp-up. Learning the functionality is minutes — it is a title field. Learning the Victoire/Symfony 3 idiom required to maintain a fork is days, spent on a stack we do not otherwise run. The cost-to-value ratio inverts badly: high ownership cost, near-zero differentiated capability.
Bottom line for the portfolio: treat friendsofvictoire/title-widget as documentation, not a dependency. Score 0.035 with zero dependents and an eight-year release gap is a clear no-adopt signal, and the Symfony-vs-Laravel mismatch makes it a categorical misfit regardless of health.
How can I help you explore Laravel packages today?