Project Status

OpenTelemetry implementations are currently in beta status. This page tracks the overall release milestones as we move towards full releases for each language SIG. You can find more details about the milestones at this link.

Summary

Our current goal is to provide a generally available, production quality release by the second half of 2020. Currently, we are in the alpha stage. What follows is a brief explanation of what we expect to be available, when.

0.2

This release included a functional tracing implementation. While the API may change, you should be able to use these releases to begin exploring and understanding the API and the SDK, and the changes that have been made from OpenTracing/OpenCensus. This release also included support for distributed context using the W3C TraceContext specification.

0.3 (first beta release)

v0.3 is expected to contain a functional metrics implementation. Again, you may see changes to the API and the SDK after this point, but it’s anticipated that these releases will allow you to explore and understand the changes that have been made from OpenCensus. In addition, this release is anticipated to include improvements to OpenTelemetry Context, various semantic conventions around trace and metric metadata, and a finalized OpenTelemetry protocol.

We are planning to take a wave of OpenTelemetry components to beta on or after March 16th 2020. These components include the Java, JavaScript, Python, Go, and .Net APIs and SDKs, along with the OpenTelemetry Collector, though more will be added if they’re able to meet their milestones in time.

We’ve set the following requirements for components to reach beta:

  • All spec version <= 0.3 features must be implemented. For APIs and SDKs this includes all 0.3 features for traces, metrics, context propagation, and resource metadata. For the Collector this includes the OpenTelemetry proto format
  • Smaller changes are already scheduled for the v0.4 and v0.5 versions of the spec, but they may be implemented during the beta. Presumably, beta feedback will create further changes
  • All APIs will attempt to be final, with the goal of not introducing any breaking changes between beta and GA RC. If breaking changes must be introduced between beta and GA RC, they will be small
  • Components must support the OpenTelemetry-native exporter. Components should support exporters for Jaeger, Prometheus, and Zipkin, though some of these might be added soon after the component enters beta. The Collector must also include receivers for these formats
  • APIs must include at least one HTTP and gRPC integration, though these are packaged separately. APIs should include at least one SQL integration, and can include a web framework integration (this is a stretch goal)

<1.0 (additional beta releases)

These releases are expected to contain further improvements to the tracing and metrics API and SDK in response to feedback gathered during the prior alpha and beta releases. Additionally, we expect that the OpenTelemetry protocol will be fully implemented and languages will include an exporter to the OpenTelemetry Collector. At the end of these beta releases, we anticipate all APIs will be unlikely to change.

RC and GA

We anticipate that once the beta phase is complete, we’ll enter into a period of final stabilization work around the API, SDK, and other components. This includes benchmarking, profiling, interoperability testing suites, and other work to ensure that the final release is performant and of a high quality. This work is anticipated to complete by the second half of 2020.

Want to Contribute?

For detailed information on contributing, Austin Parker wrote a great article called, How to Start Contributing to OpenTelemetry.

Want to get started right away? Check out the OpenTelemetry GitHub repos, find an issue, and hack away!

You can always join the community on GitHub and the conversation on Gitter. Use OpenTelemetry’s public calendar to keep track of SIG meetings.

Current SIG Release

.NET

0.4.0.beta.2

First beta release of all the packages.

## Core packages

**OpenTelemetry**
**OpenTelemetry.Api**
* Reimplemented `Span` on top of the Activity APIs (#850)

## Instrumentation libraries

**OpenTelemetry.Instrumentation.AspNet**
**OpenTelemetry.Instrumentation.AspNetCore**
**OpenTelemetry.Instrumentation.Grpc**
**OpenTelemetry.Instrumentation.Http**
**OpenTelemetry.Instrumentation.StackExchangeRedis**
**OpenTelemetry.Instrumentation.SqlClient**

## Exporter libraries

**OpenTelemetry.Exporter.Console**
**OpenTelemetry.Exporter.Jaeger**
**OpenTelemetry.Exporter.OpenTelemetryProtocol**
**OpenTelemetry.Exporter.Prometheus**
**OpenTelemetry.Exporter.Zipkin**

## Miscellaneous packages

**OpenTelemetry.Exporter.ZPages**
**OpenTelemetry.Extensions.Hosting**
**OpenTelemetry.Shims.OpenTracing**

Go

Release v0.10.0

This release migrates the default OpenTelemetry SDK into its own Go module, decoupling the SDK from the API and reducing dependencies for instrumentation packages.

### Added

- The Zipkin exporter now has `NewExportPipeline` and `InstallNewPipeline` constructor functions to match the common pattern.
    These function build a new exporter with default SDK options and register the exporter with the `global` package respectively. (#944)
- Add propagator option for gRPC instrumentation. (#986)
- The `testtrace` package now tracks the `trace.SpanKind` for each span. (#987)

### Changed

- Replace the `RegisterGlobal` `Option` in the Jaeger exporter with an `InstallNewPipeline` constructor function.
   This matches the other exporter constructor patterns and will register a new exporter after building it with default configuration. (#944)
- The trace (`go.opentelemetry.io/otel/exporters/trace/stdout`) and metric (`go.opentelemetry.io/otel/exporters/metric/stdout`) `stdout` exporters are now merged into a single exporter at `go.opentelemetry.io/otel/exporters/stdout`.
   This new exporter was made into its own Go module to follow the pattern of all exporters and decouple it from the `go.opentelemetry.io/otel` module. (#956, #963)
- Move the `go.opentelemetry.io/otel/exporters/test` test package to `go.opentelemetry.io/otel/sdk/export/metric/metrictest`. (#962)
- The `go.opentelemetry.io/otel/api/kv/value` package was merged into the parent `go.opentelemetry.io/otel/api/kv` package. (#968)
  - `value.Bool` was replaced with `kv.BoolValue`.
  - `value.Int64` was replaced with `kv.Int64Value`.
  - `value.Uint64` was replaced with `kv.Uint64Value`.
  - `value.Float64` was replaced with `kv.Float64Value`.
  - `value.Int32` was replaced with `kv.Int32Value`.
  - `value.Uint32` was replaced with `kv.Uint32Value`.
  - `value.Float32` was replaced with `kv.Float32Value`.
  - `value.String` was replaced with `kv.StringValue`.
  - `value.Int` was replaced with `kv.IntValue`.
  - `value.Uint` was replaced with `kv.UintValue`.
  - `value.Array` was replaced with `kv.ArrayValue`.
- Rename `Infer` to `Any` in the `go.opentelemetry.io/otel/api/kv` package. (#972)
- Rename `go.opentelemetry.io/otel/sdk/metric/aggregator/test` package to `go.opentelemetry.io/otel/sdk/metric/aggregator/aggregatortest`. (#980)
- Make the SDK into its own Go module called `go.opentelemetry.io/otel/sdk`. (#985)
- Changed the default trace `Sampler` from `AlwaysOn` to `ParentOrElse(AlwaysOn)`. (#989)

### Removed

- The `IndexedAttribute` function from the `go.opentelemetry.io/otel/api/label` package was removed in favor of `IndexedLabel` which it was synonymous with. (#970)

### Fixed

- Bump github.com/golangci/golangci-lint from 1.28.3 to 1.29.0 in /tools. (#953)
- Bump github.com/google/go-cmp from 0.5.0 to 0.5.1. (#957)
- Use `global.Handle` for span export errors in the OTLP exporter. (#946)
- Correct Go language formatting in the README documentation. (#961)
- Remove default SDK dependencies from the `go.opentelemetry.io/otel/api` package. (#977)
- Remove default SDK dependencies from the `go.opentelemetry.io/otel/instrumentation` package. (#983)
- Move documented examples for `go.opentelemetry.io/otel/instrumentation/grpctrace` interceptors into Go example tests. (#984)

---

### Raw changes made between v0.9.0 and v0.10.0

fd61d2edece005195116e6b9218801a460a3868d (HEAD -> master, tag: v0.10.0, tag: sdk/v0.10.0, tag: exporters/trace/zipkin/v0.10.0, tag: exporters/trace/jaeger/v0.10.0, tag: exporters/stdout/v0.10.0, tag: exporters/otlp/v0.10.0, tag: exporters/metric/prometheus/v0.10.0, tag: example/zipkin/v0.10.0, tag: example/prometheus/v0.10.0, tag: example/otel-collector/v0.10.0, tag: example/namedtracer/v0.10.0, tag: example/jaeger/v0.10.0, tag: example/http/v0.10.0, tag: example/grpc/v0.10.0, tag: example/basic/v0.10.0, upstream/master, origin/master, origin/HEAD) Release v0.10.0 (#990)
12992106de1648c1ec17d4485f3206d57515adde Change default Sampler to ParentOrElse(AlwaysOn) (#989)
fa883d426b122906d4d0e81192d3ac942e2616b4 testtrace.Span tracks and returns its SpanKind. (#987)
26e85e1830a4b183e83718fced9271b66b71da3b Add propagator option for gRPC instrumentation (#986)
8fbaa9d432262bfc586d32a385104648a2d9b08a Make the SDK into its own Go module (#985)
d6bf2fbfc302cd06ed4536c309abc9f3bd15f5a3 Decouple instrumentation from SDK (#983)
42c2a86ea483f3952c92f490d6184c1dfb7d4ca6 Move grpctrace examples from comment to code (#984)
e06c9da91674151020fdd4c9a9b35424c9d350da Rename aggregator/test to aggregatortest (#980)
67a2c2301677f2650f6ec7c23b7bfc9b53884570 Update Changelog (#982)
2833212bd9ce73cef3ffb44ccc78f3fb3dd16d3b Decouple API from SDK (#977)
7f1dc4a23720177a46280e2b92be046b099abfd6 Update Contributing style guide section (#971)
691716712372ddadd4559d9b5b482e6b94e301a3 Rename kv.Infer to kv.Any (#969) (#972)
c9c81379541b7bec5f4ce6e3b31f8f6865dae07e Remove IndexedAttribute from api/label (#970)
3b01a854d1cbdcaebf38f89af8b2f28fb90489eb Make the stdout exporter a package (#963)
c6611f44785883c1d5dfa712a3464493d285dba6 Move export test package to SDK (#962)
d99ac0993ef027dc9d4fac95b2accbbc2fc15572 Remove sub-package value from kv (#968)
fd54b6c6422b64712ac0ef880365a610046f7af7 paivagustavo to emeritus for now (#960)
79180706177b5dc834311c911cb3fcab9d21b441 README: fixup spaces on code example (#961)
452256cbf419c51b3cec0bdf64c0cff64980e9f4 Unify trace and metric stdout exporters (#956)
f31d8ec1d082a480cdaba3b553005f50412c63a0 Unify trace and metric exporter helpers (#944)
c5d77d234cf2e28cd72e46ec5621b3827071b1b5 Bump github.com/google/go-cmp from 0.5.0 to 0.5.1 (#957)
c8b657eb6ce7d15d4e7fb7825c240c85fceadc60 use global handler for span export err in otlp (#946)
f6b51df544b1cc386aa799c241ad12557d6b5482 Bump github.com/golangci/golangci-lint from 1.28.3 to 1.29.0 in /tools (#953)

JavaScript

v0.10.2 Release

#### :rocket: (Enhancement)
* `opentelemetry-core`, `opentelemetry-tracing`
  * [#1331](https://github.com/open-telemetry/opentelemetry-js/pull/1331) Feat: Make ID generator configurable ([@EdZou](https://github.com/EdZou))
* `opentelemetry-api`, `opentelemetry-context-base`
  * [#1368](https://github.com/open-telemetry/opentelemetry-js/pull/1368) feat(api/context-base): change compile target to es5 ([@markwolff](https://github.com/markwolff))

#### Committers: 3
- Cong Zou ([@EdZou](https://github.com/EdZou))
- Mark Wolff ([@markwolff](https://github.com/markwolff))
- Reginald McDonald ([@reggiemcdonald](https://github.com/reggiemcdonald))

Java

Release version 0.7.0

Changes from 0.6.0:

* Added an InMemoryMetricExporter
* Added a toBuilder method to Labels
* Added some semantic attribute constants
* New ZPages extension module with TraceZ and TraceConfigZ pages implemented
* Some overloads added for setting the parent Context
* Some performance improvements in HttpTraceContext implementation
* Removed null checks from the Trace APIs
* The bare API will no longer generate Trace and Span IDs when there is no parent trace context.
* Null Strings are no longer valid keys for Attributes
* BREAKING CHANGE: The Sampler API was changed
* Default endpoint is now set for the OTLP exporters
* BREAKING CHANGE: Jaeger exporter env vars/system properties were updated
* Resource attributes may now be set with a System Property as well as the environment variable.
* Added a propagator for Lightstep OpenTracing propagator
* The ZipkinSpanExporter now defaults to using the OkHttpSender
* The default Sampler in the SDK is now the ParentOrElse sampler
* BUGFIX: SpanWrapper SpanData implementation is now truly Immutable
* Added some simple logging for failed export calls
* Quieted the noisy B3 propagator
* Public constants were added for exporter configuration options
* Added a new configuration option to limit the size of Span attributes

Many thanks for contributions from @anuraaga, @dengliming, @iNikem, @wtyanan, @williamhu99, @trask, @Oberon00, @MitchellDumovic, @FrankSpitulski, @heyams, @ptravers, @thisthat, @albertteoh, @evantorrie, @neeraj97,  

Python

opentelemetry v0.11.0

Beta v11 release.

# opentelemetry-api

- Log a warning when replacing the global Tracer/Meter provider ([#856](https://github.com/open-telemetry/opentelemetry-python/pull/856))
- Return INVALID_SPAN if no TracerProvider set for get_current_span ([#751](https://github.com/open-telemetry/opentelemetry-python/pull/751))
- Rename record_error to record_exception ([#927](https://github.com/open-telemetry/opentelemetry-python/pull/927))

# opentelemetry-sdk

- Add support for resources and resource detector ([#853](https://github.com/open-telemetry/opentelemetry-python/pull/853))
- Rename record_error to record_exception ([#927](https://github.com/open-telemetry/opentelemetry-python/pull/927))

# opentelemetry-ext-asyncpg

- Shouldn't capture query parameters by default ([#854](https://github.com/open-telemetry/opentelemetry-python/pull/854))

# opentelemetry-ext-boto

- bugfix: fails to export spans via jaeger ([#866](https://github.com/open-telemetry/opentelemetry-python/pull/866))

# opentelemetry-ext-botocore

* bugfix: fails to export spans via jaeger ([#866](https://github.com/open-telemetry/opentelemetry-python/pull/866))

# opentelemetry-ext-django

* Use one general exclude list instead of two ([#872](https://github.com/open-telemetry/opentelemetry-python/pull/872))

# opentelemetry-ext-flask

* Use one general exclude list instead of two ([#872](https://github.com/open-telemetry/opentelemetry-python/pull/872))

# opentelemetry-ext-grpc

* Add status code to gRPC client spans ([896](https://github.com/open-telemetry/opentelemetry-python/pull/896))
* Add gRPC client and server instrumentors ([788](https://github.com/open-telemetry/opentelemetry-python/pull/788))

# opentelemetry-ext-jaeger

* Could not serialize attribute aws.region to tag when exporting via jaeger Serialize tuple type values by coercing them into a string,  since Jaeger does not support tuple types. ([#865](https://github.com/open-telemetry/opentelemetry-python/pull/865))

# opentelemetry-ext-mysql

- bugfix: Fix auto-instrumentation entry point for mysql ([#858](https://github.com/open-telemetry/opentelemetry-python/pull/858))

# opentelemetry-ext-otlp

* Update span exporter to use OpenTelemetry Proto v0.4.0 ([#872](https://github.com/open-telemetry/opentelemetry-python/pull/889))

# opentelemetry-ext-pyramid

* Use one general exclude list instead of two ([#872](https://github.com/open-telemetry/opentelemetry-python/pull/872))

# opentelemetry-ext-wsgi

* Set span status on wsgi errors ([#864](https://github.com/open-telemetry/opentelemetry-python/pull/864))

# opentelemetry-instrumentation-aiopg

* Initial release

# opentelemetry-instrumentation-fastapi

* Initial release ([#890](https://github.com/open-telemetry/opentelemetry-python/pull/890))

PHP

No release information available from GitHub.

Ruby

No release information available from GitHub.

Erlang

OpenTelemetry API v0.3.2

* `create_span` has been renamed `start_inactive_span` (#53)
* Fix `add_event` Elixir function (#56)
* Add accessors to deconstruct Span (#54)
* Attributes and events that aren't a list are now silently dropped (#51)
* Fix bug where there is no current span ctx and update_name is called (#52)
* Readme, typespec and doc fixes #45 #46 #50 #59 

Collector

Release version 0.7.0

# v0.7.0 Beta

# 🚀 New components 🚀

- Receivers
  - `fluentfoward` runs a TCP server that accepts events via the [Fluent Forward protocol](https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1) (#1173)
- Exporters
  - `kafka` exports traces to Kafka (#1439)
- Extensions
  - **Experimental** `fluenetbit` facilitates running a FluentBit subprocess of the collector (#1381)

# 💡 Enhancements 

- Updated `golang/protobuf` from v1.3.5 to v1.4.2 (#1308)
- Updated `opencensus-proto` from v0.2.1 to v0.3.0 (#1308)
- Added round_robin `balancer_name` as an option to gRPC client settings (#1353)
- `hostmetrics` receiver
  - Switch to using perf counters to get disk io metrics on Windows (#1340)
  - Add device filter for file system (#1379) and disk (#1378) scrapers
  - Record process physical & virtual memory stats separately (#1403)
  - Scrape system.disk.time on Windows (#1408)
  - Add disk.pending_operations metric (#1428)
  - Add network interface label to network metrics (#1377)
- Add `exporterhelper` (#1351) and `processorhelper` (#1359) factories
- Update OTLP to latest version (#1384)
- Disable timeout, retry on failure and sending queue for `logging` exporter (#1400)
- Add support for retry and sending queue for `jaeger` exporter (#1401)
- Add batch size bytes metric to `batch` processor (#1270)
- `otlp` receiver: Add Log Support (#1444)
- Allow to configure read/write buffer sizes for http Client (#1447)
- Update DB conventions to latest and add exception conventions (#1452)

# 🧰 Bug fixes 🧰

- Fix `resource` processor for old metrics (#1412)
- `jaeger` receiver: Do not try to stop if failed to start. Collector service will do that (#1434)