1# Contributing to go.opentelemetry.io/auto/sdk
2
3The `go.opentelemetry.io/auto/sdk` module is a purpose built OpenTelemetry SDK.
4It is designed to be:
5
60. An OpenTelemetry compliant SDK
71. Instrumented by auto-instrumentation (serializable into OTLP JSON)
82. Lightweight
93. User-friendly
10
11These design choices are listed in the order of their importance.
12
13The primary design goal of this module is to be an OpenTelemetry SDK.
14This means that it needs to implement the Go APIs found in `go.opentelemetry.io/otel`.
15
16Having met the requirement of SDK compliance, this module needs to provide code that the `go.opentelemetry.io/auto` module can instrument.
17The chosen approach to meet this goal is to ensure the telemetry from the SDK is serializable into JSON encoded OTLP.
18This ensures then that the serialized form is compatible with other OpenTelemetry systems, and the auto-instrumentation can use these systems to deserialize any telemetry it is sent.
19
20Outside of these first two goals, the intended use becomes relevant.
21This package is intended to be used in the `go.opentelemetry.io/otel` global API as a default when the auto-instrumentation is running.
22Because of this, this package needs to not add unnecessary dependencies to that API.
23Ideally, it adds none.
24It also needs to operate efficiently.
25
26Finally, this module is designed to be user-friendly to Go development.
27It hides complexity in order to provide simpler APIs when the previous goals can all still be met.