- ✅End-to-end tests (#298)
- ✅OTLP, Jaeger and Zipkin (#1541)
- ✅Spring Boot and Wildfly
- (Wildfly chosen due to common javaagent issues around jboss modules and jboss logging)
- ✅Java 8, 11, and the latest Java version
- Benchmarking (#595)
- Runtime overhead benchmark
- Startup overhead benchmark
- All captured span attributes must either be from semantic attributes or be instrumentation-specific
- TODO define convention for instrumentation-specific attributes, e.g. "elasticsearch.*"
- Basic configuration points
- Add custom auto-instrumentation
- ✅Ability to build "custom distro"
- Documentation
- All configuration options
- Standard OpenTelemetry SDK + Exporter configuration options
- Auto-instrumentation configuration options (e.g. disable/enable, peer.service mapping)
- For each instrumentation
- Document any instrumentation-specific configuration
- How to troubleshoot (start documenting common issues somewhere)
- All configuration options
- Library (manual) instrumentations for a few libraries commonly used with Spring:
Spring WebMVC, Spring WebFlux, Spring RestTemplate, JDBC
- (this requirement is to ensure that we have a good path forward for supporting both auto and manual instrumentation)
- Contributor experience (tag "contributor experience" plus tag "cleanup" plus tag "sporadic test failure")
- New contributor documentation
- How to write new instrumentation (auto, library, tests)
- How to understand and fix muzzle issues
- How to submit your first PR (CLA, check for CI failures, note about sporadic failures)
- Faster builds
- Fewer sporadic CI failures
- Publish a debug jar without the classdata obfuscation
- New contributor documentation
- Auto-collected metrics
- System / JVM metrics (open-telemetry/opentelemetry-specification#651)
- Request metrics (open-telemetry/opentelemetry-specification#522, open-telemetry/opentelemetry-specification#657)
- Library (manual) instrumentations for more libraries commonly used with Spring
- Spring Kafka, Spring AMQP, Reactor, java.util.concurrent
- Library (manual) instrumentations for libraries commonly used with Android
- OkHttp, gRPC
- Document the basic configuration points
- How to write your own auto-instrumentation
- (much of this can be shared with contributor documentation below)
- How to build your own "custom distro"
- How to write your own auto-instrumentation
- Complete instrumentation documentation, with commitment to keeping this up-to-date going forward
- Document all spans that it captures
- Span names
- Span attributes (including explanation of any non-semantic attributes)
- Events
- Document any other effects (e.g. updating SERVER span name with route)
- Document all spans that it captures
When it comes to prioritizing work, sometimes it's helpful to know the relative importance of a particular instrumentation, e.g. making improvements in Spring WebFlux instrumentation would generally take priority over making improvement in Grizzly instrumentation.
This is only intended as a guide for prioritizing work.
- Apache AsyncHttpClient
- Apache HttpClient
- Cassandra Driver
- gRPC
- HttpURLConnection
- JAX-RS
- JDBC
- Jedis
- JMS
- Kafka
- Lettuce
- MongoDB Drivers
- Netty
- OkHttp
- RabbitMQ
- Reactor
- Servlet
- Spring Scheduling
- Spring Web MVC
- Spring Webflux
- All others