opentelemetry-java-instrume.../docs/ga-requirements.md

89 lines
3.6 KiB
Markdown

### P1 (e.g. cannot GA without these):
* ✅End-to-end tests ([#298](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/298#issuecomment-664162169))
* ✅OTLP, Jaeger and Zipkin ([#1541](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/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](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/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)
* 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)
### P2
* 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
### P3
* Auto-collected metrics
* System / JVM metrics (https://github.com/open-telemetry/opentelemetry-specification/issues/651)
* Request metrics (https://github.com/open-telemetry/opentelemetry-specification/issues/522, https://github.com/open-telemetry/opentelemetry-specification/pull/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"
* 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)
### Instrumentation prioritization
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.
### P1
* 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
### P2
* All others