-
Notifications
You must be signed in to change notification settings - Fork 819
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
[otlp] Remove Grpc.Core Deprecated Package Dependency from OTLP Exporter #6209
Comments
I fully understand the idea of removing deprecated dependency due to lack of support for this package.
- `grpc` for protobuf-encoded data using gRPC wire format over HTTP/2 connection
- `http/protobuf` for protobuf-encoded data over HTTP connection
- `http/json` for JSON-encoded data over HTTP connection
SDKs SHOULD support both `grpc` and `http/protobuf` transports and MUST
support at least one of them. If they support only one, it SHOULD be
`http/protobuf`. They also MAY support `http/json`.
If no configuration is provided the default transport SHOULD be `http/protobuf`
unless SDKs have good reasons to choose `grpc` as the default (e.g. for backward
compatibility reasons when `grpc` was already the default in a stable SDK
release).
### Language version support
Each language implementation SHOULD define
how the removal of a supported language/runtime version
affects its versioning.
As a rule of thumb,
it SHOULD follow the conventions in the given ecosystem.
## Long Term Support

### API support
Major versions of the API MUST be supported for a minimum of **three years** after the release of the next major API version.
API support is defined as follows.
* API stability, as defined above, MUST be maintained.
* A version of the SDK which supports the latest minor version of the last major version of the API will continue to be maintained during LTS.
Bug and security fixes MUST be backported. Additional feature development is NOT RECOMMENDED.
* Contrib packages available when the API is versioned MUST continue to be maintained for the duration of LTS.
Bug and security fixes will be backported.
Additional feature development is NOT RECOMMENDED.
### SDK Support
SDK stability, as defined above, will be maintained for a minimum of **one year** after the release of the next major SDK version.
### Contrib Support
Contrib stability, as defined above, will be maintained for a minimum of **one year** after the release of the next major version of a contrib package. From the specification perspective it should be fine to drop the support both for .NET Framework and .NET Standard. What is the risky part is to manage communication with this breaking change. The most natural for path is to do all changes directly in Alternative approach I can see (IMO it is still breaking change from the end user perspective) is to fully EoL existing package and release new under new name (spliting?). It still requires the same level of support for the 1.x branch for old OTLP package. I think that
The worst part - technical way how to manage release with diffent versions in the same repository (we have precedence in contrib, and also here for non-stable packages). Any other thoughts? Scenarios to be considered? @open-telemetry/dotnet-instrumentation-approvers, dropping support for GRPC seems to be a breaking change also for Auto Instrumentation and will leads us to 2.0 release. |
Some old haunting contradictions I see:
If grpc is poorly supported on .NET FX, I don't see the point to push it further from OTel side. At least spec seems to agree with this, to drop it. Otherwise SDK has been dropping exporter packages (Jaeger) before without bumping major version. But I guess because grpc was tied to defaults / spec, then it's a more problematic change.
Does it affect us if our default was http/protobuf from the beginning? |
Last SIG notes
I will bring this discussion for re-consideration #2855. Nothing change by last 3 years. IMO we are not able to switch default/remove grpc without major bump. It will leads to tons of the issues for the manual usages. Other, IMO lest important topics for consideration causing some problems for the customer:
I do not think that bumping this versions is so problematic, we need to maintain only security fixes and potentially important bugfixes by 1 year. OTLP Exporter in 1.11.2 seems to be pretty solid, I hope that we will no need to make any other hotfixes there. |
Based on the SIG discussion held on April 1, 2025, we decided to proceed with a minor version release (1.12.0) to remove the The group also agreed to change the default export protocol to This approach allows us to remove a deprecated and unsupported dependency while continuing to support .NET Framework through safer and maintainable means—all without the disruption of a major version bump. SIG Notes: https://docs.google.com/document/d/1yjjD6aBcLxlRazYrawukDgrhZMObwHARJbB9glWdHj8/edit?tab=t.0 Introducing a major version would necessitate maintaining both 1.x and 2.x branches in parallel, fragmenting engineering focus and increasing overhead for ongoing development, security updates, and support. Given that this change does not alter public APIs and impacts only a subset of users, the cost of a major version release would be disproportionate to the scope of the actual change.
Thanks for the input. That’s a fair point—and to clarify, we agree that supporting occasional patch releases in the 1.11.x line (e.g., for security fixes or high-impact bugs) is reasonable and does not carry the same long-term cost as maintaining full parallel major versions. As you mentioned, the OTLP exporter in 1.11.2 is in a stable state, and we don’t anticipate frequent patching needs. So maintaining 1.11.x in parallel for essential updates should be manageable without significant overhead. |
Yet the default behavior changes completely, It will basically send the data to a different destination (different endpoint and different protocol). There may be lots of users that depend on this behavior (e.g. have a Colllector that has only an OTLP gRPC receiver). There is a reason why SemVer stands for "semantic versioning". From https://semver.org/#what-if-i-inadvertently-alter-the-public-api-in-a-way-that-is-not-compliant-with-the-version-number-change-ie-the-code-incorrectly-introduces-a-major-breaking-change-in-a-patch-release:
OpenTelemetry values end-user experience over the maintenance experience. I think it would be more valuable to make the software good for the users and seek ways to manage it efficiently. I think it is fine do start working 2.x and create 2.x hot-fix releases only when it is necessary. Maybe it won't be ever needed. Please consider what would be better for the users. From https://opentelemetry.io/community/mission/#we-value-stability:
|
The good side of 2.x is that .NET's default can be fixed also. |
We are admittedly in a tough spot with respect to the old, deprecated gRPC library. There has been no further update that it will continue to be maintained. Last update stated that maintenance would continue through October 2024. @jtattermusch are there plans to extend the support window any further? I have always supported considering a major version bump at some point in the future. That said, it is something we will want to plan for very carefully and deliberately. From my perspective, we're sitting on a ticking time bomb in the event a security vulnerability was discovered. I do not want to rush into a conversation about a major release, but I do want us to disarm the ticking time bomb. For .NET Framework users this may come as an uncomfortable inconvenience. We will do our best to communicate this change well in hopes that few users will be surprised and have an opportunity to adapt accordingly. |
Background
The current implementation of the OTLP Exporter targets
net462
andnetstandard2.0
and relies onGrpc.Core
, which has been officially marked for deprecation. Continued use of this deprecated package significantly increases security risks, including potential vulnerabilities due to lack of active maintenance and ongoing security updates. Eliminating this dependency is crucial to ensure a secure, maintainable, and reliable implementation moving forward.Impact
Grpc.Core
APIs.HTTPS
) and non-secure (HTTP
) protocols. Although some packages offer limited HTTPS support, they do not provide comprehensive support for both protocols.Workarounds
Use WinHttpHandler:
Customers can continue using gRPC over HTTPS by leveraging the
OpenTelemetry.Exporter.OtlpExporterOptions.HttpClientFactory
property. Adding aWinHttpHandler
as shown below will enable telemetry data to be sent successfully, but only when using an HTTPS endpoint, such ashttps://localhost:4317/
.The
WinHttpHandler
class is available through the NuGet package System.Net.Http.WinHttpHandler.OpenTelemetry.Exporter.OpenTelemetryProtocol
version1.11.2
to maintain existing functionality without changes.SIG Discussion (3/25/2025)
During the SIG meeting on March 25, we discussed this dependency removal, highlighting agreement on prioritizing security by phasing out deprecated dependencies. The consensus was clear about moving forward with this change, acknowledging potential impacts, and providing suitable workarounds.
Runtime Version
net462, netstandard2.0
cc: @open-telemetry/dotnet-maintainers @open-telemetry/dotnet-approvers
The text was updated successfully, but these errors were encountered: