Skip to content
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

Conversation

carlosalberto
Copy link
Contributor

@carlosalberto carlosalberto commented Jul 24, 2020

Fixes #637

Also specifies what's the expected location of TraceContext in the API.

@carlosalberto carlosalberto added area:api Cross language API specification issue area:sdk Related to the SDK spec:trace Related to the specification/trace directory release:required-for-ga Must be resolved before GA release, or nice to have before GA labels Jul 24, 2020
@carlosalberto carlosalberto requested review from a team July 24, 2020 12:33
Copy link
Contributor

@anuraaga anuraaga left a 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.

specification/trace/sdk.md Outdated Show resolved Hide resolved
@carlosalberto
Copy link
Contributor Author

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.

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 ;)

@anuraaga
Copy link
Contributor

Can you file the issue given you're about to close #637 without addressing the recent comments?

@carlosalberto
Copy link
Contributor Author

carlosalberto commented Jul 24, 2020

@anuraaga Please open a new issue with what you want. I went and looked for id generation and saw nothing. Maybe you are talking about a different issue? The related issue title itself says: "Is it acceptable for AWS x-ray propagators to be hosted by the OpenTelemetry project?"

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).

@carlosalberto
Copy link
Contributor Author

Oh, never mind, I saw that the id generation part is included in Tristan's comment ;) So let's definitely cover that in another issue.

@anuraaga
Copy link
Contributor

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.

@carlosalberto
Copy link
Contributor Author

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).

@open-telemetry open-telemetry deleted a comment from cijothomas Jul 27, 2020
specification/trace/api.md Outdated Show resolved Hide resolved
Copy link
Member

@reyang reyang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@carlosalberto
Copy link
Contributor Author

@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
Copy link
Member

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.

Copy link
Contributor Author

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.

Copy link
Member

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dyladan Any opinion? ;)

Copy link
Member

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the point that @dyladan tries to make, but I agree with @trask and probably we should host them for the moment. Or maybe make a list of supported once.

Copy link
Member

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.

Copy link
Member

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).

Copy link
Contributor Author

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!)

Copy link
Member

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the point that @dyladan tries to make, but I agree with @trask and probably we should host them for the moment. Or maybe make a list of supported once.

@yurishkuro
Copy link
Member

+1 for not including vendor-specific propagation formats in the SDKs.

Copy link
Member

@yurishkuro yurishkuro left a 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:

  1. should there be any propagation implementation included in the API?
  2. 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
Copy link
Member

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?

Copy link
Member

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

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.

@carlosalberto
Copy link
Contributor Author

@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 bogdandrutu merged commit 3891524 into open-telemetry:master Aug 5, 2020
@anuraaga
Copy link
Contributor

anuraaga commented Aug 5, 2020

@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 :(

@carlosalberto
Copy link
Contributor Author

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)

@anuraaga
Copy link
Contributor

anuraaga commented Aug 6, 2020

@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...

@carlosalberto
Copy link
Contributor Author

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

Good call, will remember on that. Thanks for the feedback!

carlosalberto added a commit to carlosalberto/opentelemetry-specification that referenced this pull request Oct 31, 2024
* 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:api Cross language API specification issue area:sdk Related to the SDK release:required-for-ga Must be resolved before GA release, or nice to have before GA spec:trace Related to the specification/trace directory
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Is it acceptable for AWS x-ray propagators to be hosted by the OpenTelemetry project?
9 participants