Skip to content

Commit 66285e2

Browse files
authored
Codify that we may stop publishing artifacts, and change unstable por… (#4729)
* Codify that we may stop publishing artifacts, and change unstable portions of otherwisse stable APIs * Revert ABI -> API * PR feedback
1 parent 57b05cb commit 66285e2

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

VERSIONING.md

+17
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ changes are:
3131
Such changes will be avoided - if they must be made, the `MAJOR` version of the artifact will be
3232
incremented.
3333

34+
A stable artifact may depend on an `-alpha` artifact, and expose classes, interfaces, enums, etc. of
35+
the `-alpha` artifact as part of its public API. In these cases, the stable artifact will place
36+
an [implementation](https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation)
37+
dependency (as opposed to an api dependency) on the `-alpha` artifact. In order to consume the
38+
portions of the API related to the `-alpha` artifact, a user must place their own implementation
39+
dependency on it. In adding the implementation dependency, the user has opted into to using
40+
an `-alpha` artifact, and we reserve the right to change the portions of the API pertaining to
41+
the `-alpha` artifact. This includes changing the names of methods, return types, argument types, etc.
42+
We will use this technique sparingly and only when there is some significant reduction in friction
43+
by including the `-alpha` artifact.
44+
3445
Backwards incompatible changes to `internal` packages are expected. Versions of published artifacts
3546
are expected to be aligned by using BOMs we publish. We will always provide BOMs to allow alignment
3647
of versions.
@@ -39,6 +50,12 @@ Changes may be made that require changes to the an app's dependency declarations
3950
incrementing the version on `MINOR` version updates. For example, code may be separated out to a
4051
new artifact which requires adding the new artifact to dependency declarations.
4152

53+
On rare occasions we may deprecate an entire stable artifact, with the intent of stopping functional
54+
changes or enhancements. In these situations we may stop publishing additional `MINOR` or `MAJOR`
55+
versions of the artifact. However, if necessary, we'll publish security fixes via `PATCH` releases.
56+
Despite stopping publishing, new versions of the BOM will continue to reference the last published
57+
version of the artifact, and the API of the last published version will remain stable.
58+
4259
As a user, if you always depend on the latest version of the BOM for a given `MAJOR` version, and
4360
you do not use classes in the `internal` package (which you MUST NOT do), you can be assured that
4461
your app will always function and have access to the latest features of OpenTelemetry without needing

0 commit comments

Comments
 (0)