Skip to content
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

Add "Sunsetting OpenCensus" blog post #2629

Merged
merged 12 commits into from
May 1, 2023
92 changes: 92 additions & 0 deletions content/en/blog/2023/sunsetting-opencensus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
title: Sunsetting OpenCensus
Copy link
Member

@reyang reyang Apr 27, 2023

Choose a reason for hiding this comment

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

Is there any announcement from the OpenCensus official site? It'll be great to have the cross reference.

Copy link
Contributor

Choose a reason for hiding this comment

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

We're planning to update the banner on the OpenCensus website to announce the date and point with a link to this blog post.

linkTitle: Sunsetting OpenCensus
date: 2023-05-01
author: '[Aaron Abbott](https:/aabmass) (Google)'
---

In 2019, we announced that OpenTracing and OpenCensus would be merging to form
the OpenTelemetry project. From the start, we considered OpenTelemetry
[to be the next major version of both OpenTracing and OpenCensus](https://www.cncf.io/blog/2019/05/21/a-brief-history-of-opentelemetry-so-far/).

We are excited to announce that OpenTelemetry has reached feature parity with
Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

Doesn't OpenCensus have a stable logging story?

Copy link
Contributor

Choose a reason for hiding this comment

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

Otel's logging data model is stable, could you give an example of what you mean in opencensus?

Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

If you go to OTel-Python repo the logs API and SDK files both have underscores before them. In the OTel-Spec, the Logs/Events API (if/when it comes into being) is not stable. Just a having a stable data model doesn't guarantee customers won't be broken in the future. We should be up front that there is a caveat about this "feature parity" claim. Customers could take a bet on OpenCensus Logging, whereas I don't see that same level of confidence with OTel logging yet.

Choose a reason for hiding this comment

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

OpenCensus does not include any logging API whatsoever. It was just "stats(metrics) + traces".

Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

If OTel would make the same decision and call it done, then I'd feel comfortable with the "feature parity" claim. IMO, we should make customers aware that the OTel logging pillar is still WIP.

Copy link
Contributor

Choose a reason for hiding this comment

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

@mattmccleary maybe I'm misunderstanding your point, but if OC only supported metrics and traces then doesn't feature parity with OTel only rely on metrics and traces? I am confused how the addition of logging in OTel isn't compatible with OC

Choose a reason for hiding this comment

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

Exactly. OpenCensus users don't need to migrate OC logging because there was nothing to migrate, it didn't exist. We're asking OC users to migrate their metrics + traces to OpenTelemetry.

I don't understand the point you're making at all.

Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

Azure customers have taken a production dependency on an Azure-specific OpenCensus Logs Exporter:
https:/census-instrumentation/opencensus-python#log-exporter

If they migrate to OTLP Python Exporter for Logging, are you guaranteeing it's stable and they will not be broken in the future?

I just want to make sure we're properly setting customer expectations for this cohort.

Choose a reason for hiding this comment

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

I see. OpenCensus extensions are NOT part of this transition plan, nor will we be transitioning existing OpenCensus exporters. The module you list would be considered both.

For the extension you mention, I'd suggest Azure could provide such a module to an OpenTelemetry Contrib component. From what I can tell, it's very Azure specific (and does not even require the user to interact with OpenCensus to install it). Additionally, you could still recommend Azure customers use that log exporter while they transition Metrics/Traces to OpenTelemetry via the OpenCesnus shim and I bet nothing breaks.

There are other extensions/contrib in opencensus, e.g. https:/census-instrumentation/opencensus-java/tree/master/contrib/log_correlation/log4j2. These will not break when using the OpenCensus-shim.

Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

OpenCensus extensions are NOT part of this transition plan, nor will we be transitioning existing OpenCensus exporters.

Awesome. As long as this is clear to customers, great. It wasn't to me. Many of the customers I work with are not deeply versed in the communities like we are. They do not understand (or care to understand) the difference between extensions vs core components. It's all OpenCensus to them.

OpenCensus in C++, .NET, Go, Java, JavaScript, PHP and Python.
[Stable releases](/docs/instrumentation/#status-and-releases) of both the
Tracing and Metrics SDKs are available in most of these languages with Go and
PHP soon to follow. This means that OpenTelemetry can collect and export
telemetry data with the same level of functionality as OpenCensus. Beyond that,
OpenTelemetry offers a [richer ecosystem](/ecosystem) of instrumentation
libraries and exporters, and an
[active open source community](https://www.cncf.io/blog/2023/01/11/a-look-at-the-2022-velocity-of-cncf-linux-foundation-and-top-30-open-source-projects/).

As a result, we will be archiving all OpenCensus GitHub repositories (with the
exception of [census-instrumentation/opencensus-python][][^python-timeline]) on
July 31st, 2023. We are excited to see the
[long term plan for OpenTelemetry](https://medium.com/opentracing/a-roadmap-to-convergence-b074e5815289)
coming to fruition and encourage all users of OpenCensus to migrate to
OpenTelemetry.

## How to Migrate to OpenTelemetry

One of the
[key goals](https://medium.com/opentracing/merging-opentracing-and-opencensus-f0fe9c7ca6f0)
of the OpenTelemetry project is to provide backward compatibility with
OpenCensus and a migration story for existing users.

To help ease the migration path, we have provided backward compatibility bridges
in [Go][go shim], [Java][java shim], [JavaScript][js shim][^shim-next-release],
and [Python][python shim][^shim-next-release]. Installing these bridges allows
Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

Can we be clear about the current status of these shims and if/when they will be stable?

Copy link
Member

Choose a reason for hiding this comment

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

Agree. Would be good to provide a current status of these bridges and how long they will be maintained (whats the LTS plan).

Choose a reason for hiding this comment

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

LTS is under https:/open-telemetry/opentelemetry-specification/blob/main/specification/versioning-and-stability.md#long-term-support.

As far as stability, now that the specification is marked as stable, we can get each component to be marked as stable.

Copy link
Contributor

Choose a reason for hiding this comment

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

added a footnote re: stability and support, linking to the docs Josh provided

OpenCensus and OpenTelemetry instrumentation to smoothly interoperate, with all
of your telemetry flowing out of OpenTelemetry exporters. This lets OpenCensus
users incrementally transition all of their instrumentation from OpenCensus to
Copy link
Contributor

@mattmccleary mattmccleary Apr 27, 2023

Choose a reason for hiding this comment

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

Can we expand out the steps of how/why we consider this incremental?
For example, what if customers want to leave their opencensus data flows as-is and temporarily emit OpenTelemetry side-by-side so they can compare their charts, etc. before removing OpenCensus? Is this a recommended/available incremental approach?

Copy link
Contributor

@damemi damemi Apr 27, 2023

Choose a reason for hiding this comment

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

Details about migration plans are included in the compatibility specification linked below this https://opentelemetry.io/docs/reference/specification/compatibility/opencensus/#migration-plans, as well as language-specific outlines in the documentation for each shim.

Choose a reason for hiding this comment

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

@mattmccleary given the overhead you'd find from double-o11y solutions, side-by-side running would not be recommended. Far better to A:B test different configurations in different running binaries. Even then, it's an expensive user proposition. As @damemi points out, the justification behind the incremental approach is in the migration plan.

OpenTelemetry, and finally remove OpenCensus libraries from their applications.

While OpenTelemetry was never intended to be a strict superset of OpenCensus,
most of the APIs and data models are compatible. Migration should be considered
a "major version bump" and you may notice some changes in your telemetry.
Copy link
Contributor

Choose a reason for hiding this comment

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

👏


More details on what to expect and some suggested workflows for migration are
outlined in the
[OpenCensus Compatibility specification](/docs/reference/specification/compatibility/opencensus#migration-path)[^spec-next-release].

## What to Expect After July 31st, 2023
Copy link
Member

Choose a reason for hiding this comment

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

Is there intention to mention the support lifecycle for shims or we want to separate the concern?

Copy link
Member

Choose a reason for hiding this comment

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

LTS and support plans would be good to share - see my comment above.

Choose a reason for hiding this comment

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

The Shims are in OpenTelemetry and subject to https:/open-telemetry/opentelemetry-specification/blob/main/specification/versioning-and-stability.md#long-term-support.

Currently, that's one year support (from OTEL's side).

Copy link
Contributor

Choose a reason for hiding this comment

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

added this in a footnote


After July 31st, 2023, the OpenCensus project will no longer be maintained. This
Copy link
Contributor

Choose a reason for hiding this comment

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

except Python, right? Can we be consistent with langauge above?

Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Contributor

Choose a reason for hiding this comment

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

I see it now...just didn't catch my eye because it seemed separate.

means that there will be no new features added to the project, and any security
vulnerabilities that are found will not be patched.

However, the OpenCensus repositories will remain archived on GitHub. This means
users will still be able to download the OpenCensus code and use it in their
projects. Existing releases of OpenCensus will remain available in public
package repositories like NPM and PyPI. **We encourage all OpenCensus users to
begin planning your migration to OpenTelemetry now.**

One exception to this is the
[census-instrumentation/opencensus-python][][^python-timeline] repo.

[go shim]:
https:/open-telemetry/opentelemetry-go/tree/main/bridge/opencensus
[java shim]:
https:/open-telemetry/opentelemetry-java/tree/main/opencensus-shim
[python shim]:
https:/open-telemetry/opentelemetry-python/tree/main/shim/opentelemetry-opencensus-shim
[js shim]:
https:/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-shim-opencensus
[census-instrumentation/opencensus-python]:
https:/census-instrumentation/opencensus-python

[^python-timeline]:
A number of projects within this repository are still being used as
recommended production solutions. These projects will continue to be
maintained. Please reach out to the individual maintainers for details
regarding maintenance timeline, next steps for migration and general support
questions.

[^shim-next-release]:
Python and JavaScript shim packages are currently unreleased but will be
available in future releases.

[^spec-next-release]:
The
[OpenCensus Compatability specification](https://opentelemetry.io/docs/reference/specification/compatibility/opencensus/)
is marked stable for the next specification release.
24 changes: 24 additions & 0 deletions static/refcache.json
Original file line number Diff line number Diff line change
Expand Up @@ -1419,6 +1419,10 @@
"StatusCode": 200,
"LastSeen": "2023-02-20T07:43:37.8719-05:00"
},
"https:/aabmass": {
"StatusCode": 200,
"LastSeen": "2023-04-24T16:54:54.131842195Z"
},
"https:/aishyandapalli": {
"StatusCode": 200,
"LastSeen": "2023-02-20T08:12:22.870564-05:00"
Expand Down Expand Up @@ -1499,6 +1503,10 @@
"StatusCode": 200,
"LastSeen": "2023-02-20T08:02:57.433517-05:00"
},
"https:/census-instrumentation/opencensus-python": {
"StatusCode": 200,
"LastSeen": "2023-04-24T16:54:55.217650606Z"
},
"https:/census-instrumentation/opencensus-specs": {
"StatusCode": 200,
"LastSeen": "2023-02-20T08:00:55.574495-05:00"
Expand Down Expand Up @@ -3111,6 +3119,14 @@
"StatusCode": 200,
"LastSeen": "2023-02-16T17:17:36.925688-05:00"
},
"https://medium.com/opentracing/a-roadmap-to-convergence-b074e5815289": {
"StatusCode": 200,
"LastSeen": "2023-04-24T16:54:55.28743128Z"
},
"https://medium.com/opentracing/merging-opentracing-and-opencensus-f0fe9c7ca6f0": {
"StatusCode": 200,
"LastSeen": "2023-04-24T16:54:55.343964078Z"
},
"https://medium.com/p/42337e994b63": {
"StatusCode": 200,
"LastSeen": "2023-02-16T17:15:39.339631-05:00"
Expand Down Expand Up @@ -3915,10 +3931,18 @@
"StatusCode": 206,
"LastSeen": "2023-02-18T13:37:44.838318-05:00"
},
"https://www.cncf.io/blog/2019/05/21/a-brief-history-of-opentelemetry-so-far/": {
"StatusCode": 206,
"LastSeen": "2023-04-24T16:54:54.215591367Z"
},
"https://www.cncf.io/blog/2021/08/26/opentelemetry-becomes-a-cncf-incubating-project/": {
"StatusCode": 206,
"LastSeen": "2023-02-18T13:37:50.760488-05:00"
},
"https://www.cncf.io/blog/2023/01/11/a-look-at-the-2022-velocity-of-cncf-linux-foundation-and-top-30-open-source-projects/": {
"StatusCode": 206,
"LastSeen": "2023-04-24T16:54:54.873649488Z"
},
"https://www.cncf.io/projects/": {
"StatusCode": 206,
"LastSeen": "2023-02-18T13:34:56.607908-05:00"
Expand Down