Product Decisions This Supports
- Build vs. buy for "custom fields / flexible attributes." The FlexModel family is a reference implementation of the schema-on-write pattern: entities get a typed, extensible attribute bag (values, collections, metadata) layered on top of a relational store. Reading the source is a cheap way to pressure-test our own design for customer-defined fields before committing engineering time.
- Choosing a persistence strategy for user-defined data. Informs the trade-off between EAV tables, JSON/JSONB columns, and a hybrid metadata layer. FlexModel's model — typed attributes with per-attribute metadata rather than generic key/value strings — is a useful counterpoint to the naive EAV approach we'd otherwise default to.
- Roadmap scope for a "customizable data model" epic. If a customer-facing configurability feature is on the roadmap, this package helps size the problem: it shows what a full solution costs (attribute definitions, value types, validation, form integration, migrations) and therefore what we'd be signing up for by building it.
- Deprioritizing a bespoke abstraction layer. The bundle's thinness (DI wiring, Doctrine integration, Symfony form types) is evidence that most of the value lives in the core library and the surrounding product decisions, not the framework glue. That argues for owning the glue in-house rather than depending on a third party for it.
- Vendor and dependency risk assessment. Archived in early 2018, one star, zero dependents, Symfony 3-era. Any decision to depend on it should be treated as a decision to fork and maintain it, which materially changes the cost side of the build-vs-buy ledger.
When to Consider This Package
Consider it only in narrow, low-stakes circumstances:
- You are already maintaining a Symfony 3.x / PHP 7.x application, are comfortable pinning to an unmaintained dependency, and need dynamic attributes quickly for an internal tool where reliability expectations are modest.
- You want it as a reading reference, not a runtime dependency — for architecture spikes, design docs, or a comparison of flexible-attribute approaches. This is the realistic use case.
- Your team has the appetite to fork and own the bundle plus the underlying
flexmodel/flexmodel core, and the scope is genuinely small enough that this is cheaper than writing the glue yourself.
Look elsewhere — or build — in most other cases:
- Any greenfield or currently supported Symfony version (5/6/7). API compatibility, PHP version constraints, and security patching all fail here; porting cost likely exceeds writing the integration.
- Anything customer-facing or revenue-affecting. Zero dependents and a 2018 last release mean no ecosystem scrutiny, no bug reports, no security response.
- When a simpler primitive solves it. Native JSON/JSONB columns with Doctrine's
json type, plus application-level validation and indexing, cover the large majority of "custom fields" requirements at a fraction of the complexity. Reach for a metadata model only when you need per-attribute typing, indexing, or querying across attributes.
- When you need performance guarantees on attribute queries. EAV-style models have well-known query and reporting costs; if filtering/sorting on custom fields is a first-class product requirement, evaluate a document store or a dedicated search index instead.
How to Pitch It (Stakeholders)
One-line summary: An unmaintained Symfony 3 integration for a flexible-attribute ("custom fields") library. We should not adopt it as a dependency, but it is a useful and free reference for a design decision we will otherwise make blind.
For executives: A customer-defined-fields capability keeps appearing in roadmap conversations. This package is an abandoned but readable example of how one team solved it — a useful input that costs nothing to evaluate, with no licensing or procurement implications (MIT). The recommendation is to treat it as research, not infrastructure: no dependency, no support obligation, no vendor risk. The value is in the architectural comparison, which informs whether we build, use database-native JSON columns, or defer the capability entirely.
For engineering: The bundle itself is ~framework glue — service definitions, Doctrine mapping, form types — around flexmodel/flexmodel. It targets Symfony 3 and has not shipped since January 2018, with a single star and no downstream dependents. Do not add it to composer.json. Do read it: it documents a typed-attribute model (as opposed to generic string key/value EAV) that is a useful baseline when we scope custom fields. Expect to spend a day on the spike and produce a short recommendation comparing three options — JSON columns, a metadata/EAV layer we own, or a document store — with rough cost and query-capability trade-offs. Flag explicitly that the "metadata layer we own" option includes ongoing maintenance of validation, form generation, and migration tooling, which is where the real cost sits.