You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is it necessary for the OTLP exporter to intentionally support OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_TRACES_PROTOCOL, OTEL_EXPORTER_OTLP_METRICS_PROTOCOL, OTEL_EXPORTER_OTLP_LOGS_PROTOCOL?
This requirement would create a dependency for the OTLP exporter on all the libraries utilized for implementing the transport protocols (such as the HTTP client, JSON parser, protobuf parser, and gRPC client). This means that users who only require the HTTP protocol might not want to introduce any gRPC dependencies to their application. In certain programming languages, like Go (as mentioned in this paper), it is customary to minimize the number of dependencies. This approach also helps reduce the overall "security surface" of the components. It's important to note that if a gRPC library used by the exporter had a CVE, the entire exporter would be considered vulnerable as well (since most security static analysis tools solely check dependencies and not how the code is structured).
Currently, most languages (such as C++, Go, Java, Python, JavaScript, and Ruby) follow the principle of minimizing the number of dependencies, with a separate OTLP exporter implementation for each protocol. Many of these languages also have additional "configurator" components that enable the creation of exporters selected via environmental variables (for instance, OTEL_TRACES_EXPORTER and OTEL_EXPORTER_OTLP_PROTOCOL).
However, in some languages, an OTLP exporter supports multiple protocols (.NET, Erlang, PHP, Rust). It's worth mentioning that for Rust, optional dependencies are supported, and it makes complete sense to structure it that way.
I believe that the decision of how OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_TRACES_PROTOCOL, OTEL_EXPORTER_OTLP_METRICS_PROTOCOL, OTEL_EXPORTER_OTLP_LOGS_PROTOCOL should be supported should be made by the language Special Interest Group (SIG).
I suggest updating the specification to indicate that OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_TRACES_PROTOCOL, OTEL_EXPORTER_OTLP_METRICS_PROTOCOL, OTEL_EXPORTER_OTLP_LOGS_PROTOCOLSHOULD be supported, with a footnote explaining that the support for these environment variables could be provided through separate components.
The text was updated successfully, but these errors were encountered:
Is it necessary for the OTLP exporter to intentionally support
OTEL_EXPORTER_OTLP_PROTOCOL
,OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
?This requirement would create a dependency for the OTLP exporter on all the libraries utilized for implementing the transport protocols (such as the HTTP client, JSON parser, protobuf parser, and gRPC client). This means that users who only require the HTTP protocol might not want to introduce any gRPC dependencies to their application. In certain programming languages, like Go (as mentioned in this paper), it is customary to minimize the number of dependencies. This approach also helps reduce the overall "security surface" of the components. It's important to note that if a gRPC library used by the exporter had a CVE, the entire exporter would be considered vulnerable as well (since most security static analysis tools solely check dependencies and not how the code is structured).
Currently, most languages (such as C++, Go, Java, Python, JavaScript, and Ruby) follow the principle of minimizing the number of dependencies, with a separate OTLP exporter implementation for each protocol. Many of these languages also have additional "configurator" components that enable the creation of exporters selected via environmental variables (for instance,
OTEL_TRACES_EXPORTER
andOTEL_EXPORTER_OTLP_PROTOCOL
).However, in some languages, an OTLP exporter supports multiple protocols (.NET, Erlang, PHP, Rust). It's worth mentioning that for Rust, optional dependencies are supported, and it makes complete sense to structure it that way.
I believe that the decision of how
OTEL_EXPORTER_OTLP_PROTOCOL
,OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
should be supported should be made by the language Special Interest Group (SIG).I suggest updating the specification to indicate that
OTEL_EXPORTER_OTLP_PROTOCOL
,OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
,OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
,OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
SHOULD be supported, with a footnote explaining that the support for these environment variables could be provided through separate components.The text was updated successfully, but these errors were encountered: