ruwork/reform
ruwork/reform is a Laravel/PHP package for defining forms as reusable objects, mapping request data, validating input, and transforming it into typed values. It helps keep form handling organized, consistent, and testable.
What the package is. Ruwork Reform is a form abstraction published by Ruvents (a Russian Symfony shop) that layers typed form definitions over Symfony's Form/Validator components, letting you describe forms as PHP classes/objects and map submitted data back into them. The value proposition is closer to "typed form objects" than to anything Laravel-specific.
Architecture fit. Poor for a Laravel codebase, even though it's installable via Composer. There is no service provider, facade, config publish, or Blade integration — it targets the Symfony Form event/type system directly. Laravel's native form story (FormRequest + Validator + Blade/Eloquent casting) and the modern DTO ecosystem (spatie/laravel-data, Livewire forms, Folio) already cover the "typed form object" need without importing a foreign abstraction. Adopting Reform means running two validation mental models in one codebase.
Integration feasibility. Low as-is. Last release 2018-07-26 implies php ^7.x and symfony/form ^3.4|^4.0 constraints. Any current Laravel (9/10/11) resolves Symfony 6/7 components, so Composer will hard-conflict; the only paths are a replace hack, a platform-req bypass, or a fork. Zero dependents and zero stars mean there is no observed integration recipe, no issue history to mine, and no community to ask. The MIT license makes forking legal, which is realistically the only route.
Technical risk.
| Dimension | Assessment |
|---|---|
| Abandonment | High — 6+ years without a release or visible activity |
| Security exposure | Medium-high — drags in EOL Symfony 3.4/4.x components with no patch path |
| Bus factor | Effectively 1 (single org, no visible external contributors) |
| Correctness guarantees | Unknown — no CI badge, no coverage signal, no downstream users to validate behavior |
| Idea value | Moderate — the DSL ergonomics are genuinely nice, the code is not |
The reported opportunity score of 8.32 is inconsistent with every adoption signal (0 stars, 0 dependents, 0 releases since 2018). Treat it as noise and decide on evidence, not the score.
Key questions to answer before any commitment.
composer.json require — symfony/form, symfony/validator, both, at which constraints?laravel-data + FormRequest reproduce 80% of it?Stack fit. Assume Laravel 10/11 on PHP 8.2. Reform as a dependency: poor fit — it's a Symfony-first library. Reform as a design reference or vendored fork: workable. If the team is still on Symfony 4.4 LTS, the fit is still poor, because that branch is EOL.
Migration path options, ranked.
packages/reform, retarget constraints to Symfony 6/7 and PHP 8.2, add a service provider and facade, add a test suite. Cost: 2–4 engineer-weeks plus permanent ownership.--ignore-platform-reqs hacks and a pinned legacy runtime. Reject.Compatibility checks to run first. Read composer.json for PHP and Symfony constraints; grep for PHP 8 breakage (dynamic properties, removed each()/create_function, implicit nullable parameter order, reserved words); run Rector's PHP 8.x ruleset and PHPStan level 5 over the source. This two-day spike tells you whether the fork is a week or a quarter.
Sequencing if option 1 or 2 is chosen.
Maintenance. We become the upstream. Every Laravel or Symfony major bump requires patching a package we did not write and do not fully understand. Budget 1–2 engineer-days per quarter steady state, spiking to 1–2 weeks per major framework upgrade — indefinitely.
Support. No vendor, no community, no CVE feed, no issue tracker activity. The internal Slack channel is the support desk, and the on-call rotation is the escalation path. Expect to write our own documentation; the upstream README is thin and the originating team is Russian-language.
Scaling. The form layer itself is not a throughput concern — forms are not where the request budget goes. The real scaling cost is dependency-graph friction: one pinned legacy Symfony component can block Composer resolution for the entire monorepo, which turns a small internal library into an org-wide upgrade tax.
Failure modes, by likelihood × impact.
symfony/form 3.4/4.x with no patch path (medium, high).Ramp-up. A mid-level developer needs 3–5 days to become productive in the DSL and considerably longer for undocumented internals. No candidate will arrive knowing this package, so every hire is a net training cost. The bigger risk is knowledge concentration: if the original adopter leaves, the fork becomes an orphan inside the org as well.
Recommendation. Do not add ruwork/reform as a dependency. Harvest the design ideas — typed form definitions and clean DTO mapping are worth stealing — and implement them on Laravel primitives where the team already has expertise. If the spike surfaces a genuinely compelling capability, fork it with a named owner, a written support policy, and a documented exit plan before the first production form ships.
How can I help you explore Laravel packages today?