Artifacts in this repository follow the same compatibility requirements described in https://github.com/open-telemetry/opentelemetry-java/blob/main/VERSIONING.md#compatibility-requirements .
EXCEPT for the following incompatible changes which are allowed in stable artifacts in this repository:
experimental
otel.javaagent.testing
This means that:
experimental
or are under the namespace otel.javaagent.testing
) will be considered breaking changes
(unless they only affect telemetry produced by instrumentation)See https://github.com/open-telemetry/opentelemetry-java/blob/main/VERSIONING.md#stable-vs-alpha
IN PARTICULAR:
Not all of our artifacts are published as stable artifacts - any non-stable artifact has the suffix
-alpha
on its version. NONE of the guarantees described above apply to alpha artifacts. They may
require code or environment changes on every release and are not meant for consumption for users
where versioning stability is important.
Bumping the minimum supported library version for library instrumentation is generally acceptable if there's a good reason because:
The situation is much trickier for javaagent instrumentation:
For these reasons, bumping the minimum supported library version for a javaagent instrumentation requires more scrutiny and must be considered on a case-by-case basis.
When there is functionality in a new library version that requires changes to the javaagent instrumentation which are incompatible with the current javaagent base library version, some options that do not require bumping the minimum supported library version include:
assertInverse
to confirm
that the two instrumentations are never be applied to the same library version (see
class loader matchers
for how to restrict instrumentations to specific library versions). If there's too much copy-paste
between the two javaagent instrumentation modules, a -common
module can be extracted.