Document strategy to support experimental methods on stable interfaces #5882
Open
Description
Forked from #5768, and related to open-telemetry/opentelemetry-specification#4257.
Problem Statement
We should document our policy for how we support for experimental things in the specification. It doesn't mean we will always accept such features, but should describe how it would work. This includes:
- Experimental behavior with no API artifacts (e.g. exemplar collection, service.instance.id auto-generation).
- Today, we do this through
/internal/x
directories, andOTEL_GO_X_FOO
environment variables.
- Today, we do this through
- Experimental methods on SDK-only interfaces (e.g. span processor).
- Today, we do this by adding the new interface in an internal directory, and doing type assertions on the internal interface as in Implement span processor's OnEnding #5756.
- Experimental methods on API (and SDK) interfaces.
- This will be done using forks or long-lived branches on the repository.
- Experimental parameters (i.e. new option) for API functions.
- Experimental parameters (i.e. new option) for SDK functions.
- Experimental fields for API structs.
- Experimental fields for SDK structs.
This excludes:
- Experimental signals. It is assumed that these will be created as new, unstable modules while they are under development.
Proposed Solution
Decide and document how we are going to handle the above.