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

Mark legacy exporter features in spec compliance optional. SDKs are free to su… #1359

Merged

Conversation

anuraaga
Copy link
Contributor

…pport it if they'd like.

Fixes #1356

Changes

Removes jaeger-thrift-http from compliance matrix

@anuraaga
Copy link
Contributor Author

I left jaeger thrift UDP since my reading of the jaeger docs made it seem it's still a good idea for jaeger in agent mode, but I don't know if that's actually true. Let me know if it makes sense.

@Oberon00
Copy link
Member

Oberon00 commented Jan 21, 2021

I left jaeger thrift UDP since my reading of the jaeger docs made it seem it's still a good idea for jaeger in agent mode, but I don't know if that's actually true. Let me know if it makes sense.

Even if it is a good idea, it still doesn't sound like it would be essential.

@iNikem
Copy link
Contributor

iNikem commented Jan 21, 2021

If compliance matrix represents what SDKs MUST implement for GA, then the question is "why do we have Jaeger Thrift UDP in there?" Is it to satisfy some backward compatibility? Or there is an actual business use case for it?

If there are no good answers to that question, then we should remove it to simplify GA.

@yurishkuro
Copy link
Member

I think this change takes away from the project by hiding the features that some SDK maintainers already spent effort on implementing. Instead, it would make more sense to me to declare certain features as optional for SDKs to implement, but still have the features matrix where one can compare SDKs across many dimensions.

Cf. https://www.jaegertracing.io/docs/1.21/client-features/

@iNikem
Copy link
Contributor

iNikem commented Jan 21, 2021

@yurishkuro That is a very good idea. But I heard several times that "All language SIGs MUST implement everything in spec compliance matrix before GA". Is TC willing to change this stance and to bring optional components into the matrix?

@Oberon00
Copy link
Member

The spec compliance matrix is geared towards maintainers and release mangagers, not external users IMHO. But I'm OK with moving this to some "optional features" section.

@yurishkuro
Copy link
Member

There are plenty of - and empty cells in this matrix, I feel like "MUST implement" is overstating it. Makes even more sense to designate some rows as required/optional.

The spec compliance matrix is geared towards maintainers and release managers, not external users

At some point there will need to be a public (and pretty) version of the features matrix similar to that Jaeger page. I think this matrix should be treated as a source of truth.

@Oberon00
Copy link
Member

There are plenty of - and empty cells in this matrix, I feel like "MUST implement" is overstating it.

I think most of the rows do correspond to (one or more) MUST-requirements. But it can't hurt to check.

@carlosalberto
Copy link
Contributor

+1 to moving it to an optional section (at the bottom probably?)

@yurishkuro
Copy link
Member

to moving it to an optional section (at the bottom probably?)

I would rather add a Require/Optional column, it is easier to read the table when semantically relevant entries are grouped together.

@anuraaga
Copy link
Contributor Author

Ok - added an optional column instead and my interpretation of what seems optional, please make suggestions as needed.

Copy link
Contributor Author

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

The optional ones are meant to indicate what's optional long term, this isn't meant to tie to 1.0 or GA requirements in any way.

|Honors retryable responses with backoff | + | | + | + | + | - | | | | - | - | |
|Honors non-retryable responses | + | | - | + | + | - | | | | - | - | |
|Honors throttling response | + | | - | + | + | - | | | | - | - | |
|Multi-destination spec compliance | - | | | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1109) | | - | | | | - | - | X |
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not really sure what this spec is :) As no SDK has implemented it yet assuming it's optional.

@anuraaga anuraaga changed the title Remove jaeger-thrift-http from compliance matrix. SDKs are free to su… Mark legacy exporter features in spec compliance optional. SDKs are free to su… Jan 22, 2021
spec-compliance-matrix.md Outdated Show resolved Hide resolved
@Oberon00
Copy link
Member

I would rather add a Require/Optional column, it is easier to read the table when semantically relevant entries are grouped together.

I am against that. The table is large enough as it is. This column would invite all minor optional features to be added, even if they are just in one SDK.

@yurishkuro
Copy link
Member

This column would invite all minor optional features to be added, even if they are just in one SDK.

I doubt it. Features in the matrix must be spelled out elsewhere in the spec, and we can always turn down such changes if they are not general enough.

@Oberon00
Copy link
Member

Features in the matrix must be spelled out elsewhere in the spec,

That's a good point, I think that should be the case. But I cannot find "thrift" in https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk_exporters/jaeger.md

|OTLP/HTTP binary Protobuf Exporter | - | - | + | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1106) | + | + | | | + | - | - | X |
|OTLP/HTTP JSON Protobuf Exporter | - | - | + | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1003) | | - | | | | - | - | X |
|OTLP/HTTP gzip Content-Encoding support | - | - | + | + | + | - | | | | - | - | X |
|Concurrent sending | - | | + | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1108) | | - | | + | | - | - | |
Copy link
Contributor

Choose a reason for hiding this comment

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

is this mandatory?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I figure if an exporter is called twice concurrently there's an expectation that the two sends would happen at the same time in any language.

|OTLP/HTTP JSON Protobuf Exporter | - | - | + | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1003) | | - | | | | - | - | X |
|OTLP/HTTP gzip Content-Encoding support | - | - | + | + | + | - | | | | - | - | X |
|Concurrent sending | - | | + | [-](https://github.com/open-telemetry/opentelemetry-python/issues/1108) | | - | | + | | - | - | |
|Honors retryable responses with backoff | + | | + | + | + | - | | | | - | - | |
Copy link
Contributor

Choose a reason for hiding this comment

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

is this required? If an SDK allows people to configure the grpc channel however they want, does that fulfill this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Handling retry well seems like a nice feature to support eventually, though not necessarily for 1.0 (which was my intent). I'd think being able to configure the gRPC channel could be enough, and shortcuts could be added based on user demand independently of this spec.

@mwear
Copy link
Member

mwear commented Jan 26, 2021

I don't oppose this in principal, but I do oppose several of the choices as to which features are required and which are optional, especially at this stage of the game. Ruby chose proto over http for its OTLP exporter and Thrift for the Jaeger exporter. We do not have gRPC versions of either, which are listed as required. Ideally, we'd have a less restrictive policy, such as, you need an OTLP and Jaeger exporter, but you choose whichever transport makes most sense for your SIG. cc: @fbogsany.

@iNikem
Copy link
Contributor

iNikem commented Jan 26, 2021

@mwear What do you mean by "choices"? This PR marks some features which were required for GA as now optional, relaxing the requirements. It does not bring any new requirements on the table.

It was said several times during both maintainers and spec meetings that ALL rows in spec compliance matrix are required for GA. If some SIGs find some of those requirements unreasonable, please raise that concern loud and clear. Probably as separate issue/PR.

@anuraaga
Copy link
Contributor Author

It was said several times during both maintainers and spec meetings that ALL rows in spec compliance matrix are required for GA.

I actually didn't know this either :) In that case, I feel like I need to mark most of the retry stuff as optional, and add some text that for each type of exporter, only one format is required for GA.

@iNikem
Copy link
Contributor

iNikem commented Jan 26, 2021

It was said several times during both maintainers and spec meetings that ALL rows in spec compliance matrix are required for GA.

I actually didn't know this either :) In that case, I feel like I need to mark most of the retry stuff as optional, and add some text that for each type of exporter, only one format is required for GA.

I am happy to be wrong here :) @open-telemetry/technical-committee can you confirm or deny that "ALL rows in spec compliance matrix are required for GA"?

@carlosalberto
Copy link
Contributor

In that case, I feel like I need to mark most of the retry stuff as optional, and add some text that for each type of exporter, only one format is required for GA.

That's correct - I think, as time goes by, we may make more items mandatory, i.e. more exporter protocols. But for now we need to make more items optional.

@carlosalberto
Copy link
Contributor

I am happy to be wrong here :) @open-telemetry/technical-committee can you confirm or deny that "ALL rows in spec compliance matrix are required for GA"?

That was the plan IIRC, yes. In that regard, the Matrix can help us know whether we are complete and ready to release or not ;)

@carlosalberto
Copy link
Contributor

Ideally, we'd have a less restrictive policy, such as, you need an OTLP and Jaeger exporter, but you choose whichever transport makes most sense for your SIG.

During today's Spec call we decided to go with this decision. Hope that makes sense @anuraaga ;)

| links collection size limit | | | + | + | + | + | - | | + | | - | + |
| [Span attributes](specification/trace/api.md#set-attributes) | | | | | | | | | | | | |
| SetAttribute | | + | + | + | + | + | + | + | + | + | + | + |
| Set order preserved | X | + | - | + | + | + | + | + | + | + | + | + |
Copy link
Member

Choose a reason for hiding this comment

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

Should we use YES instead of X for the optional values?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Have no preference for either, so for now sticking with what's here unless someone has stronger preference :)

Copy link
Member

Choose a reason for hiding this comment

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

I'd prefer just writing Optional in there (the column has the width of the header anyway), so one would not have to look up the heading. Anyway, I'd rather merge this asap to avoid conflicts and consider prettifying it afterwards in a smaller changeset.

@SergeyKanzhelev
Copy link
Member

@jkwatson @anuraaga any objections for the current version? There are couple outdated unresolved comments, thus the question. If no input for a day, I'd consider there is no objections.

Base automatically changed from master to main January 27, 2021 21:16
@carlosalberto
Copy link
Contributor

@SergeyKanzhelev We still need to make this clarification:

you need an OTLP and Jaeger exporter, but you choose whichever transport makes most sense for your SIG.

@anuraaga
Copy link
Contributor Author

Made some updates

  • Added an asterisk note that one of the supported formats of an exporter type is required
  • Didn't include Zipkin V1 in this, I think V1 is not enough to be conidered supporting Zipkin and that is truly optional, one of the V2 formats is required
  • Took the liberty to mark the retry / throttling stuff optional, I'd be surprised if we want to block SIGs on going GA for them, in some languages it seems like it could be pretty tough.

spec-compliance-matrix.md Outdated Show resolved Hide resolved
Co-authored-by: Christian Neumüller <christian+github@neumueller.me>
| links collection size limit | | | + | + | + | + | - | | + | | - | + |
| [Span attributes](specification/trace/api.md#set-attributes) | | | | | | | | | | | | |
| SetAttribute | | + | + | + | + | + | + | + | + | + | + | + |
| Set order preserved | X | + | - | + | + | + | + | + | + | + | + | + |
Copy link
Member

Choose a reason for hiding this comment

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

I'd prefer just writing Optional in there (the column has the width of the header anyway), so one would not have to look up the heading. Anyway, I'd rather merge this asap to avoid conflicts and consider prettifying it afterwards in a smaller changeset.

| `null` values documented as invalid/undefined | | | + | + | + | | N/A | | | + | | N/A |
| Unicode support for keys and string values | | + | + | + | + | + | + | + | + | + | + | + |
| [Span linking](specification/trace/api.md#specifying-links) | | | | | | | | | | | | |
| AddLink | | + | + | + | + | + | + | + | + | - | + | + |
Copy link
Member

Choose a reason for hiding this comment

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

C++: + to - on purpose?

Copy link
Contributor

Choose a reason for hiding this comment

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

Ooops, I just realized we just had a race condition, my bad :( Would you mind filling issues (or PRs) to follow these two details up?

Copy link
Member

Choose a reason for hiding this comment

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

No worries, I think it's fine actually, as it seems to be indeed missing:
https://github.com/open-telemetry/opentelemetry-cpp/blob/main/api/include/opentelemetry/trace/span.h
The other change is just cosmetic, nothing urgent.

@carlosalberto
Copy link
Contributor

Merging this now as we have enough approvals. @bogdandrutu please let me know if you still prefer a YES instead of an X for the Optional column, as I can easily cook a PR myself.

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Consider removing jaeger thrift from compliance matrix (or marking it optional somehow)