diff --git a/docs/requirements.md b/docs/requirements.md new file mode 100644 index 00000000000..5a522ae7a26 --- /dev/null +++ b/docs/requirements.md @@ -0,0 +1,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.