Currently we have the following awkward situation.
- Instrumentation Library depends on base
- Base depends on registry (complete implementation)
- Registry depends on api
By Having the instrumentation library depend on the registry implementation, this appears to go against the below:
This allows end users to consume API only without also consuming the implementation
Third party libraries and frameworks that add instrumentation to their code will have a dependency only on the API of OpenTelemetry client. The developers of third party libraries and frameworks do not care (and cannot know) what specific implementation of OpenTelemetry is used in the final application.
The developers of the final application normally decide how to configure OpenTelemetry SDK and what extensions to use.
To Address this I would propose we introduce a registry api module within the api gem which removes the need for instrumentation to take a dependency on the registry gem.
Further benefit would be that vendors who can implement their own registry using our api and that allow application developers to choose what registry to use as per above.
Currently we have the following awkward situation.
By Having the instrumentation library depend on the registry implementation, this appears to go against the below:
To Address this I would propose we introduce a registry api module within the api gem which removes the need for instrumentation to take a dependency on the registry gem.
Further benefit would be that vendors who can implement their own registry using our api and that allow application developers to choose what registry to use as per above.