### 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