irstea/php-cs-fixer-config
A reusable PHP-CS-Fixer configuration package that provides an opinionated, consistent coding style for PHP and Laravel projects. Install it to standardize formatting and linting across repositories, with sensible defaults and easy customization.
Architecture fit. This is a development-time ruleset for php-cs-fixer, not a runtime Laravel package. It ships config (and possibly a Config subclass) consumed via require-dev, and it introduces no service provider, no autoload footprint in production, and no framework binding. That makes it architecturally inert — adoption cost is almost entirely governance, process, and supply-chain, not engineering. The one real overlap is with Laravel Pint, which wraps php-cs-fixer; running both means two style authorities in a repo, which is a policy decision before it is a technical one.
Integration feasibility. Low-to-moderate. The package lives on gitlab.irstea.fr, a French research institute's self-hosted GitLab, with zero stars, zero dependents, and no visible Packagist listing. Consumption requires a Composer VCS entry plus credentialed access (SSH key or token) for every developer and every CI runner, and accepting availability coupled to a third party's internal infrastructure. No tags are visible, so pinning likely means dev-main#<sha> rather than semver — workable if pinned, fragile if not.
Technical risk. Concentration risk is high relative to the artifact's value. Open unknowns: license (an internal institute tool may be all-rights-reserved, which blocks redistribution and possibly internal reuse), compatibility with the php-cs-fixer major version our toolchain resolves, whether custom fixers ship (which would raise blast radius), and whether the ruleset is aggressive enough to reformat large volumes on first run. The zero-star profile is not a quality signal — the repo is private — but it does mean no external user base to surface breakage, no public issue history, and no third-party documentation.
Key questions. (1) What is the license, and does it permit forking and internal redistribution? (2) Is it pure configuration, or does it ship custom fixers? (3) Which php-cs-fixer and PHP versions are pinned? (4) Are there tags, or only branches? (5) Who owns the repo upstream, and is there a stated maintenance commitment? (6) Does it conflict with our existing Pint config? (7) What diff volume does it produce on a representative service?
Stack fit. Framework-agnostic; identical for Laravel services, legacy PHP apps, and shared libraries. The TPM decision is whether it replaces Pint as the house style authority or runs alongside. Alongside is not recommended — divergent formatting rules produce churn, confusing CI failures, and duplicated ownership.
Migration path. Do not consume upstream directly. Fork or mirror into our own GitLab under a pinned commit SHA, vendor the ruleset into our internal standards repo, and treat upstream as a reference to diff against quarterly. This converts an external availability dependency into an internal one at negligible cost and resolves the license question by keeping distribution internal. If the license forbids even that, transcribe the rule array into our own config — a few hours of work that removes the dependency entirely.
Compatibility. Validate against our supported PHP matrix and the php-cs-fixer version our toolchain resolves before touching any codebase. If custom fixers are present they must be autoloadable in the tooling context; if not, the config is portable text.
Sequencing. (1) Request access, confirm license. (2) Fork/mirror, pin the SHA. (3) Run --dry-run --diff on one mid-sized service to size churn. (4) Decide full reformat vs. ratchet (new/changed files only). (5) Wire into CI as advisory, then blocking, on that one service. (6) Add a Composer script or Make target and document it. (7) Roll out repo by repo with one named owner. Do not attempt a fleet-wide reformat in a single pass.
Maintenance. Unbounded and external. There is no visible release cadence, changelog, or deprecation policy, and the maintainer is another organization's internal tools team under no obligation to us. Mitigation is the fork: once pinned internally, upstream drift becomes a deliberate, reviewable decision rather than ambient risk. Budget roughly a day per year for upstream review plus initial setup.
Support. No public tracker, no SLA, no English documentation — the description is in French and the repo sits behind institutional login. Support is informal and relationship-dependent; escalation paths should be agreed before adoption, not after an incident.
Scaling. Negligible compute. The constraint is organizational: every repo and every CI runner needs credentialed access to an external private GitLab, multiplying secret-management surface and creating a single point of failure at composer install across the estate. A mirror eliminates this; direct consumption does not.
Failure modes. Most probable: access revocation, repo relocation, or an upstream branch rewrite breaking pipelines everywhere simultaneously. Also expect first-run reformat churn causing merge conflicts across in-flight branches, and silent drift if the config is not SHA-pinned. Secondary: a license discovery mid-rollout forcing a config rewrite.
Ramp-up. Technically trivial — anyone familiar with php-cs-fixer or Pint is productive within hours. Friction is procedural: access provisioning, French-language conventions, and no onboarding material. Assign one owner, mirror the repo, pin the SHA, and this becomes a low-cost, low-risk addition rather than a dependency on a stranger's infrastructure.
How can I help you explore Laravel packages today?