From 629faa176234da19e47cb754478f383175bb72b6 Mon Sep 17 00:00:00 2001 From: Pablo Baeyens Date: Thu, 21 Nov 2024 01:35:48 -0700 Subject: [PATCH] [chore][VERSIONING.md] Document approach to optional experimental interfaces (#11482) #### Description 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. --- VERSIONING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/VERSIONING.md b/VERSIONING.md index 68d69ee23fe2..0cd399b16f79 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -62,6 +62,9 @@ Unless otherwise specified in the documentation, the following may change in any * **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. * **Dependency updates**. Updating dependencies is not considered a breaking change except when their types are part of the public API or the update may change the behavior of applications in an incompatible way. +* **Underlying type for interfaces**. If a struct exported as an interface has an experimental +method, this method may change or be removed in a minor version. The method will be published in an +optional interface under an experimental module to signal it is experimental. ### Configuration structures