Dartastic Open Source
Dartastic.io is deeply involved in maintaining Open Source OpenTelemetry Projects and evangelizing OpenTelemetry. We invite the community to become involved, working together to make first-rate Open Source OpenTelemetry for Dart and Flutter.
About OpenTelemetry
OpenTelemetry (OTel) is the second most active Cloud Native Computing Foundation (CNCF) project after Kubernetes. It provides a set of APIs, SDKs, and tools for collecting and exporting telemetry data (metrics, logs, and traces) to help analyze software performance and behavior.
OpenTelemetry Specification
Our Dart and Flutter implementations follow the official OpenTelemetry specification, which defines cross-language requirements and expectations for all OTel implementations. Learn more at:
CNCF Donation
The Dartastic OpenTelemetry API and SDK packages for Dart and Flutter are in the process of being donated to the Cloud Native Computing Foundation (CNCF). If accepted, they will become the official OpenTelemetry SDKs for the Dart Language.
The donation is being tracked in the OpenTelemetry Issue [Donation Proposal]: Dart SDK and API for OpenTelemetry. The process is far along and on track. It has representation from the OpenTelemetry Governance Committee and the Technical Committee. It has maintainers, approvers and contributors with strong experience in OTel, Dart and Flutter, both individual and sponsored by Dartastic.io, Google, Grafana, Embrace and Ello.
We are in a strong position but there are still hurdles to clear. Most importantly: Technical Committee review for spec compliance, wider industry adoption and continuing growth of the team of contributors.
OpenTelemetry Dart & Flutter Special Interest Group
OpenTelemetry organizes its language and platform work into Special Interest Groups. The Call for Contributors for Dart and Flutter OpenTelemetry is open! The Dart and Flutter OpenTelemetry community is nascent and growing. We are looking for contributors who are committed to ensuring a high-quality, spec-compliant OpenTelemetry implementation for Dart and Flutter. The effort is global, inclusive and respectful. We have contributors from around the world, from college students to those near retirement. See the New Contributors Guide and the Code of Conduct.
Open Source Strategy
Dartastic.io's Open Source strategy is simple and ethical. There have been many instances of open source switcheroos from commercial vendors, some in the observability space. Dartastic.io will never play games with Open Source. Michael Bushe, Dartastic.io's founder, is a lifelong practitioner of Yoga and has been a daily meditator for many decades. He treats ethics as a personal and karmic matter. He lives the Yamas, the ethics of Yoga, in all personal and business matters. That includes truthfulness, sincerity, non-stealing and non-possessiveness. We are proud to support the Dart, Flutter and OpenTelemetry communities and grateful for the opportunity to give back. Dartastic.io provides Free Private Pub to the community to help get Dart and Flutter projects off the ground with team collaboration.
Dartastic.io's products stand on their own and complement the extensive Open Source work donated to the community. The Dartastic Native OTel SDKs go beyond what Dart can do. They serve as a ground to implement features outside the spec, and they feed back upstream to the OpenTelemetry community. Dartastic Observatory and Dartastic Symbolizer are fine products in themselves and complement the Open Source offering.
Lastly, OpenTelemetry is more standard than most standards: The APIs are nearly the same across languages. The output - the telemetry - is the same across language SDKs and OTel backends. The shape of the Contrib libraries in Dartastic Labs is similar. The Semantic Conventions weave through it all. Perhaps the biggest value Dartastic.io provides, and the foundation on which it rests, is maintaining a consistent set of packages - open source and native, demos and tools like Dartastic Observatory and Dartastic Symbolizer that are kept up to date and consistent with the OpenTelemetry Specification.
Open Source Projects
OpenTelemetry API
The OpenTelemetry specification separates the API from the SDK. The dartastic_opentelemetry_api is typically not used directly by application developers. All relevant symbols are exported by the dartastic_opentelemetry SDK. For application developers, the most significant aspects of the API are the Semantic Conventions.
For example, if you are making an app that uses geolocation, you can use standard Geo Telemetry Semantics in the span's attributes. You can use the API's enums Geo.geoLocationLat ('geo.location.lat') and Geo.geoLocationLon ('geo.location.lon'), or perhaps Geo.geoCountryIsoCode ('geo.country.iso_code').
An API can be installed without an SDK, though on its own it provides only a noop implementation. dartastic_opentelemetry_api is an OpenTelemetry API for Dart. It provides core noop OTel classes. All API classes are re-exported by the SDK, so the API doesn't need to be included in pubspec.yaml.
OpenTelemetry SDK
The dartastic_opentelemetry SDK brings the OTel API to life by implementing OTel exporters, samplers and metrics.
The SDK can be used by Flutter apps, Dart backend services, CLIs or anywhere Dart is used. It runs on all Dart and Flutter platforms, mobile, desktop and web, including WASM.
It SDK makes using OTel easy and provides standard OTel programming with a familiar Dart feel. Usage starts with static methods OTel class. OTel.initialize() is the first call and OTel.getTracer is used to create Spans.
The SDK is production ready and used by thousands of organizations. It has thorough documentation. The SDK has excellent test coverage. At this time there are compliance gaps that the team is closing but these will rarely cause issue in regular use.
Dart OTel Reference Demo
The Dart OTel Reference Demo is the go-to for Dart and Flutter OTel examples and best practices for humans and AI. The documentation and examples are quite thorough. The examples use a local grafana-lgtm Docker container, with additional dashboards so developers can see the traces, metrics and logs as they run each example.
The main demo is a distributed tracing weather demo that spans the Dart stack: instrumented Dart server applications, CLIs, Flutter apps and Cloud Run / Cloud Functions, with a weather service that propagates one trace across every hop.
The demo is complete with testing patterns that exercise the real SDK rather than mocks to demonstrate how to write test for code that uses OTel.
The Dart OTel Reference Demo is distinct from Dartastic.io's Dartastic OTel Reference Demo that is similar but much larger and can be downloaded from the Dashboard. It demonstrates all the features of Dartastic Native OTel and points to dashboards only available in Dartastic Observatory.
Flutterrific OTel SDK
The Flutterrific OTel SDK is currently in flux. The Dartastic OTel SDK can be used for Flutter and, indeed, the Dart OTel Reference Demo has examples for using dartastic_opentelemetry with Flutter.
The new intent of Flutterrific OTel is to follow the newly forming Client OTel specification. Since specifications take time, it's not recommended for use except by those working on the Client OTel specification. It's possible, perhaps likely, that the Client OTel spec will be folded into dartastic_opentelemetry.
The original intent of Flutterrific was to be a small package on top of dartastic_opentelemetry. Instead, the features are landing elsewhere - some are in Dartastic, some will be replaced by Contrib packages such as otel_go_router.
Wondrous OTel Demo
The Wondrous OTel Demo also needs some love. It's fallen out of date but will be another OTel demo for Flutter based on gskinner's Wondrous app. It enhances the Wondrous app by adding a weather widget, so it will fall in line with the Dart OTel Reference distributed weather trace when it's updated. Contributors are welcom. This is a fun way to learn about OTel and support the community.
Dartastic Labs Open Source (Contrib)
Dartastic Labs makes adopting OpenTelemetry easy by offering Open Source packages that send telemetry for packages that are commonly in use. Each otel_* wrapper adds spans, semantic-convention attributes and context propagation for third-party packages so you get traces, metrics and logs without rewriting your app. All open source Dartastic Labs packages are Apache 2.0 and free forever, published on pub.dev by the verified dartastic.io publisher.
Dartastic Labs also offers over 600 package wrappers for commercial packages that come with most Dartastic Subscriptions. Many of these will move to open source on pub.dev.
| Package | pub.dev | Repository |
|---|---|---|
otel_amqp | pub.dev | GitHub |
otel_auto_route | pub.dev | GitHub |
otel_bloc | pub.dev | GitHub |
otel_chopper | pub.dev | GitHub |
otel_cloud_firestore | pub.dev | GitHub |
otel_cloud_functions | pub.dev | GitHub |
otel_command_it | pub.dev | GitHub |
otel_connectivity_plus | pub.dev | GitHub |
otel_dio | pub.dev | GitHub |
otel_drift | pub.dev | GitHub |
otel_fimber | pub.dev | GitHub |
otel_firebase_analytics | pub.dev | GitHub |
otel_firebase_auth | pub.dev | GitHub |
otel_flutter_bloc | pub.dev | GitHub |
otel_flutter_command | pub.dev | GitHub |
otel_flutter_local_notifications | pub.dev | GitHub |
otel_flutter_riverpod | pub.dev | GitHub |
otel_flutter_secure_storage | pub.dev | GitHub |
otel_get_it | pub.dev | GitHub |
otel_get_storage | pub.dev | GitHub |
otel_go_router | pub.dev | GitHub |
otel_google_sign_in | pub.dev | GitHub |
otel_graphql | pub.dev | GitHub |
otel_graphql_flutter | pub.dev | GitHub |
otel_grpc | pub.dev | GitHub |
otel_hive | pub.dev | GitHub |
otel_http | pub.dev | GitHub |
otel_isar | pub.dev | GitHub |
otel_logger | pub.dev | GitHub |
otel_logging | pub.dev | GitHub |
otel_loggy | pub.dev | GitHub |
otel_mobx | pub.dev | GitHub |
otel_mongodb | pub.dev | GitHub |
otel_mqtt_client | pub.dev | GitHub |
otel_mysql | pub.dev | GitHub |
otel_postgres | pub.dev | GitHub |
otel_provider | pub.dev | GitHub |
otel_redis | pub.dev | GitHub |
otel_redux | pub.dev | GitHub |
otel_riverpod | pub.dev | GitHub |
otel_serverpod | pub.dev | GitHub |
otel_shared_preferences | pub.dev | GitHub |
otel_shelf | pub.dev | GitHub |
otel_simple_logger | pub.dev | GitHub |
otel_socket_io_client | pub.dev | GitHub |
otel_sqflite | pub.dev | GitHub |
otel_talker | pub.dev | GitHub |
otel_url_launcher | pub.dev | GitHub |
otel_watch_it | pub.dev | GitHub |
otel_web_socket_channel | pub.dev | GitHub |
otel_workmanager | pub.dev | GitHub |
Ready to add observability to your app?
Sign up for a free account and start monitoring your Flutter apps today.