-
Notifications
You must be signed in to change notification settings - Fork 888
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make OTLP/HTTP the recommended default transport #1969
Make OTLP/HTTP the recommended default transport #1969
Conversation
c3aedf7
to
86d8805
Compare
@open-telemetry/ruby-approvers @open-telemetry/php-approvers please review. This makes gRPC the default and required transport and the compliance matrix currently says that Ruby and PHP don't support it OTLP/gRPC so this impacts you the most. |
gRPC is less commonly used in the Ruby ecosystem than in other languages and Ruby appears to be a lower priority than other languages for gRPC maintainers. This means that we have much less experience with gRPC in the Ruby SIG and little demand for it so far. Battle scars from spectacular Ruby + gRPC production failures also make some of us quite wary of the support burden. We have had considerable success with OTLP/HTTP in OpenTelemetry Ruby. Is there a strong reason to force gRPC as a default transport rather than leaving the default up to individual SIGs? Similarly, is there a strong reason to require gRPC as a transport? Both of these are challenging for the Ruby SIG. |
This comment has been minimized.
This comment has been minimized.
Discussed again in Maintainers meeting. Raw meeting notes:
To summarize this is what we want to do:
I am going to rewrite this PR according to the plan above. If there are any objections to the plan please speak up. |
86d8805
to
0f94378
Compare
2b70599
to
90c4a8a
Compare
90c4a8a
to
c5d95f2
Compare
@open-telemetry/specs-approvers PTAL. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gRPC has great implementations in C++, Go, Python, and Java, but the other language clients have usability and performance challenges. HTTP is ubiquitous.
I hope this is referring specifically to support for HTTP/2 in these languages. Unary gRPC is a trivial wire format and I think is basically the same to implement as HTTP given a library that supports HTTP/2. I don't know if some languages lack HTTP/2 client libraries, even in 2021, but maybe they do. I just hope people aren't getting confused into thinking gRPC is something very different, which it isn't, it's just modern HTTP like here where we don't use the gRPC library at all, it's more or less equivalent to the code implementing HTTP/protobuf.
The point is the HTTP/2 requirement - while it has become far more usable there are still plenty of situations such as internal load balancing strategies that can make it difficult. HTTP/1 is a better baseline. I just don't want people to be misunderstanding that this is about gRPC, which for unary is just a very small convention on top of HTTP/2, not something that itself would cause performance / usability problems. The Google API proto embedded in the OTLP HTTP/protobuf response probably provides more usability issues ;)
gRPC clients might be easy to implement (TIL!) but that is not obvious, and I don't think there is readily available documentation for that? I had the impression that gRPC is meant to be used with Google's toolchain for it (stub generator, ...) and everything else is rather unsupported. |
c5d95f2
to
98a8a14
Compare
Left a small comment regarding adding a "see below" note for the default value, but otherwise LGTM. |
98a8a14
to
0297525
Compare
Enough approvals, merging. |
Resolves open-telemetry#1885 - Strongly recommend SDKs to implement both OTLP/gRPC and OTLP/HTTP+Protobuf exporters. - Strongly recommend OTLP/HTTP+Protobuf to be the default protocol but allow language SDKs to choose a different default if they have good reasons.
Resolves #1885