-
Notifications
You must be signed in to change notification settings - Fork 264
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
Decide Conditions on Symbolic Stability to Declare OTLP 1.0 #400
Comments
@bogdandrutu @Aneurysm9 @dyladan @MrAlias @carlosalberto @ocelotl please see above and correct me if I missed anything. |
I agree that this is not a guarantee we can make as it would be outside our control. What I do think we should guarantee is the inverse: that we will not change the |
We talked about this in the spec meeting last week but I'll record my thoughts here for the record. I broadly agree with @tigrannajaryan's summary.
I agree with this in principle, but I think it would be better for us to identify which types of changes that may affect the code generation are and document them as specifically stable. Otherwise it may be difficult for someone outside the core maintainer group to understand why something was accepted or rejected. |
I think that if we introduce breaking changes, we should increase the major version number, only that. Introducing a breaking change may be inconvenient, but we should at least let the user know. |
For 2b, we can make the case to use only the "numbers/identifiers" and to not support the "string". I think currently only JS uses it, so if that is the case I would propose to see if that makes sense. I would propose to remove the "helper" enums in 2d. The reason is they are 2 (logs, metrics) of them already and if I am not mistaken they are inconsistent already. I would also want to make sure we document the guarantees for the generated code:
|
If this helps move things forward, I had a draft PR adding a linter to detect wire (binary and json) breaking changes to this repo. I am happy to revive it. It uses Buf breaking change detection which can also detect generated source code breaking changes. Here are all the rules it supports: https://docs.buf.build/breaking/rules |
2c + 2f -> This actually has wire level impact if we allow our messages to be written inside proto.Any (where a type_url + bytes field get written). I think we exclude that case and go with (Tigran's original suggestion) of 1, 2a and 2b for OTLP stability. When it comes to generated code, enforcing that ALL ways of generating code remains stable is definitely out-of-scope. We should allow clients to optimise/tweak on their own release schedules independently of the protocol itself. E.g.
In many languages there's more than one tool to generate clients for proto as well. While I think we should aim to provide stable client libraries, I don't think that's part of the discussion around stable OTLP. |
This is excellent and could really help take some of the guesswork and bikeshedding out of this. I would propose that we require |
@aabmass This is definitely very useful and can help prevent accidental mistakes when modifying the proto. |
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
The following PR clarifies the current state of stability guarantees: #406. When this issue is resolved I will adjust the stability definition, until then I want it to be there to make sure people don't rely on guarantees that don't yet exist. |
I would rather support string stability for enum values. In my mind the value of being able to change the strings later is outweighed by breaking user expectations that string enums can be used. Most if not all receivers of OTLP JSON do and will support string value enums because that is the default for the proto3. If a user is emitting JSON which uses those string values and the proto has a minor update they will be confused why their wire compatibility is broken. |
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
I agree. Another argument in favour of that: JSON is often used for its human readability and using symbolic names instead of numbers helps with readability. |
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
Having spent some time thinking about this I believe we should do this:
Before OTLP 1.0 is declared we must do the last batch of changes, with the following open PRs either accepted or rejected and issues resolved:
While resolving these open PRs/issues, before OTLP 1.0 is declared we MAY make breaking changes that are allowed by the current stability guarantees (cc @Aneurysm9 since you have a strong opinion about this particular clause). |
I support this approach. I think that there should still be a high bar for breaking changes at this point - we should not change things simply because we can, but because the changes are necessary - but now is the time to make these changes if they're needed. If none are needed then it is time to declare stability. |
@bogdandrutu we discussed this in the Spec SIG and the people present agreed with #400 (comment) |
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
This PR captures the current understanding of stability guarnatees. I want to make sure it is explicitly visible until we make a decision on open-telemetry#400 The most likely outcome of open-telemetry#400 is going to be stronger than current definition of "Stable.
@bogdandrutu Any opinion on #400 (comment) ? |
@tigrannajaryan I would add #412 to the list of issues to be resolved before JSON stability |
@dyladan Yes, I added it to the list here open-telemetry/opentelemetry-specification#1957 |
Data models and binary Protobuf for all 3 signals (traces,metrics,logs) is now declared Stable in OTLP.
We need to decide what else is remaining to declare OTLP as version 1.0.
We had a discussion in the Spec SIG meeting, here is the summary:
OTLP/JSON. We believe OTLP/JSON must be also declared Stable before OTLP is marked 1.0.0. This work is happening here Make OTLP http/json stable opentelemetry-specification#1957
Symbolic name stability in the proto files. This has a few components:
I believe 1, 2a and 2b are the absolute minimum before declaring OTLP 1.0.
We need to decide what we do about 2c-f. This decision needs to be made before declaring OTLP 1.0.
The text was updated successfully, but these errors were encountered: