summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/docs/requirements.md
blob: b82944cde109f8b783b6431a98e89e41a981684f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Requirements

* The API must have zero dependencies and be header-only.

Pros: allows you to drop it into a source tree (i.e. vendor it) without changing
the build or adding a dependency.

* The SDK should have minimal dependencies.

* Exporters can bring in transport dependencies, e.g. Stackdriver exporter
  depends on gRPC.

* Support both static linking and dynamic loading.

Dynamic loading is required because some vendors want to drop in their own
implementation of the SDK. It also allows low-dependency builds.

This also requires a stable C++ ABI. There is quite a bit of interest in this.

This means STL types can't be used in the interface.

* OpenTelemetry should not _require_ a dedicated thread for background work and
  exporters.