-
Notifications
You must be signed in to change notification settings - Fork 772
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
Epic - Span API -> Activity API #684
Comments
.... Why is this even necessary? Why should OT for .NET adopt a totally different terminology and API surface area compared to all of the other implementations? How many years is it going to take for any of this to be accessible to library developers like myself who want to use OT? And are these API changes to |
Clarifying 2 important things here:
@Aaronontheweb if you can join the Gitter and/or SIG meetings, we'll be talking about this in detail. (I can get recordings from previous ones as well) |
Activity is a part of DiagnosticSource package which is build for all platforms down to |
Very glad that this isn't going to be a .NET5-only thing. That would have been a big problem for us. .NET Standard 2.0 and up is our current target. Per the advice of @davidfowl on Twitter I wanted to include feedback from my experience as an OpenTracing user / contributor / library developer looking to replace that work with OpenTelemetry in the coming years: Customization and ExtensibilityOne concern I have around wrapping everything inside of To help preserve our trace context correctly in this environment we used an OpenTracing I'm still working on my OpenTelemetry POC using the latest alphas, but I think it's possible for me to achieve this today. If we remove the above tooling, I don't know if it will be feasible. TerminologyHaving a shared technical lexicon is useful particularly when trying to communicate across language and experience barriers. Anyone coming from the Node.JS world who's worked with Zipkin knows what a span is. Ditto with Java developers who've worked with Jaeger. I think there's a lot of benefit in maintaining the current terminology in the .NET library, as there's a corpus of work in the distributed tracing space goes back years. Moving to a model of activity, activity source, diagnostic trace listeners - I've been doing .NET for 15 years, worked at Microsoft for two of them, and I've now launched two different businesses that deal with application telemetry for .NET developers and I couldn't give you a clear definition of what these terms mean or how to use them in an application. People switch jobs, languages, and runtimes often - giving them a standard to target for something as crucial as systems observability will go a long away towards seeing its successful adoption for years to come. I think adapting Preserving that layer of abstraction helps resolve both of these issues. @cijothomas sure, I can see about joining the Gitter at least. I'm pretty busy but I'll do my best to contribute. |
I'm not entirely sure if this is aligned with the spec in terms of API re-implementation (see https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/library-guidelines.md). I think having a translation layer between span/activity is fine, but I don't think we can just replace things in the API outright, especially since the existing OTel API is pretty well-defined. I'm empathetic to the goals of seamless interop with existing .NET stuff, but as someone that does a lot with the community, I'd rather see .NET being more aligned with open standards rather than less. |
Copying this from Gitter where we originally discussed:
I think it's fair to investigate whether Activity can support what is needed to comply with the OpenTelemetry spec. It will ease integrations and widen the net of libraries & frameworks that are automatically instrumented. I'm personally unsure whether Activity/ActivitySource can do all what we need and we'll only commit to it once it is proven to. We have also agreed to provide an OpenTelemetry style shim so working across language implementations still feels consistent. My perspective is one of OpenTelemetry's primary goals is to present a consistent and cross-language API, and that includes naming conventions. However, we also need to utilse as much of each languages features and be idiomatic possible. The .NET SIG is currently lucky enough to be able to engage with the language maintainer (Microsoft) directly on trying to make telemetry as accessible as possible. |
Closing this as the major work is complete. |
With the end goal is replacing OT Span API with .NET Activity API (part of System.Diagnostics.DiagnosticSouce nuget package), opening this Epic to track overall state of this effort.
Notes: For each heading, supporting the most basic (a being most basic, b being next, and so on) is current priority. This would allow us to validate Activity APIs and provide sufficient and timely feedback to .NET Team. (DiagnosticSouce v5 is expected to ship Nov 2020, but getting bigger changes becomes increasing difficult as we reach closer to ship date.)
Current known gaps for Activity API are listed here: #675. This will be updated as new fixes are made available by .NET, and as new issues are discovered.
1. Support Activity in processor/exporter pipeline.
2. Sampling
ActivityDataRequest.AllData
,ActivityDataRequest.PropagationData
3. Adapters (previously called collectors, now called Instrumentation)- Must be modified to the new API guidelines.
4. Exporter
5. General
6. Examples
7. Shim/Wrapper
8. Benchmarking
The text was updated successfully, but these errors were encountered: