kunstmaan/tagging-bundle
KunstmaanTaggingBundle adds reusable tagging to Symfony and Doctrine projects: attach tags to entities, manage tags in the admin, and query or filter content by tag. It integrates with Kunstmaan CMS bundles and provides a lightweight foundation for tag-based navigation and search.
Architecture fit — poor, with a naming caveat. Despite the prompt's framing as a "Laravel/PHP package," kunstmaan/tagging-bundle is a Symfony bundle, not a Laravel package. It is a thin integration layer that wires FabienPennequin/DoctrineExtensions-Taggable into the Kunstmaan CMS bundle family. If our target stack is Laravel (Eloquent, service providers, Blade), there is zero architectural fit — the package assumes Symfony's bundle registration, Doctrine ORM, and the Kunstmaan NodeBundle/PageBundle entity model. If our stack is a legacy Symfony 2.x Kunstmaan CMS instance, the fit is decent by construction, but only for that narrow context.
Integration feasibility — low. The package last released in April 2014, targeting Symfony 2.x and PHP 5.3–5.4-era idioms. Modern Symfony (5/6/7) and PHP 8.x will reject its service definitions, type hints, and deprecated Doctrine calls. The underlying DoctrineExtensions-Taggable is itself effectively superseded by stof/doctrine-extensions-bundle (which ships its own Taggable). So the package is two abandoned layers stacked: Kunstmaan glue on top of an unmaintained Doctrine extension. With 10 stars and 0 dependents, there is no observable production usage to borrow confidence from.
Technical risk — high. Specific hazards:
FabienPennequin/DoctrineExtensions-Taggable is not actively maintained; composer resolution against modern Symfony/Doctrine will likely fail or require aggressive replace/fork workarounds.LIKE-based, individual tags are unindexed, there is no referential integrity, and tag normalization (case/whitespace) is inconsistent.Key questions a TPM must answer before engagement:
spatie/laravel-tags or a custom polymorphic tag model. Legacy Kunstmaan/Symfony 2 → this package is a candidate but a decaying one.Stack fit. Treat this as a Symfony-only, Doctrine-only artifact. Under Laravel it is a non-starter: the bundle's service container wiring, annotation-driven entity config, and Kunstmaan-specific interfaces have no Eloquent analogue. Even under Symfony, fit is limited to Kunstmaan CMS deployments. Under a generic Symfony app, stof/doctrine-extensions-bundle's Taggable is the direct, maintained substitute — the Kunstmaan bundle adds little beyond CMS-specific entity hooks.
Migration path. Two viable routes:
stof/doctrine-extensions-bundle Taggable (same underlying model, maintained), or migrate to a normalized Tag entity + TaggableJoin table. The normalized route is the durable path; the extensions route is the lower-effort stopgap.If migrating the data model, sequence: (1) audit existing tag columns and normalization quirks; (2) introduce the new normalized schema alongside; (3) dual-write; (4) backfill and reconcile; (5) cut reads over; (6) retire the Taggable column.
Compatibility. Assume incompatibility by default and verify explicitly:
Doctrine\ORM\Mapping annotations).FabienPennequin/DoctrineExtensions-Taggable against our constraint set; if not, a replace directive pointing at a forked package is required — which is a maintenance commitment, not a fix.Sequencing for a TPM-led evaluation:
spatie/laravel-tags (Laravel), stof/doctrine-extensions-bundle Taggable (Symfony stopgap), custom normalized model (both).Maintenance. Effectively zero upstream maintenance. Any fix — PHP 8 compatibility, Symfony 6 support, security patch — becomes our burden via fork. That converts a "dependency" into an owned codebase with a maintenance tax disproportionate to its ~hundreds of lines of glue. Factor fork stewardship into the total cost of ownership; it is rarely justified for glue code.
Support. No vendor, no maintainer responsiveness, no issue tracker velocity (10 stars, 0 dependents means no community to answer questions). Internal ramp-up requires code archaeology — reading the bundle and its dependency to infer behavior, since documentation is sparse and predates current Symfony conventions. Expect 1–2 engineer-days just to understand the Taggable string model and its normalization edge cases.
Scaling. The denormalized Taggable model does not scale gracefully:
LIKE '%tag%' scans; no per-tag index.UPDATE ... REPLACE across the corpus — expensive and error-prone at volume.For high tag cardinality or reporting requirements, this is the wrong model regardless of package health.
Failure modes to monitor:
doctrine:migrations:diff misbehaving against annotation-mapped taggable fields on newer Doctrine.Ramp-up. Low code surface, high ambiguity. The package itself is small, but the dependency (FabienPennequin/DoctrineExtensions-Taggable) and the host (Kunstmaan CMS) each carry their own learning curve. For a team on Laravel, ramp-up is moot because integration is infeasible. For a legacy Kunstmaan team, ramp-up is 2–3 days to productive, with ongoing fork-maintenance overhead.
TPM recommendation. Do not adopt as a runtime dependency on any modern stack. Its value is as a reference pattern for taggable Doctrine entities and as a migration trigger — if we are on it, this is the moment to consolidate onto a maintained Taggable implementation or a first-party normalized tag model. The 0.33 score and 2014 last-release date are the decision, not a detail to work around.
How can I help you explore Laravel packages today?