Learn jaeger-lib Learn how to use jaeger-lib with Shoulder.dev Metrics and Observability Discuss the various metrics libraries provided, their purpose, and how they can be used to monitor and troubleshoot distributed systems. Highlight different implementations like expvar, prometheus, and go-kit. Rate Limiting Explain the purpose of the rate_limiter and how it helps prevent performance degradation by controlling the rate of requests. Client Library Internals Describe how Jaeger-lib integrates with various client libraries like the go client and how it facilitates data sharing between components. Internal Logging Explore the logging mechanisms built into Jaeger-lib and how they can be used to gather useful information for debugging. Sample Data Handling Explain the purpose of the sample package and how it helps manage the sampling of trace data for efficient analysis. Shared Infrastructure Discuss the overall concept of Jaeger-lib as a collection of shared libraries and the benefits it brings to the Jaeger project. Testing and Coverage Explain how the provided tools and workflows contribute to testing and maintaining high code quality. Contribution and Development Provide guidance on how to contribute to the Jaeger-lib project, including the contribution guidelines and code style. Integration with Other Components Explain how Jaeger-lib interacts with other Jaeger components like the backend and the go client to create a cohesive distributed tracing system. Codebase Learn the codebase to contribute to jaeger-lib