Declarative Configuration Reaches Stable
Declarative configuration is now stable after several years of development. A single YAML file replaces scattered environment variables and works identically across Java, JavaScript, Python, and the Collector. The file exposes a full data model so every available option is visible in one place, ending the hunt through documentation to find which variables exist. C++, Go, Java, JavaScript, and PHP have implementations at varying stages. Migration examples live in the project repository, and the Slack declarative config channel offers help.
Weaver: Schema-Based Telemetry Validation
Weaver lets teams define, validate, and evolve their own telemetry conventions, separate from OpenTelemetry’s standard ones. A registry manifest file ties together multiple YAML files into a schema that specifies metric names, instruments, units, stability levels, attribute names, types, and required fields. Rego policy files enforce naming prefixes and patterns that YAML cannot express. The live check mode acts as an OTLP server. Any telemetry that violates the schema produces a policy violation JSON that can feed an alert. Two Weaver talks from earlier in the conference cover it in depth.
Zero-Code Instrumentation via the OTel Injector
The OTel Injector removes the need to know what language or framework an application uses before instrumenting it. Adding a shared object to LD_PRELOAD or the LDSO_PRELOAD file causes it to load before any process starts. It then injects the correct environment variables, which pick the right auto-instrumentation for Java, Node.js, .NET, or Python. Python requires an explicit opt-in. A config file lets operators point the agent at a specific Collector endpoint. Package management support is in progress to simplify installation further.
Performance Gains, Profiling Alpha, and the Span Event Deprecation
The Go SDK’s metric side now shows 4 to 30 times performance improvements from better locking on metric instruments. Exponential histograms are still under discussion. Profiling moves to alpha in OTLP 1.11, with no breaking changes between 1.10 and 1.11, so the Collector and eBPF profiler can be used today. Span events are being deprecated. Log-based events, stable for some time, become the preferred way to send events. Existing span event data continues to work, and backends that carry trace context in logs can display the two formats identically.
Community Momentum and New SIGs
OTel Unplugged, held after FOSDEM, ran unconference sessions driven by contributors and end users and moved work on governance. The project now counts over 50 talks and pavilion sessions at this KubeCon alone. New SIGs include Collector MCP, Browser, ZigZag, PHP Dragonfly, and Kotlin. The Ecosystem Explorer project, starting with Java, collects metadata on which metrics each SDK emits and which semantic convention version it follows, letting users check compatibility before selecting a component. CNCF graduation paperwork, including adopter interviews, is in progress.
Q&A
Is the OTel demo project being updated to show declarative config migration? At least one Go service is already updated; others depend on their SDK implementations catching up, so the change is gradual. ▶ 20:08
What is the project roadmap priority? Graduation and “stable by default” are the top cross-project goals; individual SIGs also carry their own work such as JavaScript log stabilization. ▶ 21:47
Should teams using span events panic and migrate now? No. The deprecation will take a long time; for new code, use log-emit APIs, and migrate existing code gradually. ▶ 24:52
What is the status of browser and real-user monitoring? The Browser SIG has restarted, work is moving faster than before with a new phased approach, and a Kotlin SIG covers mobile client instrumentation. ▶ 26:40
Does isolated tracer provider context leakage in Python have a fix planned? No Python-specific fix exists yet; Josh is working on a cross-language solution and Google is also addressing it internally. ▶ 22:55
Notable Quotes
their benchmarks show between four and 30 times of performance improvements. uh just by improving locking on the metric instruments Pablo Baeyens · ▶ 09:45
so uh I guess the main message is don’t panic bring a towel like uh it’s just a deprecation that is going to take long long time Pablo Baeyens · ▶ 24:52
we know it’s a weak spot that we have right now and we know a lot of users care about rum and care about uh browser events and client instrumentation in general. Juraci Paixão Kröhling · ▶ 26:50
I’m glad that we got like 20 minutes outside without AI at all. Severin Neumann · ▶ 18:11
Key Takeaways
- Declarative configuration is now stable and works identically across Java, JavaScript, Python, and the Collector.
- The OTel Injector auto-instruments Java, Node.js, .NET, and Python apps via LD_PRELOAD without any code changes.
- The Go SDK metrics layer is 4 to 30 times faster; profiling reaches alpha in OTLP 1.11.
About the Speaker(s)
Juraci Paixão Kröhling is a software engineer at OllyGarden, a maintainer of the OpenTelemetry project, a member of the project’s governing board, and a CNCF Ambassador. He has presented on distributed tracing and OpenTelemetry at conferences including KubeCon.
Severin Neumann is Head of Community at Causely AI and a member of the OpenTelemetry Governance Committee. He maintains OpenTelemetry SIG Communication, covering docs and the project website.
Pablo Baeyens is a Senior Software Engineer at Datadog based in Granada, Spain. He joined the OpenTelemetry project in late 2020 and serves on the Governance Committee while maintaining the OpenTelemetry Collector.
Marylia Gutierrez is a Principal Software Engineer at Grafana Labs focused on observability with OpenTelemetry. She serves on the Governance Committee and is an approver for the JavaScript SDK, Portuguese localization, Communications, and Database Semantic Conventions.