@@ -31,6 +31,17 @@ changes are:
31
31
Such changes will be avoided - if they must be made, the ` MAJOR ` version of the artifact will be
32
32
incremented.
33
33
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
+
34
45
Backwards incompatible changes to ` internal ` packages are expected. Versions of published artifacts
35
46
are expected to be aligned by using BOMs we publish. We will always provide BOMs to allow alignment
36
47
of versions.
@@ -39,6 +50,12 @@ Changes may be made that require changes to the an app's dependency declarations
39
50
incrementing the version on ` MINOR ` version updates. For example, code may be separated out to a
40
51
new artifact which requires adding the new artifact to dependency declarations.
41
52
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
+
42
59
As a user, if you always depend on the latest version of the BOM for a given ` MAJOR ` version, and
43
60
you do not use classes in the ` internal ` package (which you MUST NOT do), you can be assured that
44
61
your app will always function and have access to the latest features of OpenTelemetry without needing
0 commit comments