Skip to content
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
682cc40
add blog post draft for stability oteps
austinlparker Oct 23, 2025
b47c251
fixall
austinlparker Oct 23, 2025
c615866
update java agent claim
austinlparker Oct 23, 2025
540eafd
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 24, 2025
b4de4e5
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 24, 2025
16adeaf
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 24, 2025
91851fb
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
89a0b40
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
453f5d1
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
25e806a
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
10c039d
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
dee201d
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Oct 27, 2025
61bb7fb
feedback
austinlparker Oct 27, 2025
f2c8479
mega-feedback pass
austinlparker Nov 1, 2025
72d7a6a
nit
austinlparker Nov 3, 2025
0bc3c8d
Apply suggestion from @svrnm
austinlparker Nov 3, 2025
8c0bead
feedback
austinlparker Nov 3, 2025
c917aab
feedback
austinlparker Nov 3, 2025
547446f
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 3, 2025
cd8148c
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 3, 2025
749b108
feedback
austinlparker Nov 4, 2025
c96ad1b
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 4, 2025
a7c9828
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 4, 2025
8239264
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 4, 2025
cb7974f
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 4, 2025
52739fc
Update content/en/blog/2025/stability-proposal-announcement.md
austinlparker Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
266 changes: 266 additions & 0 deletions content/en/blog/2025/stability-proposal-announcement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
---
title: Evolving OpenTelemetry’s Stabilization and Release Practices
linkTitle: Stability Proposal Announcement # Mandatory, make sure that your short title.
date: 2025-10-23 # Put the current date, we will keep the date updated until your PR is merged
author:
>- # If you have only one author, then add the single name on this line in quotes.
[Austin Parker](https://github.com/austinlparker) (honeycomb.io)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to leave this as is, but if you want to list author as "Governance Committee" I think we have precedent.

# canonical_url: http://somewhere.else/ # TODO: if this blog post has been posted somewhere else already, uncomment & provide the canonical URL here.
body_class: otel-with-contributions-from # TODO: remove this line if there are no secondary contributing authors
issue: the issue ID for this blog post # TODO: See https://opentelemetry.io/docs/contributing/blog/ for details
sig: Governance Committee # TODO: add the name of the SIG that sponsors this blog post
---

<!-- If your post doesn't have secondary authors, then delete the following paragraph: -->

With contributions from, and on behalf of, the OpenTelemetry Governance
Committee.

## Summary

OpenTelemetry is changing how the project approaches stability and releases,
across all sub-projects and repositories.

**Why?**

- User interviews, surveys, and discussions have demonstrated that the
complexity of OpenTelemetry creates impediments to production deployments.

**What's Changing?**

- We'll be moving to a simpler, but stricter, definition of what components can
be present in a stable release and updating stability requirements to include
new guidance on documentation, performance testing, etc.
- Semantic convention guidelines will be updated to encourage faster iteration,
greater federation, and to unblock consumers to allow stable instrumentation
releases.
- To make these releases easier to consume, we'll be introducing 'epoch
releases' -- similar to the Kubernetes release cycle.

**What we need your input on:**

- Implementation timelines and stability requirements.
- Proposed changes to semantic convention stability.
- How we can make releases better.

[Join the discussion!](https://github.com/open-telemetry/community/discussions/3098).

## Why are we doing this?

OpenTelemetry is a large, complex, and highly involved project. A quick glance
at the
[specification compliance matrix](https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix.md)
should be enough to tell you that supporting tracing, metrics, logs, and
profiles across a dozen languages – not to mention the complexity that comes
from different language runtimes and execution environments – means that there’s
a _lot_ to take in.

For end-users, this complexity holds back adoption and introduces surprise.
We've heard feedback about components whose config changes out from under them,
performance regressions when taking minor updates, and difficulty managing
rollouts at scale.

For maintainers, this complexity makes their job harder than it needs to be.
There's a lack of clear milestones and guidance about what's 'most important' at
any given time. Stability efforts involve a lot of whiplash and there's often
conflicting guidance about where you should focus your time.

With this in mind, the OpenTelemetry project would like to announce some
proposed changes that we’d like to institute, with the goal of normalizing our
language around component stability and component offerings.

The Governance Committee believes that these changes need community involvement
and discussion to be a success, so we’re taking this opportunity to announce our
intention and open an
[issue for discussion](https://github.com/open-telemetry/community/discussions/3098)
in order to get feedback from users, maintainers, and contributors. We do not
anticipate that these changes will be completed overnight, and want to assure
everyone that we will continue to prioritize our existing commitments to users
and maintainers even as we consider necessary changes for the overall wellbeing
and maturity of the project.

## 1. Stable By Default

Stability guarantees have been a long-held principle in OpenTelemetry, with
exceedingly high bars. There is a tension between this and user needs that we'd
like to discuss.

### Background

OpenTelemetry is a specification for how cloud native software -- libraries,
frameworks, infrastructure abstractions, executable code, etc. -- produces and
communicates telemetry data about its operation. This specification is designed
to be exhaustive, comprehensive, and low-level. Many of the elements of the
specification are hard-won knowledge from the combined decades of experience its
authors have with building, operating, or designing telemetry systems at planet
scale.

A specification with no implementation is not a useful thing for end users,
though. Developers and operators approach telemetry through a variety of lenses;
Some organizations have high standards for observability, with entire teams
dedicated to building internal monitoring and instrumentation frameworks. Other
organizations view observability and monitoring as a second or third order
priority -- something that needs to happen, but not something that's
incentivized. OpenTelemetry, as a specification, needs to serve all of these
users and their use cases.

To make OpenTelemetry useful, we need to provide an 'on-ramp' from existing
methods and modes, existing tools and strategies, which means we need to provide
implementations of not just the specification, but _applications_ of it as well.
In practice, this means we need to distribute libraries to add OpenTelemetry
instrumentation to existing HTTP servers and clients, or Collector receivers to
scrape metrics from MySQL and translate them into OTLP.

It should not come as a surprise that most of the value that our users, and
sponsors, derive from OpenTelemetry is through these instrumentation libraries
and Collector components. We attempt to communicate the relationship between the
core SDKs and these libraries/components via the `contrib` repository pattern,
but the practical reality is that many end users do not perceive this
distinction.

For maintainers and project leadership, our stability goals and the nature of
`contrib` present a significant challenge. Users want stable, well-tested, and
performant releases -- that _also_ perform the same function as commercial
instrumentation agents.

### What's Changing?

There's three major changes that we'll be rolling out. Keep in mind the exact
details of some of this may change, but these goals are more or less fixed.

1. All components across all repositories should adhere to a consistent way of
communicating stability, through a metadata file, that can be discovered and
parsed in a programmatic way. The exact format will be defined through an
OTEP and incorporated into the specification. As part of this, we'll be
normalizing stability levels across components, including semantic
conventions by introducing alpha/beta stability to that effort.
Copy link
Member

@trask trask Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure that the Semconv SIG is in agreement with this statement yet:

introducing alpha/beta stability

I believe the Semconv SIG preference is to decouple telemetry stability from semconv stability

meaning that instrumentation libraries can produce "stable telemetry" which doesn't break dashboards or alerts without a major version bump in the instrumentation library

but that is independent to whether or not it follows any stable semantic conventions

2. Stability requirements will be expanded to include more requirements around
documentation and where it's hosted, example code, performance benchmarks
(where applicable), implementation cookbooks, and other artifacts as
necessary.
3. Stable components must only include other stable components by default. A new
global configuration option shall be introduced that allows adopters to
choose a desired minimum stability level, with a default value of
`[stable, rc, beta]`.

This is a big change for maintainers, especially those who have shipped v1+ of
their libraries. We would deeply appreciate your feedback on this proposal in
the [discussion](https://github.com/open-telemetry/community/discussions/3098).
Copy link
Contributor

@tedsuo tedsuo Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to turn discussions on for this? Could we stick to issues?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

given that this is probably a multi-threaded topic and issues don't work great for that, I think a discussion is a good venue for the overall conversation, especially since the individual OTEPs will be better at hashing out single-threaded details?


## 2. Semantic Convention Stability Normalization

As mentioned above, we would like to adjust the semantic convention stability
process in order to provide greater consistency across projects, but also to
better communicate the interplay between telemetry stability and implementation
stability.

### Background

Semantic conventions are a slow, deliberative, and ultimately user-driven
project. Maintainers must grapple with the reality of end-user telemetry systems
and their varying architectures. While OpenTelemetry's design is situated around
a continuous stream of highly intercorrelated signals, users may choose a
variety of options for consuming that data. The decision of a storage and
analysis engine for telemetry has a variety of interplay with semantic
conventions, and maintainers must consider the tradeoffs between cardinality,
dimensionality, and specificity of attributes when designing conventions and
stabilizing them.

The downside of this is that progress on semantic conventions can be slow, and
this slowness impacts all consumers of the conventions. Many instrumentation
libraries are currently stuck on pre-release versions because they depend on
experimental semantic conventions. Outside contributors are stuck between
emitting unspecified telemetry or trying to engage in the process, which
requires a long commitment. Finally, we're internally inconsistent in
instrumentation across the project; Some libraries are mapped to conventions,
others exist independently of it.

### What's Changing?

Our goals here are designed to achieve two outcomes.

1. Semantic conventions should have more nuanced stability levels in order to
unblock upstream development and gain real world feedback from users.
2. Semantic conventions should be more federated; We don't want the project to
be a constraint on the development and promulgation of the conventions.

To this end, we have a few recommendations we'd like to codify into the
specification. First, our position around instrumentation libraries in
OpenTelemetry is that they exist as concrete implementations of the semantic
conventions. This gives us a concrete target for 'first party' instrumentation
libraries that we wish to support in distributions. In addition, maintainers
should prioritize instrumentations that align to existing conventions and
deprioritize others. Second, we would like to promote more first-party semantic
conventions to 'beta' stability in order to unblock downstream instrumentation
libraries. Many of our conventions have months, or years, of real-world use that
we can rely on as guidance for their fitness. Finally, we'd like to formalize
the semantic convention format specification to the point that third-parties
outside the OpenTelemetry project feel comfortable using it to publish their
own, federated, semantic conventions.

In order to accomplish this, we're looking for feedback on several areas from
maintainers and end-users -- especially around the maturity/lifecycle of
semantic conventions, as well as what's missing in terms of federating semantic
conventions. We are more flexible on proposals here, but our outcomes aren't.
Remember, a core goal of the project is to encourage other libraries, tools, and
frameworks to
[natively adopt OpenTelemetry](https://www.youtube.com/watch?v=l8xiNOCIdLY) --
semantic conventions are a big part of that.

## 3. Confident, Stable, Releases.

## Background

OpenTelemetry isn't just one thing, especially in complex deployments. Subtle
differences in everything from configuration to telemetry output between
different versions of instrumentation libraries, collector receivers, and SDKs
can cause a real headache for adopters. In addition, the rapid release cadence
of many components causes real difficulty for end users, especially around the
Collector. Enterprise deployments and upgrades are slow, deliberate things --
teams simply do not have the bandwidth to validate and roll out changes at the
cadence we ship.

## What's Changing?

We are proposing the creation of a Release SIG that will be responsible for
creating a schedule of 'epoch' releases for OpenTelemetry. These epoch versions
would essentially be a manifest pointing to a tested, documented, and stable set
of components that meet project stability requirements.

This is not a trivial undertaking, to be clear. It is also not as well-defined
as the earlier proposals in this blog -- those efforts will communicate many of
the requirements these epoch releases must follow, after all. To our maintainers
and contributors, though, a _non-goal_ of this effort is to force you to change
your versioning or release cadence.

## Looking Forward

These changes are a reflection of the impact and importance of OpenTelemetry to
the cloud native software community.
[OpenTelemetry has been the second highest velocity project in the CNCF over the past few years](https://www.cncf.io/wp-content/uploads/2025/04/CNCF-Annual-Report-2024_v2.pdf),
and
[nearly 50% of surveyed cloud native end user companies have adopted the project](https://www.cncf.io/wp-content/uploads/2025/04/cncf_annual_survey24_031225a.pdf).
These changes are setting up the next chapter of our success, and becoming truly
ubiquitous.

Our goals as a project are not changing, but our priorities are.

1. Stability and usability for all developers and users.
2. Clear packaging, installation, and usage paths.
3. Predictability and consistency.

For contributors and maintainers, what does this mean? We'll fast-track
proposals that align with these priorities. If there's feature work or
instrumentation that doesn't align to this, that's fine -- we'd ask that you
work on it outside the project and discover where our existing integration
points and patterns don't work; That's good feedback, and will help us improve
the specification for everyone.

For maintainers, contributors, and integrators -- we would appreciate your
feedback in
[this GitHub Discussion](https://github.com/open-telemetry/community/discussions/3098)
on the topics and proposals raised here. You can also send feedback on this
proposal to [feedback@opentelemetry.io](mailto:feedback@opentelemetry.io) or on
the CNCF Slack in the #opentelemetry channel. We also look forward to meeting
the cloud native community in person at KubeCon this fall -- please join us
there with comments!
20 changes: 10 additions & 10 deletions hugo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,6 @@ module:
target: content/docs/specs/semconv
excludeFiles: '**/README.md'
# DO NOT EDIT - semconv autogenerated mounts below - DO NOT EDIT
- source: tmp/semconv/docs/README.md
target: content/docs/specs/semconv/_index.md
- source: tmp/semconv/docs/azure/README.md
target: content/docs/specs/semconv/azure/_index.md
- source: tmp/semconv/docs/cicd/README.md
Expand Down Expand Up @@ -319,26 +317,28 @@ module:
target: content/docs/specs/semconv/messaging/_index.md
- source: tmp/semconv/docs/mobile/README.md
target: content/docs/specs/semconv/mobile/_index.md
- source: tmp/semconv/docs/non-normative/README.md
target: content/docs/specs/semconv/non-normative/_index.md
- source: tmp/semconv/docs/non-normative/compatibility/README.md
target: content/docs/specs/semconv/non-normative/compatibility/_index.md
- source: tmp/semconv/docs/non-normative/README.md
target: content/docs/specs/semconv/non-normative/_index.md
- source: tmp/semconv/docs/object-stores/README.md
target: content/docs/specs/semconv/object-stores/_index.md
- source: tmp/semconv/docs/registry/README.md
target: content/docs/specs/semconv/registry/_index.md
- source: tmp/semconv/docs/README.md
target: content/docs/specs/semconv/_index.md
- source: tmp/semconv/docs/registry/attributes/README.md
target: content/docs/specs/semconv/registry/attributes/_index.md
- source: tmp/semconv/docs/registry/entities/README.md
target: content/docs/specs/semconv/registry/entities/_index.md
- source: tmp/semconv/docs/resource/README.md
target: content/docs/specs/semconv/resource/_index.md
- source: tmp/semconv/docs/resource/cloud-provider/README.md
target: content/docs/specs/semconv/resource/cloud-provider/_index.md
- source: tmp/semconv/docs/registry/README.md
target: content/docs/specs/semconv/registry/_index.md
- source: tmp/semconv/docs/resource/cloud-provider/aws/README.md
target: content/docs/specs/semconv/resource/cloud-provider/aws/_index.md
- source: tmp/semconv/docs/resource/cloud-provider/gcp/README.md
target: content/docs/specs/semconv/resource/cloud-provider/gcp/_index.md
- source: tmp/semconv/docs/resource/cloud-provider/README.md
target: content/docs/specs/semconv/resource/cloud-provider/_index.md
- source: tmp/semconv/docs/resource/README.md
target: content/docs/specs/semconv/resource/_index.md
- source: tmp/semconv/docs/rpc/README.md
target: content/docs/specs/semconv/rpc/_index.md
- source: tmp/semconv/docs/runtime/README.md
Expand Down
24 changes: 24 additions & 0 deletions static/refcache.json
Original file line number Diff line number Diff line change
Expand Up @@ -6503,6 +6503,10 @@
"StatusCode": 206,
"LastSeen": "2025-10-17T09:41:39.719888223Z"
},
"https://github.com/open-telemetry/community/discussions/3098": {
"StatusCode": 206,
"LastSeen": "2025-10-27T12:41:04.136861-04:00"
},
"https://github.com/open-telemetry/community/issues": {
"StatusCode": 206,
"LastSeen": "2025-10-16T09:45:51.240502046Z"
Expand Down Expand Up @@ -6567,6 +6571,10 @@
"StatusCode": 206,
"LastSeen": "2025-10-15T10:11:50.393744197Z"
},
"https://github.com/open-telemetry/community/issues/3086": {
"StatusCode": 206,
"LastSeen": "2025-10-23T12:46:15.816184-04:00"
},
"https://github.com/open-telemetry/community/issues/828": {
"StatusCode": 206,
"LastSeen": "2025-10-16T09:40:37.590686474Z"
Expand Down Expand Up @@ -20131,6 +20139,14 @@
"StatusCode": 200,
"LastSeen": "2025-10-17T21:16:18.986575-04:00"
},
"https://www.cncf.io/wp-content/uploads/2025/04/CNCF-Annual-Report-2024_v2.pdf": {
"StatusCode": 200,
"LastSeen": "2025-10-23T12:46:22.058029-04:00"
},
"https://www.cncf.io/wp-content/uploads/2025/04/cncf_annual_survey24_031225a.pdf": {
"StatusCode": 200,
"LastSeen": "2025-10-23T12:46:24.016534-04:00"
},
"https://www.cockroachlabs.com/": {
"StatusCode": 200,
"LastSeen": "2025-10-18T18:36:58.434Z"
Expand Down Expand Up @@ -20323,6 +20339,10 @@
"StatusCode": 200,
"LastSeen": "2025-10-15T17:05:55.976009606Z"
},
"https://www.google.com/url?q=https://www.youtube.com/watch?v%3Dl8xiNOCIdLY&sa=D&source=docs&ust=1761158059548569&usg=AOvVaw3rCMkjmo1CMucSQtkHjDI3": {
"StatusCode": 200,
"LastSeen": "2025-10-23T12:46:17.523765-04:00"
},
"https://www.graalvm.org/latest/reference-manual/native-image/": {
"StatusCode": 206,
"LastSeen": "2025-10-15T17:05:42.45741998Z"
Expand Down Expand Up @@ -21759,6 +21779,10 @@
"StatusCode": 200,
"LastSeen": "2025-10-17T21:16:30.760387-04:00"
},
"https://www.youtube.com/watch?v=l8xiNOCIdLY": {
"StatusCode": 200,
"LastSeen": "2025-10-27T12:13:47.481412-04:00"
},
"https://www.youtube.com/watch?v=t550FzDi054": {
"StatusCode": 200,
"LastSeen": "2025-10-17T21:16:25.510173-04:00"
Expand Down