Skip to content

Latest commit

 

History

History
88 lines (79 loc) · 3.44 KB

ga-requirements.md

File metadata and controls

88 lines (79 loc) · 3.44 KB

P1 (e.g. cannot GA without these):

  • End-to-end tests (#298)
    • OTLP, Jaeger and Zipkin
    • 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
    • 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
  • 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