This project uses nix and direnv to manage the development environment. To get started:
- Install
nix
anddirenv
- Run
direnv allow
in the project root to load the.envrc
file - Run
nix develop
to enter the development environment
The flake.nix
file defines the development environments for different GHC versions. The default environment uses GHC 9.6, but you can enter other environments with nix develop .#ghc92
for example.
Some of the nix configuration requires evaluation with the --impure
flag, so if a nix command fails,
consider rerunning it in impure mode.
The project is organized into several packages:
api
: Core OpenTelemetry API types and functionssdk
: OpenTelemetry SDK implementationotlp
: OpenTelemetry protocol implementationexporters/*
: Exporter implementations for various backendspropagators/*
: Propagator implementations for various contextsinstrumentation/*
: Instrumentation libraries for various frameworks/librariesutil/*
: Utility packages
To add a new package, create a new directory under the appropriate category and update the localPackages
set in nix/haskell-packages.nix
.
- Fork the repository and create a new branch
- Make your changes. Update the appropriate package changelog(s).
- Commit your changes with descriptive commit message(s).
- Push your branch to your fork.
- Open a pull request against the main repository.
Please ensure that your changes follow the project's coding style and include tests where applicable.