Skip to content

Commit 854dbf9

Browse files
authored
[chore][VERSIONING.md] Document approach to optional experimental interfaces (#11482)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description <!-- Issue number if applicable --> Documents the approach we have taken for adding experimental functionality to interfaces. We take this approach with: - `receiver.Factory`, may implement the [`receiverprofiles.Factory`](https://pkg.go.dev/go.opentelemetry.io/collector/receiver/receiverprofiles#Factory) optional interface (similar for other pipeline components) - `component.Host` may implement the [`componentstatus.Reporter`](https://pkg.go.dev/go.opentelemetry.io/collector/component/componentstatus#Reporter) optional interface. - `extension.Extension` may implement the optional interfaces in [`extensioncapabilities`](https://pkg.go.dev/go.opentelemetry.io/collector/extension/extensioncapabilities). In these cases we reserve the right to change the optional, experimental parts of the underlying struct we return. You can also check whether you are using experimental functionality by checking your `go.mod` and seeing if you use one of these experimental modules.
1 parent 8dae522 commit 854dbf9

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

VERSIONING.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ Unless otherwise specified in the documentation, the following may change in any
6262
* **Protocol compatibility**. Changing the default minimum version of a supported protocol (e.g. TLS) or dropping support for protocols when there are security concerns is not considered a breaking change.
6363
* **Dependency updates**. Updating dependencies is not considered a breaking change except when their types are part of the
6464
public API or the update may change the behavior of applications in an incompatible way.
65+
* **Underlying type for interfaces**. If a struct exported as an interface has an experimental
66+
method, this method may change or be removed in a minor version. The method will be published in an
67+
optional interface under an experimental module to signal it is experimental.
6568

6669
### Configuration structures
6770

0 commit comments

Comments
 (0)