-
Notifications
You must be signed in to change notification settings - Fork 896
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
Specify the initial propagators requirements. #735
Specify the initial propagators requirements. #735
Conversation
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.
This is informative and does indeed solve the original issue title of #637, but the recent comments seem to relate to components that aren't propagators, e.g., id generation. I guess people are hoping for a final word on those in the spec so I wouldn't eagerly close the issue with this.
The issue is simply about Propagators, on which we had found an initial agreement a few weeks ago (during a SIG call). For the extra components (e.g. id generation), so should definitely start another issue and get the ball rolling ;) |
Can you file the issue given you're about to close #637 without addressing the recent comments? |
@anuraaga Please open a new issue with what you want. I went and looked for Other than that, I will fill an issue for updating the VENDORS section, as mentioned by @tsloughter (which, then again, might require its own iterations). |
Oh, never mind, I saw that the |
Thanks! If the PR didn't have the "Fixes #637" that wouldn't have mattered at all but want to make sure it's not lost. |
Updated this PR to NOT require the B3 Propagator to be included in the SDK, switching to have it included in an extension package (using the keyword SHOULD). |
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.
LGTM.
Co-authored-by: Reiley Yang <[email protected]>
Co-authored-by: Reiley Yang <[email protected]>
@yurishkuro Removed Baggage/CorrelationContext from the API requirements. |
`Propagator`s implementing officially supported protocols such as | ||
[B3 Propagation Specification](https://github.com/openzipkin/b3-propagation), | ||
as well as additionally offered `Propagator`s implementing well known | ||
protocols such as AWS X-Ray trace header protocol, SHOULD be part of |
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.
We talked about this in the JS SIG meeting this week, and the maintainers had a discussion together about this specific topic as well. For open protocols like B3 or zipkin, i think this is fine, but I am hesitant to merge support for proprietary protocols.
You can see my comment on a JS repository PR here: open-telemetry/opentelemetry-js-contrib#163 (comment)
I have discussed this with the other maintainers @obecny and @mayurkale22 and we would like to keep vendor-specific code out of our hosted repositories if at all possible. We are happy to code-review vendor propagators and exporters, but we would prefer that these code modules be hosted and deployed from vendor-owned repositories. As an example, you can look at what GCP has done for their cloud trace and cloud monitoring exporters and propagator here GoogleCloudPlatform/opentelemetry-operations-js. At the time this repository was created, we had similar discussions with the GCP folks.
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.
@dyladan IIRC the old agreement we reached in a SIG call a few weeks ago was that having propagators will help with interoperability. Also, usually we don't have to be updating them, as they follow a specific, non-changing protocol.
Exporters are an entirely different thing, and we still do (and we will) document that such components have to exist in their vendor-specific repos.
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.
FWIW, we have started bundling vendor-specific propagators (ottracer
and xray
) inside of the default Java auto-instrumentation distribution. I think it's a nice convenience for both vendors and users, but we can unbundle if the community reaches a different consensus.
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.
@dyladan Any opinion? ;)
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.
My objection is unchanged. If someone has special requirements for interop with different backends like xray or something, it will require them to do some additional setup anyway. Since vendors like AWS already need to host packages for their exporter anyway, this is just one additional thing for them to host in the same way.
@trask when you say ottracer
do you mean OpenTracing? From my perspective, an OpenTracing propagator is fine to host, since it is an open initiative. xray is different because it is a proprietary, for-profit, vendor.
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.
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.
I agree with @dyladan. How can we decide which vendor should be allowed and which one not ?. With general rule we would like to simply avoid such situation as otherwise we might endup with having dozens of propagators / exporters etc. connected with many different vendors in contrib repo. Maintaining them will be difficult and imho should be out of the otel scope. I have nothing against making a list of supported propagators etc. and simply add some links in readme so people can find them easily and use them based on their own responsibility.
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.
@obecny I think you convinced me :). Maybe worth recommending vendors to write their propagators in similar way (reusable code that depends only on the API).
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.
@trask Actually that's a format we started using in Lightstep prior to using B3 (with the intention of having it as a standard for OpenTracing) - hence, it can be considered a vendor specific one.
Also, @trask I think you still will be able to package the vendor propagator (AWS X-Ray, Lightstep or any other you guys want to support) without problems, similarly in how you are importing the trace-propagators
package at this moment (hopefully!)
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.
I think you still will be able to package the vendor propagator (AWS X-Ray, Lightstep or any other you guys want to support) without problems
If the decision is to not include vendor-specific propagators in the otel repos, then it seems like the same logic should apply to what we include in the javaagent distribution.
`Propagator`s implementing officially supported protocols such as | ||
[B3 Propagation Specification](https://github.com/openzipkin/b3-propagation), | ||
as well as additionally offered `Propagator`s implementing well known | ||
protocols such as AWS X-Ray trace header protocol, SHOULD be part of |
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.
+1 for not including vendor-specific propagation formats in the SDKs. |
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.
For a small PR this invites a lot of controversy. I recommend closing it and discussing two different aspects separately:
- should there be any propagation implementation included in the API?
- vendor-specific extensions should not be part of API or SDK
@@ -266,3 +267,11 @@ Sets the global `Propagator` instance. | |||
Required parameters: | |||
|
|||
- A `Propagator`. This usually will be a composite instance. | |||
|
|||
## Included Propagators Distribution |
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.
This section looks very confused.
- why does it discuss X-Ray here? If X-Ray format were to be discussed at all, would it not be in the trace/api file?
- B3 format does support baggage so with a bit of a stretch I can see why it would be mentioned here (in "context" dir), but why is it not mentioned in trace/api file?
- The section title is "Included", making you think these are included in the API. However, the paragraph ends with "SHOULD be part of official OpenTelemetry extension packages." - then what is it doing in the API file?
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.
Good point actually. I assume this spec was written with only SpanContext propagation in mind? If so, this should be called out explicitly.
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.
A better place may be around here: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/library-guidelines.md#protocol-exporters
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.
@Oberon00 We can move this (updated) section there, sure.
@yurishkuro This PR intends to simply reflect the current state and the recommended location for propagators. There's another PR that will solve the issue on whether API should or not include (and do) out of the box propagation: #721 |
@bogdandrutu I'm concerned about the quick merge on this PR (yes I know I'm usually talking about the opposite :P). e7abd4a is a huge change in the definition of the spec made 10 hours ago. This is after @yurishkuro's suggestion to close this PR and split into two here #735 (review) - I was waiting to see whether this would be split or continue before providing more comments. But instead it seems the spec got changed and merged overnight :( |
If @bogdandrutu hadn't merged it, I would have done myself ;) The reason for this was a second discussion in the Specification meeting around this (with great feedback from JS maintainer @dyladan ), along @yurishkuro's approval given the fact I mentioned there's a related issue already. More context: on last Monday there was A LOT of feedback regarding the lack of velocity regarding the Specification issues/PRs handling, and there was a call to a) Reduce scope in PRs, so we can move fast (follow ups are suggested for further discussion/tunning), and b) A call to the maintainers to make a 'hard' call when things go slow (as it had happened with this PR). So please open a follow up issue if you want to propose changes around this ;) (btw, I still have a follow up to move the vendor propagators to https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/library-guidelines.md#protocol-exporters, as suggested) |
@carlosalberto OK, but definitely need to at least summarize the actual discussion that happened in the SIG meeting or a link to concrete notes about it. Many people can't join SIG meetings, due to time zone or other obligations, so they're effectively not an open forum for discussion, unlike offline conversation on GitHub. Making 'hard' calls is hard - not because of the actual decision making process but communicating it with empathy, an active desire to understand and support another party, something I find is sorely lacking among the committee members here... |
Good call, will remember on that. Thanks for the feedback! |
* Specify the initial propagators requirements. * Do not require the SDK to include the B3 protocol. * Update specification/trace/api.md Co-authored-by: Reiley Yang <[email protected]> * Update specification/correlationcontext/api.md Co-authored-by: Reiley Yang <[email protected]> * Remove the CorrelationContext propagator requirement. * Make TraceContext optional in the API. * Update the propagators location. * Fix typo. Co-authored-by: Reiley Yang <[email protected]>
Fixes #637
Also specifies what's the expected location of TraceContext in the API.