-
Notifications
You must be signed in to change notification settings - Fork 649
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
Add rationale document with versioning/releasing details #1460
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some questions that come to mind:
- how are other packages versioned (proto/instrumentation/exporters)?
- how will code be marked as experimental?
According to the otep, "Note that contrib packages are released separately from core packages. Contrib releases are not required to match version numbers with the core releases.". In terms of behaviour, look at "Contrib Stability" in the otep.
Everything that exists in the in the X-experimental packages that are released are "experimental". |
Right, I guess my question was more specifically around packages that are part of this repo rather than the contrib repo. Or does contrib include things like the OTLP or jaeger exporter packages? I would expect the same release strategy should be used on all packages that are officially supported by opentelemetry, which in this case would include the packages in this repo. I guess what I'm saying is that all things that we're creating packages for that are not well enough spec'd out should be marked as experimental. Does that make sense? |
"Contrib" in this document does not refer to the contrib repo. According to the otep: So my understanding is that OTLP or jaeger exporter is part of this "Contrib" definition. I agree for following the same release strategy, however, I do not think we need to maintain versions in lockstep with the api and sdk.
This makes sense. Anything with specs that are not stable should remain in experimental until the specs for them are stable. |
For clarity, contrib does refer to the contrib repo. Everything in that repo must be kept up to date with the latest release in a timely fashion, but can have its own version number and be released separately. Any plugin that lives in core must get versioned as part of the SDK. IMHO, that makes sense for OTLP and trace-context, but less sense for Prometheus, jaeger, etc. I think this comes back to distros, and how we bundle up contrib plugins for release. I'm not interested in creating churn, but it does seem like we have contrib items living in core for reasons of convenience that were perhaps temporary. |
@tedsuo |
### SDK Stability: | ||
|
||
Public portions of the SDK (constructors, configuration, end-user interfaces) must remain backwards compatible. | ||
Internal interfaces are allowed to break. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Must they always remain backward compatible? Could an SDK release a v2 or v3 that introduce breaking changes to SDK but still confirms to API 1.x? I know this shouldn't ideally happen but does the spec allow it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is taken right from the specs. Spec enforces backwards compatibility between SDK versions. My understanding is that a breaking change requires a major version bump (from 1.X.Y -> 2.0.0).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Addresses: open-telemetry/opentelemetry-specification#1267
Fixes: #1458