This document defines the stability guarantees offered by the OpenTelemetry .NET Automatic Instrumentation, along with the rules and procedures for meeting those guarantees.
This project adheres to Semantic Versioning with one exception described here.
Release candidates are having the -rc.N
pre-release label.
Beta (experimental) releases are having the -beta.N
pre-release label.
OpenTelemetry .NET Automatic Instrumentation is built on top of OpenTelemetry .NET. Unfortunately, this may cause dependency version conflicts if the instrumented application is referencing the same assemblies as OpenTelemetry .NET Automatic Instrumentation.
The troubleshooting document describes how to resolve such conflicts.
This may be seen as a "breaking change" from the user perspective, but unfortunately it is currently unavoidable and bumping a major version during each dependency version bump would be an overkill.
See here.
There are a few cases when a major bump may occur.
- Breaking change of a stable functionality or configuration.
- Removal of a stable functionality or configuration.
Exception: Changes related to instrumentation libraries are handled the same way as experimental features.
Major versions bumps are avoided.
Most changes result in a minor version bump.
- Addition of new functionality, configuration, or instrumentation library.
- Making experimental functionality or configuration stable.
- Backwards compatible change in a stable functionality or configuration.
- Deprecation of a stable functionality.
- Dependency bump which may affect the user.
Changes related to the instrumentation libraries:
- Change (can be breaking) in a supported instrumentation library's functionality or configuration.
- Removal or deprecation of an instrumentation library.
Changes related to the experimental features:
- Change (can be breaking) in an experimental functionality or configuration.
- Removal of an experimental functionality or configuration.
Patch versions make no changes that would require recompilation or potentially break application code. The following are examples of patch fixes.
- Bug fixes that do not require minor version bumps per rules above.
- Security fixes.
We simply convert the Semantic Versioning scheme from
MAJOR.MINOR.PATCH
to 0.MAJOR.MINOR
.
The changes that would bump the patch version are bumping the minor version instead.