-
Notifications
You must be signed in to change notification settings - Fork 855
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
Move non-core components out of opentelemetry-java #4661
Comments
Just for some history, actually the name of the propagator isn't really correct but stuck unfortunately - the propagator isn't really related to x-ray (besides the x-ray sdk defaulting to it which is probably where the name came from), but it's the propagation format used within aws. Notably, many propagation scenarios require it regardless of tracing backend. So Also, as this is already used in instrumentation, if moving it to contrib, it then requires deciding on the pattern for depending on contrib from the instrumentation repo. Compared to the others on the list, this one is actually probably being used the most in production by users, and I suspect most aren't x-ray users :P |
This text from the spec seems pretty unambiguous about this propagator not belonging in the core repo:
Yes, we need to decide this :) |
Hi @jack-berg, would moving these components to a new home change their artifact name in Maven? |
Yes. And for stable artifacts we would have to continue to publish the old coordinates until a 2.0.0 release. Alpha artifacts don't have the same restriction, and if moved would likely be published in both places for one version (while deprecated in opentelemetry-java) before being removed. |
I think that the AWS Xray propagator should probably stay in the SDK; and that we should change the spec to reflect that. |
+1 to @mateuszrzeszutek's comment. And if this change is made to the specification, it would probably make sense to move the aws xray propagator to https://github.com/open-telemetry/opentelemetry-java/tree/main/extensions/trace-propagators, though that would change their its coordinates.
I don't see much of a path forward for
👍 for
yeah, this is interesting, I hadn't thought about it previously, but I think keeping semantic convention stuff out of the core repo is very reasonable (since for Java we have a dedicated "instrumentation" repo). this could include the semconv artifact too as we discussed in this week's SIG meeting. we can update https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/scope.md if we move forward with this plan.
👍
👍 (I'm ok looking for component owner for this either before or after the move)
👍
👍 |
@jack-berg besides maven coordinates, would package names remain the same during the transition? |
@rapphil it depends on where they move. Artifacts in |
Should micrometer shim be moved out? And settle on criteria for core repo: spec'd (or on its way to spec'd) AND not semantic convention related |
On the subject of the micrometer shim: I think we should be stricter and exclude components from here unless they are explicitly spec'd. I know we made an exception for micrometer. And that seemed like the right decision at the time, but micrometer tracing doesn't share the same usage and yet a good user experience requires that it belongs next to the micrometer metrics shim. I believe that We could take it one step further and move even the spec'd shims to |
My preference would be to move "bridges to other telemetry libraries" to the contrib repository, where experts in the target libraries can be component owners for them. |
We could probably reverse the dependency between instrumentation and contrib repos, making instrumentation repo depend on contrib repo. We have already discussed moving runtime attach and static instrumenter to the instrumentation repo, which I think are the only contrib components that depend on the instrumentation repo today. |
One possible problem with the OpenCensus bridge is that it's impossible to use it together with the javaagent, since it's an SDK bridge. Maybe it's just me, but it would be a bit strange to have it in the javaagent repo when it's impossible to use it together with the javaagent.
This is a pretty good idea 👍 |
Doesn't the instrumentation repo depend on library experts chiming in from time to time as well? I think we should use this as an opportunity to really clarify the delineation between core, instrumentation, and contrib. I think we're coalescing on consensus that core only contains spec'd components which don't involve the semantic convention. I'm not as confident in the difference between contrib and instrumentation. Maybe contrib is the place for components that aren't spec'd, and don't involve the semantic convention. This definition would mean that contrib becomes the home for the micrometer metrics & tracing shims, as well as the kafka client metrics stuff.
Due to the presence of a growing number of library instrumentation artifacts, I've been viewing the instrumentation repo as a general home for instrumentation, which also publishes an agent which automatically weaves lots of instrumentation into apps at runtime. I think you're suggesting that instrumentation which can't be used by the agent should live in contrib, which seems like a strange delineation to me. |
This is correct, and has been the case since we renamed the repo from opentelemetry-java-auto-instr to opentelemetry-java-instrumentation a long while back.
I don't believe @mateuszrzeszutek is suggesting this, as he has been one of the people pushing the instrumentation repo forward for library (non-javaagent) instrumentation. |
I was just thinking out loud; you're right that it seems kinda strange. I think that the decision here might just boil down to deciding the difference between the instrumentation and contrib repos:
The instrumentation repo already contains a bunch of features/components that are not specced and/or experimental, and I think it's been mostly working fine for it. The contrib repo contains plenty of instrumentations, if we define an instrumentation as "something that produces telemetry" - for example, the maven extension, which I believe is in its right place and I don't think I'd like to move it to the instrumentation repo. Also, some time ago we've been thinking about moving the less important/popular/supported instrumentations over to the contrib repo - and if we reverse the dependency between contrib and instrumentation we'll finally be able to do that. How about we define the instrumentation repo as: instrumentation artifacts that are supported by OpenTelemetry maintainers. Which sounds super vague, but I think somewhat makes sense - we'd like to support things like OpenCensus and OpenTracing, or the most popular Java frameworks (servlet, spring, micrometer, ...). So, for example, Kafka instrumentation would stay instrumentation; Apache Dubbo or RocketMQ would be moved to contrib and we'd have to find owners for them (we have no idea how they work anyway 😂 ). (This definition kinda contradicts the maven extension example - maven is super popular, but I'd argue that instrumenting build systems is not so for the time being its place is in contrib) |
Ideally the definition we land on is unambiguous so we don't have to keep revisiting the decision in the future. I think your idea of "instrumentation artifacts that are supported by OpenTelemetry maintainers" could be made unambiguous by defining a process for maintainer support - if no maintainer is willing to "sponsor" the instrumentation, its a candidate to move to contrib. Still a bit tenuous. On the note of |
Here's a proposal based on the above:
Then the javaagent published from the instrumentation repo would only contain components that are "sponsored" by a maintainer (either via the core repo or the instrumentation repo), while the javaagent published from the contrib repo would be equivalent to the javaagent that we publish currently. While this definition of having a maintainer willing to "sponsor" a component is wishy-washy, it's not clear to me that we're going to come up with anything better. |
We spoke in the 8/25/2022 Java SIG about a variety of topics related to where components should live within the three otel java repositorys
Changes to this repository as a result of this discussion include:
We still need to make a decision on:
|
👍 can always move it to core repo if it gets specd some day |
Hi, After the move of the noop-api to See https://search.maven.org/search?q=io.opentelemetry.contrib Where can I find it? Thanks 🙂 |
The artifact was moved to opentelemetry-java-contrib/noop-api. There's a one week gap between the release of |
Hi @jack-berg, Is the |
Hey @guizmaii , |
@guizmaii this has now been released, so should be available. I have verified it can be downloaded via those maven coordinates. |
All items except |
Following the spirit of moving opentelemetry-extension-annotations to a more appropriate home in
opentelemetry-java-instrumentation
, and prompted by a discussion in the 7/28 Office Hours, I've done a scan of the project for components that are candidates to live elsewhere. The list includes all artifacts that contain code that isn't explicitly included in the spec, with exceptions foropentelemetry-micrometer1-shim
andopentelemetry-extension-kotlin
.opentelemetry-extension-aws
AwsXRayPropagator
andAwsConfigurablePropagator
, which implements theConfigurablePropagatorProvider
SPI.opentelemetry-extension-incubator
PassThroughPropagator
andExtendedTracer
.opentelemetry-extension-noop-api
OpenTelemetry
implementation.opentelemetry-sdk-extension-resources
opentelemetry-sdk-extension-aws
opentelemetry-sdk-extension-jfr-events
opentelemetry-sdk-extension-metric-incubator
opentelemetry-sdk-extension-tracing-incubator
LeadDetectingSpanProcessor
opentelemetry-sdk-extension-zpages
Comments
opentelemetry-extension-aws
- Not sure what the history is here, but xray propagator isn't included in the list of propagators defined the spec and including it in the core sets a precedent of making exceptions. I'd like to see this deprecated and moved to opentelemetry-java-contrib/aws-xray.opentelemetry-extension-incubator
- I like the idea of having places to incubate API / SDK concepts, but think if they're going to live in the core project there needs to be a path to inclusion the stable API / SDK artifacts. Not clear that that path exists forPassThroughPropagator
orExtendedTracer
.opentelemetry-extension-noop-api
- Should probably move this toopentelemetry-java-contrib
. If we think its important enough to keep in core, perhapsopentelemetry-extension-incubator
, since there may be a chance for a completely noop implementation to be added to the spec some day.opentelemetry-sdk-extension-resources
- I don't feel especially strongly about this, but this probably makes more sense inopentelemetry-java-instrumentation
.opentelemetry-sdk-extension-aws
- I think this makes most sense inopentelemetry-java-instrumentation
, especially if the standard resource providers end up there.opentelemetry-sdk-extension-jfr-events
- Move toopentelemetry-java-contrib
.opentelemetry-sdk-extension-metric-incubator
- Can probably retain since file based SDK configuration is being very seriously discussed in the specification.opentelemetry-sdk-extension-tracing-incubator
- If we're confident enough with theLeakDetectingSpanProcessor
, we should consider promoting it to the stableopentelemetry-sdk-testing
artifact, since it makes sense as a testing utility.opentelemetry-sdk-extension-zpages
- zPages are mentioned in the experimental section of the specification, but I think this could be merged intoopentelemetry-sdk-extension-tracing-incubator
, since there are no transitive dependencies required to run.The text was updated successfully, but these errors were encountered: