Description
This issue lists areas that are good entry points to start contributing to opentelemetry-cpp.
For each issue, see the issue comments for details.
1. Functional
Typically, features touching a functional area requires to dive into the code, but do not need changes in the infrastructure, like CI, workflows, compilers, platforms, makefiles ...
This is a good opportunity to learn the C++ code itself. The size of the code affected varies by feature.
1.1 All signals
Typically, changes affecting all signals at once are using the same pattern, applied everywhere.
The change is limited in scope, but touches multiple parts.
This is a good opportunity to learn how to apply design or coding pattern to an existing code base.
1.2 Trace signal
1.3 Metrics signal
Typically, changes affecting the metrics signal are more involved on the functional part (time series, aggregation).
This is a good opportunity to understand in depth a component, with clear boundaries.
1.4 Logs signal
- Update the parameter names in LoggerProvider::GetLogger #2689
- [API] Support for Logger::Enabled() is incomplete #2667
1.5 Specific areas
Typically, features touching a specific area do not require to understand the whole code base, but only a well defined subset.
This is a good opportunity to learn the development process (git, PR, review, merge) as well as the affected code.
2. Code health
This area requires to change CI
/CD
scripts to improve the build process.
This is a very good opportunity to learn the github CI
workflow, to implement new tooling.
2.1 Clang-tidy
Iterative changes, to expand coverage to the entire code base.
2.2 Doxygen
3. Test coverage
This area is a very good opportunity to learn docker
to execute tests in a container environment.
4. Documentation
This is internal documentation, for maintainers.
We need to document internal processes (like, how to do a release, an upgrade, a deprecation, ...),
as well as feature design (explain how xyz works) at high level, to understand the code base.
5. Major work
Some areas in opentelemetry-cpp need major work, and contributions are welcome here as well.
A couple of things to keep in mind:
- These are definitively not "good first issue" items, you should have contributed already to opentelemetry-cpp (to be familiar with the process and tooling) and have some experience to be effective.
- Not every technical aspects are defined yet, a good part of the work will be to propose what needs to be done first.
5.1 Binary packages
To be able to ship binary packages for opentelemetry-cpp, a lot of preliminary work needs to happen
- Define how shared libraries are to be versioned, to support compatibility with ABI versions and SDK versions
- Implement tooling to verify shared libraries compatibility
- Reduce technical dependencies in the code base
- Define packages scope
5.2 Full Windows support
To instrument an application using only opentelemetry-cpp api, the following issue needs to be resolved for Windows:
- Opentelemetry API singletons (TraceProvider etc.) do not play well in shared library uses that hide symbol visibility #1520 (comment)
- Header only singletons are not working properly for Windows #2534
- Exporting spans from inside DLL on Windows does not work. #3176
6. Too late
Fixed already:
- [EXPORTER] exporter endpoint doesn't support ipv6 #3073
- [EXPORTER] Add optional configuration for prometheus exporter #2453
- ElasticSearch Exporter does not follow ECS guidelines and logging reference #3091
- Log SSL Connection Information #2250
- W3C TraceContext compliance #74
- URL parser throws an exception #3138
- [CI] Add a C++ static code analyser in the build #2297
- [EXPORTER] optimize OTLP HTTP compression #2570
- [TEST] Functional tests for OTLP GRPC MTLS export #2208
- [Code health] include-what-you-use cleanup #2054
- Support handling Retryable error for OTLP exporter (OTLP/gRPC and OTLP/HTTP) #2049
- [SDK] Support OTEL_SDK_DISABLED environment variable #1631
- Support exporting event_name using OTLP Exporter #3201
- Deprecate event logger #3193
- [SDK] Add simple scope configuration to Tracer, Meter, Logger #2641
- [Metrics SDK] Add support for Exponential Histogram Aggregation #1391
- [Metrics SDK] Optimize Thread Usage in PeriodicExportingMetricReader #3230