Skip to content

Deprecate Zipkin exporter#4715

Merged
lmolkova merged 16 commits intoopen-telemetry:mainfrom
lmolkova:deprecate-zipkin
Nov 21, 2025
Merged

Deprecate Zipkin exporter#4715
lmolkova merged 16 commits intoopen-telemetry:mainfrom
lmolkova:deprecate-zipkin

Conversation

@lmolkova
Copy link
Member

@lmolkova lmolkova commented Oct 29, 2025

This PR intends to gather feedback on Zipkin exporter usage and possible deprecation.

What inspired it:

  1. The transformations documented in zipkin exporter are not followed in practice (e.g. otel-java or zipkin-otel). I don't see any signs of transformations in collector zipkinexporter
    These transformations were not updated despite Semantic Conventions changes and it went unnoticed (e.g. database conventions went stable ~ 6 months ago, but the document still uses deprecated attributes).

  2. Public download stats mostly show low usage. e.g.

  3. Availability of experimental OTLP support in zipkin server and zipkin exporter in collector in beta status

  4. Low activity on issues org:open-telemetry zipkin in:title - most of them are SIG work items including collector zipkin exporter with just a few issues created by end users.

@lmolkova lmolkova requested review from a team as code owners October 29, 2025 23:13
@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Oct 29, 2025

CLA Signed

The committers listed above are authorized under a signed CLA.

  • ✅ login: lmolkova / name: Liudmila Molkova (42ecde8)

@jsuereth
Copy link
Contributor

I'm a fan of moving this direction.

Ideally, Zipkin would support OTLP based ingestion prior to deprecation (in non-beta module). However, given the existing breakage and lack of detection, I think it's good to pulse check actual usage.

We could deprecate the specification and allow OTEL based zipkin exporters to continue to exist and evolve per-use demand until Zipkin OTLP-based ingestion is "non-beta" (whatever release stage they use for this).

@pichlermarc
Copy link
Member

JS shows 2.5x difference in download numbers between

The high download numbers of @opentelemetry/exporter-zipkin are likely due to its inclusion in @opentelemetry/sdk-node. It likely does not reflect actual usage numbers as it gets auto-downloaded, but then remains unused. The diff of @opentelemetry/sdk-node and @opentelemetry/exporter-zipkin is ~3.2M per month. We unfortunately have a lot of outdated examples that use Zipkin, so I have also seen that LLMs frequently spit out examples Zipkin exporter examples which may contribute to the high number.

I support deprecation given that the collector exporter exists as a workaround if needed.

We could deprecate the specification and allow OTEL based zipkin exporters to continue to exist and evolve per-use demand until Zipkin OTLP-based ingestion is "non-beta" (whatever release stage they use for this).

I think this is a good idea. If deprecated we'd likely keep the packages around anyway for a while as it requires almost no maintenance. We did the same with Jaeger.

@trentm
Copy link
Contributor

trentm commented Nov 4, 2025

We unfortunately have a lot of outdated examples that use Zipkin

As well, there is this section of the docs that mentions using the zipkin exporter: https://opentelemetry.io/docs/languages/js/exporters/#zipkin
We could perhaps remove that section.

Copy link
Member

@pellared pellared left a comment

Choose a reason for hiding this comment

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

@cijothomas
Copy link
Member

Public download stats mostly show low usage. e.g.

For Rust:
OTLP Exporter has ~50M all-time download counts vs ~2M for Zipkin. Jaeger (deprecated) had ~13M downloads.

Re-itereating extremely low usage for Zipkin exporter from Rust too.

@lmolkova lmolkova changed the title [DO NOT MERGE] Deprecate Zipkin exporter Deprecate Zipkin exporter Nov 7, 2025
Copy link
Member

@pellared pellared left a comment

Choose a reason for hiding this comment

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

Nice! Just some nit comments.

@anuraaga
Copy link
Contributor

/cc @reta as the current most active maintainer on zipkin and @making who pushed forward zipkin-otel, would be good to hear your thoughts on this. I tend to agree that if the exporters aren't converting correctly from newer versions of instrumentation and there aren't any reports on it, there's probably not high usage out there.

@making
Copy link

making commented Nov 13, 2025

I tend to agree too. At least for Java, the zipkin exporter uses dreprecated attributes and lacks resource attributes. If users want to send trace signals to Zipkin, they should use the otlp collector from zipkin-otel.

@reta
Copy link

reta commented Nov 13, 2025

/cc @reta as the current most active maintainer on zipkin and @making who pushed forward zipkin-otel, would be good to hear your thoughts on this. I tend to agree that if the exporters aren't converting correctly from newer versions of instrumentation and there aren't any reports on it, there's probably not high usage out there.

Thanks a lot for heads up @anuraaga , I agree with @making (and you) on the otel part, with the resources we have at the moment, that would be a right move I believe. Thank you.

Copy link
Member

@pellared pellared left a comment

Choose a reason for hiding this comment

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

Only this #4715 (comment)

@reyang
Copy link
Member

reyang commented Nov 18, 2025

Consider the following clarifications:

  1. The existing Zipkin exporters will be marked as deprecated immediately once this PR is merged, maintainers should not take any feature request for Zipkin exporters.
  2. The existing Zipkin exporters will continue to receive security patches and critical bug fixes until the Dec. 1st, 2026 (adjust the date to meet the 1-year support policy).

@pellared
Copy link
Member

pellared commented Nov 18, 2025

The existing Zipkin exporters will continue to receive security patches and critical bug fixes until the Dec. 1st, 2026 (adjust the date to meet the 1-year support policy).

It would be good to create a blog post which announces it. Also it would be nice if each language additionally announce it in its changelog or/and release notes.

@lmolkova
Copy link
Member Author

thanks @reyang !

The first point is up to maintainers - I believe one year count down starts from the moment they deprecate the artifact:

existing Zipkin exporters will be marked as deprecated immediately once this PR is merged, maintainers should not take any feature request for Zipkin exporters.

Updated text to

Zipkin exporter support will be removed from OpenTelemetry specification in December 2026.

Note: This document remains here for backwards compatibility and
will be removed in a future version. Existing stable Zipkin exporters MUST
continue to be supported for at least one year after the artifact is deprecated,
following the SDK stability guarantees.
Implementing a Zipkin exporter is not required for new SDKs.

I can draft a blog post as well.

@lmolkova lmolkova added this pull request to the merge queue Nov 21, 2025
Merged via the queue into open-telemetry:main with commit 3e09510 Nov 21, 2025
6 of 7 checks passed
@lmolkova lmolkova deleted the deprecate-zipkin branch November 21, 2025 16:22
@carlosalberto carlosalberto mentioned this pull request Dec 5, 2025
github-merge-queue bot pushed a commit that referenced this pull request Dec 12, 2025
### Context

- Make the W3C randomness flag required.

([#4761](#4761))

### Traces

- Deprecate Zipkin exporter document and make exporter implementation
optional.

([#4715](#4715))
- Add spec for `AlwaysRecord` sampler

([#4699](#4699))

### Metrics

- Stabilize `Enabled` API for synchronous instruments.

([#4746](#4746))
- Allow instrument `Enabled` implementation to have additional
optimizations and features.

([#4747](#4747))

### Logs

- Stabilize `LogRecordProcessor.Enabled`.

([#4717](#4717))

### SDK Configuration

- Clarifies that guidance related to boolean environment variables is
not applicable
to other configuration interfaces.
([#4723](#4723))

---------

Co-authored-by: Armin Ruech <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.