Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document OSS dependencies and their license #844

Merged
merged 8 commits into from
Jun 10, 2021
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ of the current project.
In general, the code shipped from this repository should build on all platforms
having C++ compiler with [supported C++ standards](#supported-c-versions).

## Dependencies

Please refer to [Dependencies.md](docs/dependencies.md) for OSS Dependencies and license requirements.

## Installation

Please refer to [INSTALL.md](./INSTALL.md).
Expand Down
64 changes: 64 additions & 0 deletions docs/dependencies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Dependencies and Licenses

There are

- External dependencies as linkable libraries or externally installed headers, and
- Internal dependencies as the part of code from external libraries backported/copied in main repo.

Both these dependencies are listed here:

## Internal dependencies

- [nostd::variant](https://github.com/open-telemetry/opentelemetry-cpp/blob/v1.0.0-rc1/api/include/opentelemetry/nostd/absl/types/variant.h): This is backported from [Abseil C++ libraries](https://github.com/abseil/abseil-cpp) and used as default variant implementation. License: `Apache License 2.0`
- [nostd::span](https://github.com/open-telemetry/opentelemetry-cpp/blob/v1.0.0-rc1/api/include/opentelemetry/nostd/span.h): This is backported from libstdc++-v3 and used as default span implementation. License: `GNU General Public License`
- [TraceLoggingDynamic](https://github.com/open-telemetry/opentelemetry-cpp/blob/v1.0.0-rc1/exporters/etw/include/opentelemetry/exporters/etw/TraceLoggingDynamic.h): Dynamic TraceLogging Provider API for C++ used by ETW exporter. License: `MIT License`

## External dependencies

- [API](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/api) & [SDK](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/sdk):
- Uses Standard C++ library for latest features (std::string_view, std::variant, std::span, std::shared_ptr, std::unique_ptr) with C++14/17/20 compiler if `WITH_STL` cmake option is enabled or `HAVE_CPP_STDLIB` macro is defined. License: `GNU General Public License`
- For C++11/14/17 compilers, fallback to gsl::span if [GSL C++ library](https://github.com/microsoft/GSL) is installed. License: `MIT License`
- Uses Abseil C++ Library for `absl::variant` as default `nostd::variant` if `WITH_ABSEIL` cmake option is enabled. License: `Apache License 2.0`

- [OTLP/HTTP+JSON](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/otlp) exporter:
- [protobuf](https://github.com/protocolbuffers/protobuf): Library to serialize structured data.
- OTLP messages are constructed as protobuf payloads.s
lalitb marked this conversation as resolved.
Show resolved Hide resolved
- `protoc` compiler is used to generate C++ stubs for proto files provided by `opentelemetry-proto`.
- `libprotobuf` library is used for generating serialised trace/metrics/log data to be sent to opentelemetry collector.
- License: The library is licensed [here](https://github.com/protocolbuffers/protobuf/blob/master/LICENSE). The code generated by protoc compiler is owned by the owner of `.proto` file.
- [libcurl](https://curl.se/libcurl/) : the multiprotocol file transfer library.
- Export connects with opentelemetry collector over HTTP protocol using libcurl library
- License: Inspired by `MIT/X` but not same. <https://curl.se/docs/copyright.html>
- [nlohmann/json](https://github.com/nlohmann/json): JSON for Modern C++.
- protobuf serialized otlp messages are encoded in JSON format using this library.
- License: `MIT License`

- [OTLP/gRPC](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/otlp) exporter:
- `protobuf` OTLP messages are constructed as protobuf payloads.
- [gRPC](https://github.com/grpc/grpc): An RPC library and framework
- Exporter communicates with OTLP collector using gRPC transport mechanism.
- License: `Apache License 2.0`

- [Zipkin](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/zipkin) exporter:
- `libcurl` for connecting with Zipkin server over HTTP protocol.
- `nlohmann/json` for encoding Zipkin messages.

- [Jaeger](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/jaeger) exporter:
- [Thrift](https://github.com/apache/thrift) - Serialization and RPC framework.
- `thrift` compiler to generate C++ stubs for IDL data model for Jaeger.
lalitb marked this conversation as resolved.
Show resolved Hide resolved
- `libthrift` library to generate serialised trace/metrics/log data to be sent to remote Jaeger service.
- License: `Apache License 2.0`

- [ETW](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/etw) exporter:
- `nlohmann/json` for generating MessagePack serialization for message to be transmitted to ETW.

- [Prometheus](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/prometheus) exporter:
- [`prometheus-cpp`](https://github.com/jupp0r/prometheus-cpp) Prometheus Client Library for Modern C++
- License: `MIT License`

- [ElasticSearch](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/exporters/elasticsearch) exporter:
- `libcurl` for connecting with Elasticsearch server over HTTP protocol.
- `nlohmann/json` for encoding Elastic Search messages.

- [Zpages](https://github.com/open-telemetry/opentelemetry-cpp/tree/v1.0.0-rc1/ext/src/zpages):
- None