This repository was archived by the owner on Nov 17, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 162
Framework for defining the maturity of OpenTelemetry and its SIGs #232
Merged
tigrannajaryan
merged 17 commits into
open-telemetry:main
from
jpkrohling:jpkrohling/otep-maturity-of-otel
Dec 14, 2023
Merged
Changes from 12 commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
78de578
Framework for defining the maturity of OpenTelemetry and its SIGs
jpkrohling 602532f
Unified quotes
jpkrohling 0950878
markdown linter
jpkrohling 2c5b0bf
Add a few clarifications based on review round
jpkrohling fb08dbf
s/priority/tier-1
jpkrohling d908520
Remove super majority wording
jpkrohling c4df80a
Components in development may be removed without prior notice
jpkrohling 129f863
Remove the notion of tiers
jpkrohling 4fa94d4
Another round of reviews
jpkrohling 2706e1d
further clarifications
jpkrohling f5934ab
sig deliverables and components
jpkrohling 64f2ef7
Renamed to release candidate, add breaking change definition
jpkrohling f574bc2
s/should not/SHOULD NOT/
jpkrohling 904b3b8
Clarify breaking changes under special circumstances
jpkrohling 2403526
expand what we want as feedback around UX for components under develo…
jpkrohling fe37de3
Add further prior art
jpkrohling a1009a2
removed 'no further support fill be provided' from deprecated
jpkrohling File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| # Definition of maturity levels to be uniformly used by OpenTelemetry SIGs | ||
|
|
||
| On 08 Mar 2023, the OpenTelemetry GC and TC held an OpenTelemetry Leadership summit, discussing various topics. One of the themes we discussed was establishing standard rules for describing the maturity of the OpenTelemetry project. This OTEP summarizes what was discussed there and is intended to have the wider community provide feedback. | ||
|
|
||
| This OTEP builds on what was previously communicated by the project, especially the [Versioning and stability for OpenTelemetry clients](https://opentelemetry.io/docs/reference/specification/versioning-and-stability). | ||
|
|
||
| The Collector's [stability levels](https://github.com/open-telemetry/opentelemetry-collector#stability-levels) inspired the maturity levels. | ||
|
|
||
| ## Motivation | ||
|
|
||
| Quite often, the community is faced with the question of the quality and maturity expectations of its diverse set of components. This OTEP aims to bring clarity by establishing a framework to communicate the maturity for SIG deliverables and components in the name of the project. As the OpenTelemetry project comprises a multitude of SIGs, and each SIG has several components of varying quality, having this framework will help set the right expectations for OpenTelemetry users using a unified nomenclature. | ||
|
|
||
| ## Explanation | ||
|
|
||
| ### Maturity levels | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| Deliverables of a SIG MUST have a declared maturity level, established by SIG maintainers (SIGs), likely with the input of the code owners. While the main deliverable can have a specific maturity level, individual components might have a different one. Examples: | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| * the Collector core distribution might declare itself stable and include a receiver that is not stable. In that case, the receiver has to be clearly marked as such | ||
| * the Java Agent might be declared stable, while individual instrumentation packages are not | ||
|
|
||
| Components should not be marked as stable if their user-visible interfaces are not stable. For instance, if the Collector's component "otlpreceiver" declares a dependency on the OpenTelemetry Collector API "config" package which is marked with a maturity level of "beta", the "otlpreceiver" should be at most "beta". Maintainers are free to deviate from this recommendation if they believe users are not going to be affected by future changes. | ||
|
jpkrohling marked this conversation as resolved.
Outdated
|
||
|
|
||
| For the purposes of this document, a breaking change is defined as a change that may require consumers of our components to adapt themselves in order to avoid disruption to their usage of our components. | ||
|
|
||
| #### Development | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| Not all pieces of the component are in place yet, and it might not be available for users yet. Bugs and performance issues are expected to be reported. User feedback is desired, especially regarding the user experience (configuration options, component observability, technical implementation details, and so on). Configuration options might break often depending on how things evolve. The component SHOULD NOT be used in production. The component MAY be removed without prior notice. | ||
|
jpkrohling marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Alpha | ||
|
|
||
| This is the default level: any components with no explicit maturity level should be assumed to be "Alpha". The component is ready to be used for limited non-critical production workloads, and the authors of this component welcome user feedback. Bugs and performance problems are encouraged to be reported, but component owners might not work on them immediately. The component's interface and configuration options might often change without backward compatibility guarantees. Components at this stage might be dropped at any time without notice. | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| #### Beta | ||
|
|
||
| Same as Alpha, but the interfaces (API, configuration, generated telemetry) are treated as stable whenever possible. While there might be breaking changes between releases, component owners should try to minimize them. A component at this stage is expected to have had exposure to non-critical production workloads already during its Alpha phase, making it suitable for broader usage. | ||
|
jack-berg marked this conversation as resolved.
jpkrohling marked this conversation as resolved.
|
||
|
|
||
|
jpkrohling marked this conversation as resolved.
|
||
| #### Release Candidate | ||
|
|
||
| The component is feature-complete and ready for broader usage. The component is ready to be declared stable, it might just need to be tested in more production environments before that can happen. Bugs and performance problems are expected to be reported, and there's an expectation that the component owners will work on them. Breaking changes, including configuration options and the component's output, are not expected to happen without prior notice unless under special circumstances. | ||
|
jpkrohling marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Stable | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| The component is ready for general availability. Bugs and performance problems should be reported, and there's an expectation that the component owners will work on them. Breaking changes, including configuration options and the component's output, are not expected to happen without prior notice unless under special circumstances. | ||
|
jpkrohling marked this conversation as resolved.
Outdated
jpkrohling marked this conversation as resolved.
Outdated
jpkrohling marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Deprecated | ||
|
tigrannajaryan marked this conversation as resolved.
|
||
|
|
||
| Development of this component is halted, and no further support will be provided. No new versions are planned, and the component might be removed from its included distributions. Note that new issues will likely not be worked on except for critical security issues. Components that are included in distributions are expected to exist for at least two minor releases or six months, whichever happens later. They also MUST communicate in which version they will be removed, either in terms of a concrete version number or the date of a release, like: "the first release after 2023-08-01". | ||
|
jpkrohling marked this conversation as resolved.
Outdated
|
||
|
|
||
| #### Unmaintained | ||
|
|
||
| A component identified as unmaintained does not have an active code owner. Such components may have never been assigned a code owner, or a previously active code owner has not responded to requests for feedback within 6 weeks of being contacted. Issues and pull requests for unmaintained components SHOULD be labeled as such. After 6 months of being unmaintained, these components MAY be deprecated. Unmaintained components are actively seeking contributors to become code owners. | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| ## Trade-offs and mitigations | ||
|
|
||
| This OTEP allows SIG maintainers to declare the maturity of the SIG's deliverables without declaring which ones are key for OpenTelemetry. When, and if, this is needed, a new OTEP may be created using the maturity levels as a possible framework. | ||
|
|
||
| ## Prior art and alternatives | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| * The specification status has a ["Component Lifecycle"](https://opentelemetry.io/docs/specs/status/) description, with definitions that might overlap with some of the levels listed in this OTEP. | ||
|
jpkrohling marked this conversation as resolved.
|
||
| * The same page lists the status of the different parts of the spec | ||
| * The ["Versioning and stability for OpenTelemetry clients"](https://opentelemetry.io/docs/specs/otel/versioning-and-stability/#signal-lifecycle) page has a detailed view on the lifecycle of a signal and which general stability guarantees should be expected by OpenTelemetry clients. Notably, it lacks information about maturity of the Collector. This OTEP could be seen as clashing with the last section of that page, "OpenTelemetry GA". But while that page established a point where both OpenTracing and OpenCensus would be considered deprecated, this OTEP here defines the criteria for calling OpenTelemetry "stable" and making that a requirement for a future graduation. This would also make it clear to end-users which parts of the project they can rely on. | ||
| * The OpenTelemetry Collector has its own [stability levels](https://github.com/open-telemetry/opentelemetry-collector#stability-levels), which served as inspiration to the ones here. | ||
|
|
||
| ## Open questions | ||
|
|
||
| * Should SDKs be required to fully implement the specification before they can be marked as stable? See [open-telemetry/opentelemetry-specification#3673](https://github.com/open-telemetry/opentelemetry-specification/issues/3673) | ||
|
jpkrohling marked this conversation as resolved.
|
||
| * Should this OTEP define a file name to be adopted by all repositories to declare their deliverables and their maturity levels? | ||
|
jpkrohling marked this conversation as resolved.
|
||
|
|
||
| ## Future possibilities | ||
|
|
||
| Once the maturity levels are widely adopted, the GC/TC might decide to pick and choose components from different SIGs and proceed with a graduation proposal within the CNCF. The decision framework for choosing the components will be defined at a later stage. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.