-
Notifications
You must be signed in to change notification settings - Fork 800
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
Should all packages have the same version? #917
Comments
In my opinion, true semantic versioning is totally lost when everything shares the same package version. From a consumer perspective, it is better to be able to pull in targeted fixes rather than be forced to upgrade all packages. But doing this is hard and introduces developer friction for sure. |
I have had good success using this to help automate generating versions per package, https://github.com/dotnet/Nerdbank.GitVersioning |
I think it's nearing time for us to come back to this discussion. Up to now, we have maintained a distinction between core and non-core packages. Core packagesPer our current versioning guidelines, we have indicated that core packages will always have the same version.
Option 1: Maintain the current versioning policy long-termThere are a number of packages which should be considered core but do not yet have a stable release. I believe our process should be that as these packages reach stability, we should bump their versions to whatever the latest stable version is for the rest of the core packages. This includes the following:
For comparison, this option roughly maps to what the Java community is doing. The recommended method of consuming the core Java packages is to use their BOM (bill of materials - kinda like a meta-package) https://github.com/open-telemetry/opentelemetry-java#published-releases. Option 2: Allow for independent versioning of core packagesThis option would enable us to remain more true to semver as previously mentioned #917 (comment). Aside from the benefits of what semver communicates to end users, this option would also enable us to do things like separately bumping the major version of just the OTLP exporter as proposed in this discussion. I think adopting option 1 should preclude us from doing this. Non-core packagesToday, non-core packages include all our instrumentation packages and the OpenTelemetry.Extensions.Hosting package. Option 1: Do away with core/non-core distinction by considering everything a core packageIf the package is hosted within the opentelemetry-dotnet repository then we consider it "core". Option 2: Do away with core/non-core distinction by moving non-core packages out of this repositoryNon-core packages would move to opentelemetry-dotnet-contrib (or maybe even opentelemetry-dotnet-instrumentation). My current preference is to adopt Option 1 in both cases. That is, all packages are considered "core" and all packages are always versioned together. Personally, I appreciate that the most common instrumentations reside within the opentelemetry-dotnet project. Given that OpenTelemetry will remain an emerging technology for some time now, I think we should prioritize the simplicity of maintenance. If we take this approach, we may need to reassess this decision in the future. I can imagine scenarios where it could cause friction, but I do not feel that we've reached that point yet. |
I believe we've established the approach for this now? do we have a reference to the ultimate decision for this @alanwest? |
Closing. It was improved some time ago in #5531 |
Currently we're taking the easy approach - all the packages have the same version.
We were using this approach initially in OpenCensus Python, until we hit beta - there were new packages being added which are not ready (based on beta quality) so we ended up allowing each package to have its independent version. And this is what we carried over to OpenTelemetry Python.
Some of the obvious pros/cons to consider:
The text was updated successfully, but these errors were encountered: