fi/fifreecorebundle
fi/fifreecorebundle is a Laravel/PHP package that provides a reusable core bundle for shared application foundations. It helps organize common functionality and integration points, reducing boilerplate when bootstrapping or extending compatible projects.
Framing for a TPM. The brief describes a "Laravel/PHP package," but the evidence points to a Symfony bundle authored by Comune di Firenze (fi vendor prefix, *Bundle suffix, a FifreeCoreBundle extending Symfony's Bundle class, no Illuminate or service-provider artifacts). A TPM's first job is to correct the premise before any roadmap commits to it: this is not a Laravel package, and treating it as one will burn a sprint on a failed composer require. The realistic TPM decision it informs is "borrow domain patterns, do not depend on the artifact."
Architecture fit. Low as a dependency, moderate as an intellectual input. A "core framework" bundle is opinionated at the kernel/container/config seam — exactly the surface Laravel does not expose. Its durable value is domain encoding for Italian public administration (SPID/CIE identity, ANPR registry, PagoPA payments, protocollo) rather than infrastructure. A TPM should scope this as a domain reference implementation to mine, not a library to install.
Integration feasibility. Feasible only through an anti-corruption layer. Ranked options: (1) extract specific domain classes into framework-agnostic services behind our own interfaces; (2) fork, vendor at a pinned commit, wrap in an adapter; (3) run Symfony alongside Laravel for one bounded context — rarely justified. Direct installation into an existing Laravel app is effectively out of scope until proven otherwise by the spike.
Technical risk. High, and concentrated in provenance and supportability, not code quality:
LICENSE/composer.json before scoping anything downstream — an AGPL finding can cancel a commercial roadmap item on day one.Key questions for the maintainers / pre-spike checklist.
Stack fit. Poor at the framework seam, potentially strong at the domain seam. Laravel and Symfony share PHP and Composer but diverge on service container, HTTP kernel, configuration tree, and event dispatch. There is no bridge package, no dependents whose patterns we could copy, and no upstream incentive to build one. A TPM should not fund "make it work in Laravel"; that is an architecture effort disguised as an integration task.
Migration path. Prefer extraction over adoption, sequenced as a timeboxed product-discovery spike rather than a delivery workstream:
LICENSE, composer.json, README, tests, and framework constraints.If extraction proves infeasible, fall back to a vendored fork with a pinned SHA and a recorded "we own this now" decision — but that is a distinct, more expensive commitment a TPM must sign off explicitly.
Compatibility. Unverified and the main gating item. Confirm PHP version floor/ceiling against our runtime, Symfony major-version lock, PSR compliance (logging, cache, HTTP), and whether the package mutates global state (error handlers, ini settings, autoloaders) that would collide with a Laravel or Symfony host. Check transitive dependencies for their own abandonment.
Sequencing. Audit → license sign-off → spike → go/no-go → extraction → contract tests → staged rollout behind a feature flag. Do not parallelize the spike with a production roadmap item that depends on its outcome. Gate the whole effort on the license and framework checks — those two answers can cancel the project cheaply at step 1, before engineering capacity is spent.
Maintenance. Adoption means fork-and-own. With no upstream release cadence, a TPM should assume zero external maintenance and budget roughly 0.25–0.5 FTE for stewardship if the bundle stays in the runtime — covering PHP/Symfony upgrades, security patching, and dependency drift. The extraction path reduces this to ordinary code ownership with no upstream obligation, which is the outcome to budget for.
Support. No vendor, no SLA, no published security policy, and no issue-triage history to gauge responsiveness. Support is entirely internal: a named owning team, a runbook, and an escalation path must exist before go-live. There is no community to consult; zero dependents means no peer operators.
Scaling. Uncharacterized — validate empirically, not by reading code. Watch specifically for uncached synchronous calls to municipal registries (ANPR, PagoPA), session locking under concurrency, unbounded query patterns against registry endpoints, and any synchronous external call on the request path. Government endpoints carry latency and availability profiles outside our control and need explicit timeouts, circuit breakers, and documented degradation behavior. A TPM should require these in the non-functional requirements of any dependent workstream, not leave them to code review.
Failure modes.
Ramp-up. High. Expect a multi-week curve for any competent engineer: Italian documentation, public-sector vocabulary (SPID, CIE, ANPR, PagoPA, protocollo), a bespoke framework with no tutorial ecosystem, and no public examples to pattern-match against. Budget a domain SME consult alongside engineering time. The extraction path deliberately caps this cost — engineers learn only the domain logic in isolation instead of absorbing an entire foreign framework.
Recommendation for the roadmap. Do not adopt fi/fifreecorebundle as a runtime dependency, and do not frame it to stakeholders as a Laravel integration. Treat it as open reference material for Italian public-administration domain conventions. Fund a one-sprint audit-and-spike only if a Florence/Italian-PA-facing workstream exists, gated hard on license clearance and framework verification, and proceed to extract only if a discrete, separable domain capability justifies the cost. Any roadmap item that would be blocked by this package's abandonment should be re-scoped to remove that dependency before it enters a committed plan.
How can I help you explore Laravel packages today?