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

Provide stronger symbolic stability guarantees #432

Conversation

tigrannajaryan
Copy link
Member

@tigrannajaryan tigrannajaryan commented Oct 18, 2022

Resolves #400

What this PR aims to guarantee stronger backward compatibility of symbols in .proto files. This means that if the same generator is used then most likely the generated code will be backward compatible, i.e. upgrading to a newer version of generated code should not break the build of a codebase that consumes the generated code and should not change the behavior (applies both to senders and receivers).

We do not guarantee the behavior of the generator itself. The notice about this remains in our README.

No guarantees are provided whatsoever about the stability of the code that is generated from the .proto files by any particular code generator.

I think this is the last major remaining issue that we need to agree on before we can mark this repo 1.0.

Please review and comment. Particularly I need opinions whether you think we should provide the stronger symbolic guarantees or not. If we disagree with the idea then the whole PR is pointless and should be discarded.

Please bring arguments in favour of your position to help make a decision.

@tigrannajaryan
Copy link
Member Author

Copy link
Member

@bogdandrutu bogdandrutu left a comment

Choose a reason for hiding this comment

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

You seem to try to offer "generated" code compatibility, which may be fine, but I think we should agree on that if this is what we want.

README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
@tigrannajaryan
Copy link
Member Author

You seem to try to offer "generated" code compatibility, which may be fine, but I think we should agree on that if this is what we want.

Yes. I updated the PR description to make the goal clear.

@Aneurysm9
Copy link
Member

I support this definition. I believe it reflects the consensus resulting from discussion on #400 and also what the user community expects from OTLP.

@jsuereth
Copy link
Contributor

jsuereth commented Nov 1, 2022

My opinion here is that this extra set of stability restrictions / guarantees on ourselves just alleviates downstream consumption friction. I don't think we need to allow ourselves extra flexibility here that seems to be contested.

I do agree that generated code should not be exposed as stable, but instead hidden behind interfaces. HOwever, that's a downstream concern we shouldn't enforce here.

I'm in favor of this change and would approve if it wasn't a Draft.

@tigrannajaryan
Copy link
Member Author

Here is the PR that only adds guarantees necessary for OTLP/JSON: #435

tigrannajaryan added a commit to tigrannajaryan/opamp-spec that referenced this pull request Jan 5, 2023
The guarantees mostly mirror the proposal for OTLP
(open-telemetry/opentelemetry-proto#432), the primary
difference being that OpAMP has no gRPC services defined and does not need
any guarantees for service definitions.
tigrannajaryan added a commit to tigrannajaryan/opamp-spec that referenced this pull request Jan 5, 2023
The guarantees mostly mirror the proposal for OTLP
(open-telemetry/opentelemetry-proto#432), the primary
difference being that OpAMP has no gRPC services defined and does not need
any guarantees for service definitions.

Resolves open-telemetry#134
tigrannajaryan added a commit to tigrannajaryan/opentelemetry-proto that referenced this pull request Mar 23, 2023
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of open-telemetry#432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about open-telemetry#432.
tigrannajaryan added a commit that referenced this pull request Apr 20, 2023
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of #432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about #432.
@tigrannajaryan tigrannajaryan force-pushed the feature/tigran/define-stability branch from bf866ac to 217a212 Compare April 20, 2023 01:03
@tigrannajaryan tigrannajaryan force-pushed the feature/tigran/define-stability branch from 217a212 to 9cba87a Compare April 20, 2023 14:10
@tigrannajaryan tigrannajaryan changed the title [DON'T MERGE] Define OTLP 1.0 Stability guarantees Provide stronger symbolic stability guarantees Apr 20, 2023
@tigrannajaryan
Copy link
Member Author

tigrannajaryan commented Apr 20, 2023

@open-telemetry/specs-approvers I updated this PR to make it clear what this is about: it provides stronger symbolic stability guarantees (without making any claims about the behavior of the code generator).

I think this is one the last major remaining issues that we need to agree on before we can mark this repo 1.0.

Please review and comment. Particularly I need opinions whether you think we should provide the stronger symbolic guarantees or not. If we disagree with the idea then the whole PR is pointless and should be discarded. Please bring arguments in favour of your position to help make a decision.

@tigrannajaryan tigrannajaryan marked this pull request as ready for review April 20, 2023 14:21
@tigrannajaryan tigrannajaryan requested a review from a team April 20, 2023 14:21
Copy link
Contributor

@jsuereth jsuereth left a comment

Choose a reason for hiding this comment

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

While this strictness isn't necessary, it avoid a serious of churn that I think will be beneficial to the community. I'm in favor of limiting ourselves this way.

README.md Show resolved Hide resolved
@carlosalberto
Copy link
Contributor

The TC re-reviewed this and the final outcome was to go ahead. Thanks for the reviews and sorry for the delay!

@carlosalberto carlosalberto merged commit c8b5678 into open-telemetry:main Apr 27, 2023
@tigrannajaryan tigrannajaryan deleted the feature/tigran/define-stability branch April 27, 2023 17:34
tigrannajaryan added a commit to tigrannajaryan/opentelemetry-proto that referenced this pull request May 8, 2023
We merged the open-telemetry#432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
open-telemetry#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
@tigrannajaryan
Copy link
Member Author

A follow-up PR to make it clear that symbolic guarantees go into effect only when 1.0 is released: #467

bogdandrutu pushed a commit that referenced this pull request May 9, 2023
We merged the #432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
tigrannajaryan added a commit to tigrannajaryan/opamp-spec that referenced this pull request May 15, 2023
The guarantees mostly mirror the proposal for OTLP
(open-telemetry/opentelemetry-proto#432), the primary
difference being that OpAMP has no gRPC services defined and does not need
any guarantees for service definitions.

Resolves open-telemetry#134
tigrannajaryan added a commit to open-telemetry/opamp-spec that referenced this pull request May 30, 2023
The guarantees mostly mirror the proposal for OTLP
(open-telemetry/opentelemetry-proto#432), the primary
difference being that OpAMP has no gRPC services defined and does not need
any guarantees for service definitions.

Resolves #134
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of open-telemetry#432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about open-telemetry#432.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
…metry#467)

We merged the open-telemetry#432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
open-telemetry#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of open-telemetry#432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about open-telemetry#432.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
…metry#467)

We merged the open-telemetry#432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
open-telemetry#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of open-telemetry#432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about open-telemetry#432.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
…metry#467)

We merged the open-telemetry#432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
open-telemetry#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
This PR explicitly lists the additive changes allowed and adds
a requirement that such additive changes must be accompanied by
interoperability explanation when necessary.

This is a subset of open-telemetry#432
that contains other guarantees that we did not yet agree to.
I believe this particular subset is necessary regardless of
what we decide about open-telemetry#432.
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
VinozzZ pushed a commit to VinozzZ/opentelemetry-proto that referenced this pull request Jun 21, 2024
…metry#467)

We merged the open-telemetry#432
without clarifying when exactly the guarantees start applying. The intent
was that the guarantees are needed for 1.0 release but we didn't make this
explicit.

We are now making this explicit and until 1.0 released we should be free
to fix the remaining known issues listed here:
open-telemetry#456

Once 1.0 release is made we can remove the [from 1.0.0] labels from the README.md.
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.

Decide Conditions on Symbolic Stability to Declare OTLP 1.0