innmind/foundation
Foundation provides the core bootstrapping layer for InnMind PHP applications: configuration loading, dependency injection, service wiring, and application lifecycle primitives that let you compose packages into a consistent, testable runtime without framework overhead.
Architecture fit. innmind/foundation is not a Laravel package. It is the low-level primitive layer of the Innmind ecosystem — immutable collections, Maybe/Either monads, value-type helpers — and it is deliberately framework-agnostic with no service providers, facades, config files, or package discovery. Technically it installs cleanly into a Laravel application via Composer. Architecturally it is a foreign body: Laravel's idioms (mutable Collection, Eloquent hydration, facades, global helpers) sit in direct opposition to Innmind's strict-typing and total-immutability philosophy. Fit is therefore "coexists, does not integrate."
Integration feasibility. Low technical friction, high cultural friction. composer require innmind/foundation will work; no Laravel bootstrapping is required because there is nothing to bootstrap. The real cost is that every boundary between Laravel-land and Innmind-land needs a hand-written adapter, and there is no existing Laravel bridge, recipe, or community precedent to copy.
Technical risk. Release 2.2.0 drops PHP 8.4 support. This is published as a patch-level-minor bump (2.1.0 → 2.2.0) but it is functionally a platform-support regression. Two risks compound:
php constraint is tightened, any team on PHP 8.4 — the default for new Laravel 11/12 builds — hits a hard Composer resolution failure. This effectively caps the host platform.Either way, a package that removes support for a current PHP release is signalling constrained maintenance bandwidth. That is the dominant risk here, not the code itself.
Key questions.
composer.json — is php: 8.4 excluded by constraint, or only removed from CI?Stack fit. Composer-native, PSR-4 autoloaded, zero framework coupling — so it slots in without touching config/app.php, service container, or middleware. It is usable inside jobs, console commands, domain services, and queue workers. It is not a substitute for Laravel's Collection, validation, or Eloquent; treat it as a domain-layer utility library, not infrastructure.
Migration path. Nothing to migrate — there is no prior adoption and no prior assessment. If we adopt, do it greenfield in one bounded context:
2.2.0) and commit the lock file.php constraint against our runtime before anything else. If a PHP 8.4 upgrade is on the roadmap, this package is now a blocker and that must be surfaced immediately.toDomain() / toEloquent() adapters so Eloquent models and Collection never appear inside Innmind-typed code and vice versa.Compatibility. The PHP version constraint is now the gating factor and it must be reconciled against the Laravel version's own PHP floor and ceiling. Secondary checks: static analysis (Psalm/PHPStan) configuration, since Innmind leans heavily on generics and template annotations that will not type-check cleanly against untyped Laravel code without suppression; and whether any transitive Innmind dependency carries its own PHP constraint that is stricter still.
Sequencing. (a) Composer constraint audit → (b) PHP-version decision → (c) single-module pilot behind adapters → (d) team review of the pilot → (e) expand or abandon. Do not start at (c). Because the release is a platform-support reduction, steps (a) and (b) are the ones that can invalidate the whole plan, and they are cheap to run.
Maintenance. Single-maintainer ecosystem with a narrow contributor base; the 2.2.0 changelog shows one PR from one author. Bus factor is 1. The release itself is minimal — one change, no features, no deprecations of API surface — which is reassuring for stability but also indicates a low-activity project. Dependency updates will be infrequent and driven by the maintainer's own needs, not ours.
Support. No commercial backing, no Laravel-community overlap, no Stack Overflow corpus. Support is GitHub issues on the maintainer's schedule. Internal capability must be self-sufficient; we cannot hire for this.
Scaling. Runtime cost of immutable collections is acceptable and not the constraint. The scaling constraint is cognitive: every engineer who touches the code must learn Maybe/Either and persistent data structures, and every Laravel developer who does not will produce boundary code that defeats the purpose. Cost scales with headcount, not with traffic.
Failure modes.
Ramp-up. Non-trivial for a Laravel-centric team: budget roughly two to three weeks of one senior engineer's time to reach productive fluency in the Innmind idioms, plus ongoing review overhead in the first quarter. The PHP 8.4 question should be settled before that investment is made, because a "no" there makes the ramp-up spend wasted. Recommendation: treat 2.2.0 as a major-version event for planning purposes, hold adoption until the 8.4 stance is confirmed in writing, and if confirmed as a permanent ceiling, do not adopt.
How can I help you explore Laravel packages today?