@@ -23,4 +23,73 @@ try (Scope scope = TracingContextUtils.currentContextWith(span)) {
2323```
2424
2525It would not be possible to call ` recordException ` if ` span ` was also using try-with-resources.
26- Because this is a common usage for spans, we do not support try-with-resources.
26+ Because this is a common usage for spans, we do not support try-with-resources.
27+
28+
29+ ## Versioning and Releases
30+
31+ ### Assumptions
32+
33+ - This project uses semver v2, as does the rest of OpenTelemetry.
34+
35+ ### Goals
36+
37+ - API Stability:
38+ - Once the API for a given signal (spans, logs, metrics, baggage) has been officially released, code instrumented with that API module will
39+ function, * with no recompilation required* , with any API+SDK that has the same major version, and equal or greater minor or patch version.
40+ - For example, libraries that are instrumented with ` opentelemetry-api-trace:1.0.1 ` will function, at runtime with
41+ SDK library ` opentelemetry-sdk-trace:1.11.33 ` plus ` opentelemetry-api-trace:1.11.33 ` (or whatever specific versions are specified by
42+ the bom version ` 1.11.33 ` , if the individual versions have diverged).
43+ - We call this requirement the "ABI" compatibility requirement for "Application Binary Interface" compatibility.
44+ - SDK Stability:
45+ - Public portions of the SDK (constructors, configuration, end-user interfaces) must remain backwards compatible.
46+ - Precisely what this includes has yet to be delineated.
47+ - Internal implementation details of both the API and SDK are allowed to be changed,
48+ as long as the public APIs are not changed in an ABI-incompatible manner.
49+
50+ ### Methods
51+
52+ - Mature signals
53+ - API modules for mature (i.e. released) signals will be transitive dependencies of the ` opentelemetry-api ` module.
54+ - Methods for accessing mature APIs will be added, as appropriate to the ` OpenTelemetry ` interface.
55+ - SDK modules for mature (i.e. released) signals will be transitive dependencies of the ` opentelemetry-sdk ` module.
56+ - Configuration options for the SDK modules for mature signals will be exposed, as appropriate, on the ` OpenTelemetrySdk ` class.
57+ - Modules for these mature signals will be included in the opentelemetry-bom to ensure that users runtime dependencies are kept in sync.
58+ - Mixing and matching runtime API and SDK versions, eg. by avoiding use of the BOM, will not be supported by this project.
59+ - Once a public API (either in the official API or in the SDK) has been released, we will endeavor to support that API in perpetuity.
60+
61+ - Immature or experimental signals
62+ - API modules for immature signals will not be transitive dependencies of the ` opentelemetry-api ` module.
63+ - API modules will be versioned with an "-alpha" suffix to make it abundantly clear that depending on them is at your own risk.
64+ - API modules for immature signals will be co-versioned along with mature API modules, with the added suffix.
65+ - The java packages for immature APIs will be used as if they were mature signals. This will enable users to easily transition from immature to
66+ mature usage, without having to change imports.
67+ - SDK modules for immature signals will also be versioned with an "-alpha" suffix, in parallel to their API modules.
68+
69+ ### Examples
70+
71+ Purely for illustration purposes, not intended to represent actual releases:
72+
73+ - ` v1.0.0 ` release:
74+ - ` io.opentelemetry:opentelemetry-api:1.0.0 `
75+ - Includes APIs for tracing, baggage, context, propagators (via the context dependency)
76+ - ` io.opentelemetry:opentelemetry-api-metrics:1.0.0-alpha `
77+ - Note: packages here are the final package structure: ` io.opentelemetry.api.metrics.* `
78+ - ` io.opentelemetry:opentelemetry-sdk-trace:1.0.0 `
79+ - ` io.opentelemetry:opentelemetry-sdk-common:1.0.0 `
80+ - Shared code for metrics/trace implementations (clocks, etc)
81+ - ` io.opentelemetry:opentelemetry-sdk-metrics:1.0.0-alpha `
82+ - Note: packages here are the final package structure: ` io.opentelemetry.sdk.metrics.* `
83+ - ` io.opentelemetry:opentelemetry-sdk-all:1.0.0 `
84+ - The SDK side of ` io.opentelemetry:opentelemetry-api:1.0.0 `
85+ - No mention of metrics in here!
86+ - ` v1.15.0 ` release (with metrics)
87+ - ` io.opentelemetry:opentelemetry-api:1.15.0 `
88+ - Contains APIs for tracing, baggage, propagators (via the context dependency), metrics
89+ - ` io.opentelemetry:opentelemetry-sdk-trace:1.15.0 `
90+ - ` io.opentelemetry:opentelemetry-sdk-common:1.15.0 `
91+ - Shared code for metrics/trace implementations (clocks, etc)
92+ - ` io.opentelemetry:opentelemetry-sdk-metrics:1.15.0 `
93+ - Note: packages here have not changed from the experimental jar...just a jar rename happened.
94+ - ` io.opentelemetry:opentelemetry-sdk-all:1.15.0 `
95+ - The SDK side of io.opentelemetry:opentelemetry-api:1.15.0
0 commit comments