open-telemetry/dev-tools
Shared development tooling for OpenTelemetry PHP: coding-standard, static-analysis, and CI configurations that keep contributions consistent across the ecosystem. Add it as a dev dependency to align packages with project conventions.
Architecture fit
open-telemetry/dev-tools remains a development-time companion package for the OpenTelemetry PHP ecosystem, not a runtime library. It sits in require-dev and packages the conventions the upstream project uses to keep its ~dozen contrib packages consistent: shared PHP-CS-Fixer rulesets, PHPStan/Psalm baseline configuration, CI helper scripts, and test utilities (in-memory span/metric exporters, mock context storage, collector compose files). Release 0.2 reinforces this: "filtering by repository prefix" and "list released versions" are monorepo release-management features, not application-facing helpers. That confirms the package's centre of gravity is upstream governance tooling — the machinery the OTel PHP maintainers use to cut and coordinate releases across split repositories. For a Laravel application, it never enters the deployment artifact and never touches the request lifecycle; the OpenTelemetry value comes from open-telemetry/sdk, open-telemetry/exporter-otlp, and the framework auto-instrumentation packages, not from this repo. Its architectural role is conformance and release tooling: adopt it if you are writing instrumentation libraries, custom exporters, or processors that should behave like first-party OTel PHP code, or if you are contributing upstream. It remains a poor fit as a general-purpose QA dependency for a product application.
Integration feasibility
Mechanically trivial — composer require --dev open-telemetry/dev-tools — but the practical question is whether it is additive or substitutive. It is largely substitutive. A Laravel codebase already has an opinionated stack: Pint (which vendors its own PHP-CS-Fixer), Larastan (PHPStan with Laravel-specific stubs and rules), and Pest. Layering OTel's rulesets on top produces either duplicate fixers fighting over the same files or a PHP-CS-Fixer version pin conflict, since Pint locks a specific PHP-CS-Fixer major and OTel's configs are written against theirs. Release 0.2 adds a further substitutive surface: its release-management commands are built for the OTel monorepo's repository-prefix conventions and would not describe a Laravel application's release process. The low-risk integration remains reference adoption: read the rulesets and PHPStan configs, cherry-pick rules into your own phpstan.neon and pint.json, and skip the dependency entirely. Direct dependency is justified mainly for a team maintaining a reusable OTel instrumentation package that must pass upstream CI conventions.
Technical risk
The headline metrics are misleading rather than reassuring. Zero stars and zero dependents reflect that this repository is almost certainly a read-only subtree split of open-telemetry/opentelemetry-php — the real activity, issues, and star count live on the monorepo. That is normal for PHP monorepos but it means: issue triage happens elsewhere, the release cadence is driven by upstream tooling majors (PHP-CS-Fixer, PHPStan, PHP minor versions, and now Symfony) rather than by consumer demand, and the package can bump breaking config shape with little notice because its only real consumer is the parent project. The 0.2 release is a minor bump from 0.1 with no stated breaking changes, but 0.x semver gives no compatibility guarantee, and "Support Symfony 8" signals that the package carries Symfony component constraints that will move independently of Laravel's own Symfony pinning. Apache-2.0 removes licensing risk. The dominant risk is version coupling: your CI becomes transitively pinned to whatever PHPStan/PHP-CS-Fixer/Symfony versions OTel targets, which will periodically collide with Laravel's own upgrade path (PHP 8.x bumps, Larastan majors, Pint majors, Symfony majors). Secondary risk is false confidence — OTel's static analysis encodes its own internal API deprecation policies, which are not your deprecation policies. Governance risk is low (CNCF-backed, multi-vendor contributors); bus-factor risk at the individual maintainer level is real but mitigated by the foundation, and the 0.2 release added a first-time contributor, a marginal positive signal for contributor breadth.
Key questions before committing
make targets) that we would need to port to GitLab/Buildkite?Stack fit Moderate at best, and only at the margins. The genuinely reusable pieces for a Laravel team are (a) the exporter/collector Docker setup, useful for local trace verification, and (b) test doubles for asserting span output in feature tests. The style and static-analysis layers are a poor fit because Laravel's ecosystem has already standardized on Pint + Larastan, and those are tuned for Eloquent magic, facades, and container resolution — OTel's stricter rules will flag idiomatic Laravel code. The 0.2 release-management features do not change this equation; they are aimed at coordinating a multi-repository release train, not at application release hygiene. Treat this package as a specification to read, not a dependency to install, unless you are publishing an instrumentation package.
Migration path Three tiers, in increasing commitment:
pint.json and phpstan.neon. No dependency, no lockfile churn, no CI risk.tests/Support/ with attribution, rather than pulling the whole dev package. This is the standard escape hatch for dev tooling with awkward transitive pins.composer.json, never the application's, and isolate it in a separate CI job.Compatibility
Verify four axes before any adoption: PHP version constraint against your matrix; PHP-CS-Fixer/PHPStan major alignment with Pint and Larastan (the most likely breakage); Symfony component major alignment with your framework version, since 0.2 explicitly adds Symfony 8 support and will presumably drop Symfony 7 support at some future major; and whether the package declares conflicts or replaces for the upstream packages you already have installed. Because it is require-dev, Composer will resolve it independently of production constraints — but a dev resolution failure still blocks composer install in CI, which is a full pipeline outage, not a cosmetic one.
Sequencing
open-telemetry/sdk + OTLP exporter + Laravel auto-instrumentation working and emitting traces to a collector. Prove the runtime story before touching dev tooling.Maintenance Low absolute effort but non-zero attribution cost. The package is maintained by the OpenTelemetry PHP maintainers under CNCF; releases track upstream tooling majors rather than a product roadmap, and 0.2's content — release listing and repository-prefix filtering — shows the cadence is set by monorepo release process needs. Because the split repo carries no issues or stars, your team's first debugging step for any failure is to search the monorepo and CNCF Slack, not the repo you depend on. Budget a recurring half-day per PHP minor upgrade to reconcile PHPStan/PHP-CS-Fixer version drift, plus a similar allowance when Laravel or Symfony majors move — this is the same tax you already pay for Larastan, but now with an additional owner setting the pace.
Support
Community-only: GitHub Discussions/issues on the monorepo, CNCF Slack #otel-php. No commercial SLA, no security response commitment beyond the foundation's norms. Acceptable for dev tooling; unacceptable if anyone mistakenly promotes it into a production dependency. Apache-2.0 gives clean fork rights if upstream goes quiet — the configs are small enough to fork and hold.
Scaling Effectively free. Zero runtime footprint, no memory or latency characteristics, no per-request cost. The only scaling dimension is CI wall-clock: static analysis over a growing Laravel codebase is the expensive step, and adding a second ruleset multiplies analysis passes. Keep it out of the hot path of developer feedback (pre-commit) and confine it to a nightly or package-scoped CI job.
Failure modes
composer install fails for every developer simultaneously. Highest-probability, highest-blast-radius failure, and 0.2's Symfony 8 support makes this axis slightly more active.require instead of require-dev, shipping build tooling to production. Guard with a CI check on the production lockfile.Ramp-up Genuinely cheap for reading (an hour with the configs and README), moderate for adopting well (roughly a day for a spike plus review, dominated by reconciling ruleset conflicts with Pint/Larastan). The 0.2 release-management additions do not add ramp-up for application teams because they should not be used there. The larger ramp-up is contextual, not package-specific: a TPM sponsoring this needs the team to already understand OpenTelemetry's trace/metric model, the collector pipeline, and sampling — otherwise the dev tooling is cargo-culted with no ability to judge whether proposed rules are appropriate. Recommendation: do not add as a dependency for the Laravel application; consume it as a reference and as a local collector-verification pattern. Revisit direct adoption only if the team begins publishing OTel PHP instrumentation packages or contributing upstream release tooling.
How can I help you explore Laravel packages today?