diff --git a/README.md b/README.md index 15f699ef..6eef1cdb 100644 --- a/README.md +++ b/README.md @@ -58,4 +58,5 @@ This repository contains RFCs and DACIs. Lost? - [0101-revamping-the-sdk-performance-api](text/0101-revamping-the-sdk-performance-api.md): Revamping the SDK Performance API - [0106-artifact-indices](text/0106-artifact-indices.md): Improvements to Source Maps Processing - [0116-sentry-semantic-conventions](text/0116-sentry-semantic-conventions.md): Sentry Semantic Conventions -- [0117-mobile-transactions-and-spans](text/0117-mobile-transactions-and-spans.md): Transactions and Spans for Mobile Platforms \ No newline at end of file +- [0117-mobile-transactions-and-spans](text/0117-mobile-transactions-and-spans.md): Transactions and Spans for Mobile Platforms +- [0121-draft-environment-variable-conventions](text/0121-draft-environment-variable-conventions.md): Environment Variable conventions diff --git a/text/0121-draft-environment-variable-conventions.md b/text/0121-draft-environment-variable-conventions.md new file mode 100644 index 00000000..96aee604 --- /dev/null +++ b/text/0121-draft-environment-variable-conventions.md @@ -0,0 +1,46 @@ +- Start Date: 2023-11-07 +- RFC Type: decision +- RFC PR: https://github.com/getsentry/rfcs/pull/121 +- RFC Status: draft + +# Summary + +We already expose certain environment variables that are consumed by SDKs, such as `SENTRY_DSN` and `SENTRY_RELEASE`. +To further ease usage, we should expose more options as such. +This RFC aims to find a set of conventions mainly aimed for server-side SDKs. + +# Motivation + +Changing the SDK configuration most often requires a re-deployment of the application. This can be cumbersome for small changes, +such as updating the `traces_sample_rate`. Given the rise in populairty of server-less or containerized deployments, where +most configuration hails from envrionment variables, we should strive to make this workflow less cumbersome for our users. + +# Background + +The Laravel SDK exposes the majority of its configuration as environment variables, making it a breeze to update the configuration of the SDK easily. +For a complete list of exposed variables, see https://github.com/getsentry/sentry-laravel/blob/9624a88c9cd9a50c22443fcdf3a0f77634b11210/config/sentry.php + +# Options Considered + +A first list of environment variables that all server sides SDKs should support could look like: + +- `SENTRY_DSN` +- `SENTRY_RELEASE` +- `SENTRY_ENVIRONMENT` +- `SENTRY_SAMPLE_RATE` +- `SENTRY_TRACES_SAMPLE_RATE` +- `SENTRY_PROFILES_SAMPLE_RATE` +- `SENTRY_DEBUG` + +Further additions could include but are not limited to: + +- `SENTRY_TAGS_` - An environment variable of `SENTRY_TAGS_foo = "bar"` would result in a tag of `foo: bar` being attached to all events. + +or SDK/framework-specific options, such as to control integrations or features + +- `SENTRY_BREADCRUMBS_LOGS_ENABLED` +- `SENTRY_TRACE_MISSING_ROUTES_ENABLED` + +# Drawbacks + +TBD