Skip to content

Commit

Permalink
Versioning doc update (#811)
Browse files Browse the repository at this point in the history
  • Loading branch information
lalitb authored Jun 1, 2021
1 parent f793e6e commit 5767f8e
Showing 1 changed file with 26 additions and 48 deletions.
74 changes: 26 additions & 48 deletions Versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,35 @@ This document describes the versioning policy for this repository.

## Goals

### API Stability
### API and SDK Compatibility

Once the API for a given signal (spans, logs, metrics, baggage) has been
officially released, that API module will function with any SDK that has the
same MAJOR version and equal or greater MINOR or PATCH version. For example,
application compiled with API v1.1 is compatible with SDK v1.1.2, v1.2.0, etc.

For example, libraries that are instrumented with `opentelemetry 1.0.1` will
function in applications using `opentelemetry 1.11.33` or `opentelemetry 1.3.4`.

### SDK Stability

Public portions of the SDK (constructors, configuration, end-user interfaces)
must remain backwards compatible. Internal types are allowed to break.
function in applications using `opentelemetry 1.11.33` or `opentelemetry 1.3.4`,
buy may not work in applications using `opentelemetry 2.0.0`.

### ABI Stability

Refer to the [ABI Policy](./docs/abi-policy.md) for more details. To summarise:

* ABI stability is guaranteed for the API.
* ABI stability is not guaranteed for the SDK. In case of ABI breaking changes,
instead of bumping up the major version, a new `inline namespace` version will
be created, and both old API and new API would be made available
simultaneously.
* The API is header only, and uses ABI compliant interfaces. However, ABI stability
is not guaranteed for SDK.
* In case of ABI breaking changes, a new `inline namespace` version will
be introduced, and the existing linked applications can continue using the older version
unless they relink with newer version.

## Policy
## Release Policy

* Release versions will follow [SemVer 2.0](https://semver.org/).
* Only a single source package containing both the api and sdk for all signals
will be released as part of each GitHub release.
* There will be source package releases for api and sdk. There won't be separate
releases for the signals. The release version numbers for api and sdk will not
be in sync with each other. As there would be more frequent changes expected
in sdk than in the api.
* Only a single source package containing the API, SDK, and exporters which are
required by the specification would be released. All these components are
always versioned and released together. For example, any changes in one of the exporter
would result in version update of the entire source package even though there is
no changes in API, SDK and other exporters.
* Experimental releases: New (unstable) telemetry signals and features will be
introduced behind feature flag protected by a preprocessor macro.

Expand Down Expand Up @@ -77,37 +72,20 @@ Refer to the [ABI Policy](./docs/abi-policy.md) for more details. To summarise:
Purely for illustration purposes, not intended to represent actual releases:

* v0.0.1 release:
* `opentelemetry-api 0.0.1`
* Contains experimental api's of trace, resouce ( no feature flag as major
version is 0 )
* No api's of logging and metrics available
* `opentelemetry-sdk 0.0.1`
* Contains experimental implementation of trace, resouce ( no feature flag
as major version is 0 )
* No implemtation of logging and metrics available
* v1.0.0 release: ( with traces )
* `opentelemetry-api 1.0.0`
* Contains stable apis of trace, baggage and resource
* experimental metrics api's behind feature flag
* `opentelemetry-sdk 1.0.0`
* Contains stable implementation of trace, baggage and resource
* experimental metrics api's behind feature flag
* Contains experimental API and SDK of trace (without feature flag)
* No API and SDK of logging and metrics available
* v1.0.0-rc1 release:
* Pre-release, no API/ABI guarantees, but more stable than alpha/beta.
* Contains pre-release API and SDK of trace, baggage and resource
* experimental metrics and logging API/SDK behind feature flag
* v1.0.0: ( with traces )
* Contains stable API and SDK of trace, baggage and resource
* experimental metrics and logging API/SDK behind feature flag
* v1.5.0 release (with metrics)
* `opentelemetry-api 1.5.0`
* Contains stable api's of metrics, trace, baggage, resource, context
modules
* experimental logging api still only behind feature flag
* `opentelemetry-sdk 1.5.0`
* Contains stable implementation of metrics, trace, baggage, resource,
context modules
* experimental logging implementation still only behind feature flag
* Contains stable API and SDK of metrics, trace, baggage, resource.
* experimental logging API/SDK behind feature flag
* v1.10.0 release (with logging)
* `opentelemetry-api 1.10.0`
* Contains stable api's of logging, metrics, trace, baggage, resource,
context modules
* `opentelemetry-sdk 1.10.0`
* Contains stable sdk of logging, metrics, trace, baggage, resource, context
modules
* Contains stable API and SDK of logging, metrics, trace, baggage, resource.

### Before moving to version 1.0.0

Expand Down

0 comments on commit 5767f8e

Please sign in to comment.