Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Dev Tools Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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

  • Are we building or maintaining OTel PHP instrumentation/exporter code, or merely consuming it? Only the former justifies a direct dependency.
  • Does 0.2's release tooling (repository-prefix filtering, version listing) ship as callable commands we would ever use, or is it monorepo-specific plumbing? If the latter, it confirms the package is not for us.
  • Which PHP-CS-Fixer, PHPStan, and Symfony majors does it pin, and do they intersect with our Pint/Larastan/framework constraints?
  • Is the subtree split kept in lockstep with the monorepo tag, and where do we file issues?
  • Does it assume a specific CI runner (GitHub Actions, Docker-based make targets) that we would need to port to GitLab/Buildkite?

Integration Approach

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:

  1. Reference only (recommended default). Read the PHP-CS-Fixer and PHPStan configs in the repo; port any rules that add value into pint.json and phpstan.neon. No dependency, no lockfile churn, no CI risk.
  2. Selective vendoring. If the test helpers are genuinely useful, copy the specific test-double classes into tests/Support/ with attribution, rather than pulling the whole dev package. This is the standard escape hatch for dev tooling with awkward transitive pins.
  3. Direct dev dependency. Only for teams shipping an OTel PHP package that must pass upstream CI parity, or actively contributing to the OTel PHP monorepo and needing its release tooling. Scope it to that package's 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

  1. Instrument first: get open-telemetry/sdk + OTLP exporter + Laravel auto-instrumentation working and emitting traces to a collector. Prove the runtime story before touching dev tooling.
  2. Establish local observability verification using the collector config patterns from this repo (copy, don't depend).
  3. Only then evaluate the static-analysis/style layer against a spike branch — measure how many existing files it flags. If the number is large, stop; the ruleset is not calibrated for your codebase.
  4. If you later publish an instrumentation package or contribute upstream, adopt it directly in that package's CI as a final, isolated step.

Operational Impact

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

  • Lockfile conflict on PHP or Symfony minor bump — dev dependency pins a PHPStan/PHP-CS-Fixer/Symfony major incompatible with Pint, Larastan, or the framework; 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.
  • Rule drift — upstream tightens a rule; your previously-green build goes red without any change on your side. Mitigate by vendoring rules rather than depending on them.
  • Silent abandonment of the split — the subtree sync breaks and releases lag the monorepo; you are pinned to stale configs with no signal. Mitigate by pinning an exact version, never a range.
  • Misclassification — someone sees "OpenTelemetry" and adds it to require instead of require-dev, shipping build tooling to production. Guard with a CI check on the production lockfile.
  • False confidence — passing OTel's static analysis is not evidence of correct instrumentation; it checks code shape, not that spans are emitted, parented, or exported.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core