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

Add rationale document with versioning/releasing details #1460

Merged
merged 7 commits into from
Jan 19, 2021

Conversation

lzchen
Copy link
Contributor

@lzchen lzchen commented Dec 9, 2020

@lzchen lzchen requested review from a team, codeboten and aabmass and removed request for a team December 9, 2020 17:08
Copy link
Contributor

@codeboten codeboten left a 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?

rationale.md Outdated Show resolved Hide resolved
@lzchen
Copy link
Contributor Author

lzchen commented Dec 9, 2020

@codeboten

how are other packages versioned (proto/instrumentation/exporters)?

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.
Open to suggestions on how to actually implement this.
In my opinion, we should do a similar release for contrib components like 1.0.0, which guarantees backwards compatibility for every change following it. Every change will result in a minor upgrade. As outlined in the otep, I don't believe we should upgrade versions across contribs for every release (currently, we bump all versions regardless if there are changes).
Thoughts?

how will code be marked as experimental?

Everything that exists in the in the X-experimental packages that are released are "experimental".
If you are asking about how we actually execute this in our codebase, we can probably create an "experimental" folder or use a different branch. However, these execution details do not need to be in this document.

@lzchen lzchen added the Skip Changelog PRs that do not require a CHANGELOG.md entry label Dec 9, 2020
@codeboten
Copy link
Contributor

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.
Open to suggestions on how to actually implement this.
In my opinion, we should do a similar release for contrib components like 1.0.0, which guarantees backwards compatibility for every change following it. Every change will result in a minor upgrade. As outlined in the otep, I don't believe we should upgrade versions across contribs for every release (currently, we bump all versions regardless if there are changes).
Thoughts?

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?

@lzchen
Copy link
Contributor Author

lzchen commented Dec 9, 2020

@codeboten

Right, I guess my question was more specifically around packages that are part of this repo rather than the contrib repo.

"Contrib" in this document does not refer to the contrib repo. According to the otep:
Contrib: plugins and instrumentation that make use of the API or SDK interfaces, but are not part of the core packages necessary for running OTel.

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.

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?

This makes sense. Anything with specs that are not stable should remain in experimental until the specs for them are stable.

@tedsuo
Copy link

tedsuo commented Dec 9, 2020

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.

@lzchen
Copy link
Contributor Author

lzchen commented Dec 10, 2020

@tedsuo
What would be the action item for Prometheus, Jaeger, etc? Would these be moved to contrib?

### SDK Stability:

Public portions of the SDK (constructors, configuration, end-user interfaces) must remain backwards compatible.
Internal interfaces are allowed to break.
Copy link
Contributor

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?

Copy link
Contributor Author

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

Copy link
Contributor

@codeboten codeboten left a comment

Choose a reason for hiding this comment

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

👍

@lzchen lzchen merged commit 5184c51 into open-telemetry:master Jan 19, 2021
@lzchen lzchen deleted the rationale branch January 19, 2021 00:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Skip Changelog PRs that do not require a CHANGELOG.md entry
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Document rationale and description of the release and versioning strategy
4 participants