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

Transition plan for HTTP breaking changes where both old and new attributes can be sent for a while #3443

Merged
merged 8 commits into from
May 8, 2023

Conversation

trask
Copy link
Member

@trask trask commented Apr 26, 2023

Fixes #3362

Alternative to #3404

Changes

Adds transition plan for upcoming breaking changes to the unstable HTTP semantic conventions.

@trask trask force-pushed the transition-plan-3 branch 5 times, most recently from e17c02f to 5442c9a Compare April 26, 2023 03:17
@trask trask force-pushed the transition-plan-3 branch from 5442c9a to 1382c50 Compare April 26, 2023 03:17
@trask trask marked this pull request as ready for review April 26, 2023 03:18
@trask trask requested review from a team April 26, 2023 03:18
@arminru arminru added semconv:HTTP spec:metrics Related to the specification/metrics directory spec:trace Related to the specification/trace directory area:semantic-conventions Related to semantic conventions labels Apr 26, 2023
@tedsuo
Copy link
Contributor

tedsuo commented Apr 26, 2023

If double publishing is optional, how should users configure it? Should we define an ENV VAR?

@trask
Copy link
Member Author

trask commented Apr 26, 2023

If double publishing is optional, how should users configure it? Should we define an ENV VAR?

OTEL_PRESTABLE_SEMANTIC_ATTRIBUTES=old|new|both (with default value old)?

@tigrannajaryan
Copy link
Member

tigrannajaryan commented Apr 26, 2023

If double publishing is optional, how should users configure it? Should we define an ENV VAR?

OTEL_PRESTABLE_SEMANTIC_ATTRIBUTES=old|new|both (with default value old)?

Perhaps, alternatively, OTEL_USE_SEMCONV_VER=x.x.x or OTEL_USE_SEMCONV_VER=x.x.x,y.y.y (with list of versions), because what is new today is going to be old tomorrow and we don't want to keep introducing new variables. This should fail to start if the particular version or versions are not supported by the implementation. So, if you want both you list both versions. This requires the user to explicitly know which versions they want, which to me looks like a benefits since it forces them to do their homework and know what they are doing and what the implications of it are (since we have dates and transitions associated with versions).

@trask
Copy link
Member Author

trask commented Apr 26, 2023

I'm worried about trying to create something general (and opening more new questions).

What if we go in the other direction and make it clear that this environment variable is super-targeted to this one-time transition, e.g. something like:

OTEL_SEMANTIC_ATTRIBUTES_V1_21_PLUS=false|true|only (default value of false)

@reyang
Copy link
Member

reyang commented Apr 26, 2023

I'm worried about trying to create something general (and opening more new questions).

What if we go in the other direction and make it clear that this environment variable is super-targeted to this one-time transition ...

+1 👍

@trask
Copy link
Member Author

trask commented Apr 27, 2023

or maybe OTEL_SEMCONV_V1_21_0_TRANSITION_PLAN = false|latest|both (with default false)

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.

@trask
Copy link
Member Author

trask commented May 4, 2023

TODO: expand this beyond only HTTP since changes to network attributes impacts Messaging, Database, RPC, etc

this is addressed now, ptal

@trask
Copy link
Member Author

trask commented May 5, 2023

@tigrannajaryan @arminru @jmacd @dyladan can you take another look at this? thx!

Copy link
Member

@dyladan dyladan left a comment

Choose a reason for hiding this comment

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

Seems OK. I guess my only question left is how do we handle future breaks when, for example, messaging is updated? Will the env var accept multiple values like http,messaging/dup?

@dyladan
Copy link
Member

dyladan commented May 5, 2023

think this is the best version of the transition plan i've seen yet

@trask
Copy link
Member Author

trask commented May 5, 2023

Seems OK. I guess my only question left is how do we handle future breaks when, for example, messaging is updated? Will the env var accept multiple values like http,messaging/dup?

my thought is http/dup,messaging/dup

@dyladan
Copy link
Member

dyladan commented May 5, 2023

I'm concerned that we may have gone too far, and made something overly specific. The "one time transition" should refer to stabilizing all current semantic conventions, not just the HTTP conventions. Otherwise, we will continue to generate env vars with each domain we stabilize, and this will become confusing to users. I left more details in an in-line comment.

I think if we take an all or nothing break approach we will have 2 big problems:

  1. no good way to roll out gradually. being able to update a single semconv at a time gives users the ability to slowly roll their changes instead of everything all at once
  2. there is no telling how long the process will take to update all current semantic conventions, and that doesn't even take into consideration that new ones may be added in the future.

I think given those drawbacks we basically have to do this piece by piece approach unfortunately.

@trask
Copy link
Member Author

trask commented May 5, 2023

I'm concerned that we may have gone too far, and made something overly specific. The "one time transition" should refer to stabilizing all current semantic conventions, not just the HTTP conventions. Otherwise, we will continue to generate env vars with each domain we stabilize, and this will become confusing to users. I left more details in an in-line comment.

@dyladan I think @tedsuo's concern was regarding the earlier approach which was using the super-specific env var OTEL_SEMCONV_V1_21_0_TRANSITION_PLAN

Copy link
Contributor

@tedsuo tedsuo left a comment

Choose a reason for hiding this comment

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

This looks great. Thank you Trask and everyone for the thought put into this; I now feel confident with us moving forward with semconv stability in general.

@reyang reyang merged commit 48cd8cd into open-telemetry:main May 8, 2023
@trask trask deleted the transition-plan-3 branch October 14, 2024 21:04
carlosalberto pushed a commit to carlosalberto/opentelemetry-specification that referenced this pull request Oct 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:semantic-conventions Related to semantic conventions semconv:HTTP spec:metrics Related to the specification/metrics directory spec:trace Related to the specification/trace directory
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Defining transition period for pre-stability HTTP semconv breaking changes
10 participants