Jaeger-idl is a repository of shared data model definitions that provides Thrift and Protobuf schemas used across Jaeger distributed tracing components.
The repository solves the problem of maintaining consistent data models across multiple Jaeger services and language implementations. It centralizes the interface definitions so that different components can serialize and deserialize trace data in a compatible way. The approach uses industry-standard IDL formats: Thrift for cross-language code generation and Protobuf for modern API definitions. The repository includes pre-generated Go code for common modules, eliminating the need for consumers to run code generation themselves for Go projects.
Teams building Jaeger integrations or extending the Jaeger ecosystem should adopt this repository as their source of truth for data models. It suits projects that need to communicate with Jaeger components or implement custom collectors and exporters. The repository provides generated stubs for multiple languages through its Docker-based build tooling, making it accessible whether you work in Go, Java, Python, or other supported languages. Projects using Jaeger typically import this as a Git submodule to ensure version alignment between their code and the IDL definitions.
The project maintains active CI verification that all IDL files compile correctly across both Thrift and Protobuf generators. Code generation is automated as part of the build pipeline rather than requiring manual maintenance of generated artifacts. The repository recently consolidated Go code from multiple Jaeger subprojects into unified import paths, indicating ongoing effort to simplify the developer experience for Go consumers.