swift-otel
swift-otel copied to clipboard
🛣️ OTel 1.0 Roadmap
trafficstars
Following discussions in the Swift OTel contributors meeting we've defined a breakdown of items to complete for the 1.0 release, which are tracked here as an umbrella issue.
The items are pretty fine-grained, and could be seen as the smallest unit that could land in a single PR. This is not prescriptive though, and it's likely that several items may be batched into a single PR.
Required for 1.0.0-alpha
- [ ] Public API proposal
- [x] Initial prototype
- [x] Early feedback on prototype
- [x] Write up proposal (link)
- [x] Early feedback from Swift OTel contributors meeting (Moritz, Franz, Joannis, Honza)
- [x] Post to the Swift forums (link)
- [ ] Consolidate feedback and find permanent home for the proposal (https://github.com/swift-otel/swift-otel/pull/205)
- [ ] Setup Git branches and CI
- [x] Create a release-0.x branch for patches to pre-1.0 with existing CI (https://github.com/swift-otel/swift-otel/tree/release-0.x)
- [x] Update CI on main to 6.1+ only (https://github.com/swift-otel/swift-otel/pull/204)
- [ ] Disable/relax coverage on main
- [ ] Restructure Swift package according to proposal
- [ ] Rename current
OTellibrary target toOTelCore - [ ] Create new
OTellibrary target - [ ] Create new
OTLPHTTPlibrary target - [ ] Define
OTLPHTTPandOTLPGRPCtraits - [ ] Remove package library products:
OTelCoreandOTLPGRPC - [ ] Add package products:
OTel - [ ] Update minimum Swift version to 6.1 (for traits)
- [ ] Rename current
- [ ] Add new API surface to
OTelmodule- [ ]
Confguration - [ ]
bootstrap - [ ] Stubs for
makeTracingBackend,makeMetricsBackend, andmakeLoggingBackend
- [ ]
- [ ] Mark all previous public API as internal or package
- [ ] Review import visibility and reduce where possible
- [ ] Use upcoming feature flag to change default, unqualified import to internal
- [ ] Add stub for
OTLPHTTPExporter - [ ] Refactor
OTLPGRPCTracesExporterandOTLPGRPCMetricsExporterto use a commonOTLPGRPCExporter - [ ] Add
init(config: OTel.Configuration)for internal types with just what's configurable today (e.g. no mTLS) - [ ] Traces implementation
- [ ] Wire up
public makeTracingBackendandinternal bootstrapTraces
- [ ] Wire up
- [ ] Metrics implementation
- [ ] Wire up
public makeMetricsBackendandinternal bootstrapMetrics
- [ ] Wire up
- [ ] Logging implementation
- [ ] Implement
OTLPGRPCLogsExporterusing the now commonOTLPGRPCExporter - [ ] Wire up
public makeLoggingBackendandinternal bootstrapLogs
- [ ] Implement
- [ ] Implement
OTLP[Traces|Metrics|Logs]HTTPExporter- [ ] Initial stubbed structure for shared implementation between signals
- [ ] Move generated GRPC proto messages from OTLPGRPC to OTLPCore to use from OTLPHTTP
- [ ] Unauthenticated HTTP client configuration
- [ ] Add support for (m)TLS to the HTTP client used in the OTLPHTTP exporter
- [ ] Export logic for OTLP/HTTP+protobuf
- [ ] Export logic for OTLP/HTTP+json
- [ ] Wire up more configuration values from
OTel.Configuration- [ ] mTLS for GRPC exporter
- [ ] BatchSpanProcessor configuration
- [ ] Periodic metrics reader configuration
- [ ] Migrate
OTLP[Traces|Metrics|Logs]Exporterto gRPC v2 - [ ] HTTP exporter tests
- [ ] Logging backend tests
- [ ] Configuration datamodel tests
- [ ] End to end tests
- [ ] Documentation overhaul
- [ ] Top-level module documentation
- [ ] API documentation throughout
- [ ] Update examples
- [ ] Update README
- [ ] ~~Document Swift version support policy~~
- [ ] Document traits
- [ ] Decide what to do with existing APIs that aren't obviously replaced:
- [x] Resource detection (Added to future directions of proposal)
- [ ] Logging metadata provider (needs more discussion)
- [ ] Make sure all internal SDK logging uses a custom logger
Required for 1.0.0
- [ ] Enable coverage regression checking CI
- [ ] Drive to higher threshold coverage
- [ ] Remove/refactor redundant internal code
- [ ] Previous configuration types
- [ ] ...
Not required for 1.0.0 but should follow shortly after
- [ ] Refactor common logic in the span and logs batch processor types