Require spec changes to consider declarative config schema#4916
Require spec changes to consider declarative config schema#4916jack-berg merged 8 commits intoopen-telemetry:mainfrom
Conversation
|
I wonder if we're at a point that it makes sense to merge the config into the spec? I think it is likely a lot easier to keep things in sync if a single PR can make both changes. Otherwise we can run into a deadlock situation where spec is waiting for config and config is waiting for spec. |
In similar situations in the past, we've tended to move logical chunks out of the spec rather than into it. E.g. semantic conventions, OTLP. However, we did bring OTEPs into the spec from a separate repo.
It shouldn't be deadlock it we treat synchronizing config changes as guidance rather than a mandate. Related convo here. |
I think the main difference between config and OTLP/SemConv is that changes to the spec are not blocked on required changes in those places. Spec defines a data model/SDK/API and the proto is an implementation of the spec same as the language client libraries. This change proposes that config is required for spec, which implies that it is a part of the spec, not an implementation of it. In that way it is more similar to OTEPs. |
That's not my intent and I'll need to adjust the language if that's not clear. I view the relationship as similar to the prototyping requirement for spec PRs. "Prove that this idea can be reasonably implemented in the config schema and what that would look like so that we can properly evaluate it" There could be merit in strengthening this and having a strict coupling like you're suggesting. The main downside to that I see is that at this point, the spec maintainers (i.e. the TC) aren't experts in the |
I'm imagining a new user who has a nice idea and the time to help with it, but suddenly he has to work with TWO repos. Imagine if he adds something to semconv too? That's working with THREE repositories, with potentially different people). (Not saying we should put everything back, but I think we should understand the ramifications. For somebody involved in OTel it won't be hopefully hard to keep track of related PRs, but somebody may suffer some pain). |
dyladan
left a comment
There was a problem hiding this comment.
Approving this because I think the core idea of "spec changes must consider config" is a good one. The fact it is a separate repo is an implementation detail for now that can be changed, or not, later if desired.
As far as it raising the barrier to spec contribution by stipulating spec authors must learn config process and tooling, I think that's a completely reasonable barrier to erect. In the past it has always ben the de facto process that spec authors create their own config spec by adding env vars and such where appropriate, it was just less formalized.
+1 here |
|
This PR was marked stale. It will be closed in 14 days without additional activity. |
|
@open-telemetry/technical-committee please take a look. Since this is a point of process, I think this is primarily a TC concern. I don't believe there are any blockers since I opened #4935 to decouple the conversation about whether the configuration data model should be merged into the spec. |
|
Approving as I think this is the right direction - whether the config repository is merged into the Specification is something we can tune if/when needed. |
…jack-berg/opentelemetry-specification into declarative-configuration-first
|
Will merge after the 4/7 spec SIG if there are no additional comments. |
…metry#4916) With declarative configuration stable (open-telemetry#4374), I propose adjusting the spec contribution process to be "declarative config first". **What this means:** If a spec PR is proposing changes to an SDK component's configuration surface area, it should include a reference to an PR against `opentelemetry-configuration` to propose corresponding changes to the declarative config schema. **Why this is important:** - Ensures spec PRs are evaluated holistically. The declarative config schema is on track to become a crucial cross-language user facing API for the whole project. Operators can't or don't want to modify source code to use the programmatic API, and env vars are insufficient for non-trivial setups. By doing this, we add UX evaluation criteria in addition to the existing conceptual criteria. - Ensures declarative config schema stays in sync with the spec. - Helps drive consistency across language implementations, since its much harder to misinterpret / reinterpret a feature when there's a config schema spec to adhere to. - Further incentivizes the remaining languages to implement declarative config, helping the project achieve its mission of [telemetry concepts being universal across languages](https://opentelemetry.io/community/mission/#telemetry-should-be-universal). cc @open-telemetry/configuration-approvers Signed-off-by: Vitor Vasconcellos <vvasconcellos1@gmail.com>
### Context - Align environment variable context propagation name restrictions with POSIX.1-2024 and define normalization behavior. ([open-telemetry#4944](open-telemetry#4944)) - Decouple the responsibilities of the environment variable propagation carrier. ([open-telemetry#4961](open-telemetry#4961)) - Remove misleading implementation approach the environment variable propagation. ([open-telemetry#5003](open-telemetry#5003)) - Change Environment Variables as Context Propagation Carriers document status to Beta. ([open-telemetry#5020](open-telemetry#5020)) ### Traces - Stabilize Tracer `enabled` operation ([open-telemetry#4941](open-telemetry#4941)) - Stabilize `AlwaysRecord` sampler. ([open-telemetry#4934](open-telemetry#4934)) ### Metrics - Add development `maxExportBatchSize` parameter to Periodic exporting MetricReader. ([open-telemetry#4895](open-telemetry#4895)) ### Logs - Add event to span event bridge. ([open-telemetry#5006](open-telemetry#5006)) ### Resource - Clarify that a Resource describes the observed entity, not the component that technically emits telemetry. ([open-telemetry#4905](open-telemetry#4905)) ### Compatibility - Deprecate OpenTracing compatibility requirements in the specification. ([open-telemetry#4938](open-telemetry#4938)) - Stabilize sections of Prometheus and OpenMetrics Compatibility. - Stabilize Prometheus Classic Histogram to OTLP Explicit Histogram transformation. ([open-telemetry#4874](open-telemetry#4874)) - Stabilize Prometheus Timestamp and Start timestamp transformation. ([open-telemetry#4953](open-telemetry#4953)) - Clarify Prometheus Native Histogram to OTLP Exponential Histogram conversion, add conversion rules for Native Histograms with Custom Buckets (NHCB) to OTLP Histogram. ([open-telemetry#4898](open-telemetry#4898)) - Stabilize Prometheus Dropped Types transformation. ([open-telemetry#4952](open-telemetry#4952)) - Stabilize OpenTelemetry Attributes to Prometheus labels transformation. ([open-telemetry#4963](open-telemetry#4963)) - Stabilize Prometheus Exemplar to OpenTelemetry Exemplar transformation. ([open-telemetry#4962](open-telemetry#4962)) - Stabilize Prometheus Metadata transformation. ([open-telemetry#4954](open-telemetry#4954)) - Stabilize OpenTelemetry Metric Metadata to Prometheus metric metadata. ([open-telemetry#4966](open-telemetry#4966)) - Stabilize OpenTelemetry Exemplar to Prometheus Exemplar transformation. ([open-telemetry#4964](open-telemetry#4964)) - Stabilize sections of Prometheus Metrics Exporter. - Stabilize host configuration. ([open-telemetry#5025](open-telemetry#5025)) ### SDK Configuration - Declarative configuration: add in-development guidance for exposing the effective `Resource` returned by `Create`. ([open-telemetry#4949](open-telemetry#4949)) - Require spec changes to consider declarative config schema ([open-telemetry#4916](open-telemetry#4916)) - Add strict YAML parsing guidance to configuration supplementary guidelines. ([open-telemetry#4878](open-telemetry#4878)) ### OTEPs - Process Context: Sharing Resource Attributes with External Readers. ([open-telemetry#4719](open-telemetry#4719)) - Support multiple Resources within an SDK. ([open-telemetry#4665](open-telemetry#4665)) --------- Co-authored-by: Jack Berg <34418638+jack-berg@users.noreply.github.com>
### Context - Align environment variable context propagation name restrictions with POSIX.1-2024 and define normalization behavior. ([open-telemetry#4944](open-telemetry#4944)) - Decouple the responsibilities of the environment variable propagation carrier. ([open-telemetry#4961](open-telemetry#4961)) - Remove misleading implementation approach the environment variable propagation. ([open-telemetry#5003](open-telemetry#5003)) - Change Environment Variables as Context Propagation Carriers document status to Beta. ([open-telemetry#5020](open-telemetry#5020)) ### Traces - Stabilize Tracer `enabled` operation ([open-telemetry#4941](open-telemetry#4941)) - Stabilize `AlwaysRecord` sampler. ([open-telemetry#4934](open-telemetry#4934)) ### Metrics - Add development `maxExportBatchSize` parameter to Periodic exporting MetricReader. ([open-telemetry#4895](open-telemetry#4895)) ### Logs - Add event to span event bridge. ([open-telemetry#5006](open-telemetry#5006)) ### Resource - Clarify that a Resource describes the observed entity, not the component that technically emits telemetry. ([open-telemetry#4905](open-telemetry#4905)) ### Compatibility - Deprecate OpenTracing compatibility requirements in the specification. ([open-telemetry#4938](open-telemetry#4938)) - Stabilize sections of Prometheus and OpenMetrics Compatibility. - Stabilize Prometheus Classic Histogram to OTLP Explicit Histogram transformation. ([open-telemetry#4874](open-telemetry#4874)) - Stabilize Prometheus Timestamp and Start timestamp transformation. ([open-telemetry#4953](open-telemetry#4953)) - Clarify Prometheus Native Histogram to OTLP Exponential Histogram conversion, add conversion rules for Native Histograms with Custom Buckets (NHCB) to OTLP Histogram. ([open-telemetry#4898](open-telemetry#4898)) - Stabilize Prometheus Dropped Types transformation. ([open-telemetry#4952](open-telemetry#4952)) - Stabilize OpenTelemetry Attributes to Prometheus labels transformation. ([open-telemetry#4963](open-telemetry#4963)) - Stabilize Prometheus Exemplar to OpenTelemetry Exemplar transformation. ([open-telemetry#4962](open-telemetry#4962)) - Stabilize Prometheus Metadata transformation. ([open-telemetry#4954](open-telemetry#4954)) - Stabilize OpenTelemetry Metric Metadata to Prometheus metric metadata. ([open-telemetry#4966](open-telemetry#4966)) - Stabilize OpenTelemetry Exemplar to Prometheus Exemplar transformation. ([open-telemetry#4964](open-telemetry#4964)) - Stabilize sections of Prometheus Metrics Exporter. - Stabilize host configuration. ([open-telemetry#5025](open-telemetry#5025)) ### SDK Configuration - Declarative configuration: add in-development guidance for exposing the effective `Resource` returned by `Create`. ([open-telemetry#4949](open-telemetry#4949)) - Require spec changes to consider declarative config schema ([open-telemetry#4916](open-telemetry#4916)) - Add strict YAML parsing guidance to configuration supplementary guidelines. ([open-telemetry#4878](open-telemetry#4878)) ### OTEPs - Process Context: Sharing Resource Attributes with External Readers. ([open-telemetry#4719](open-telemetry#4719)) - Support multiple Resources within an SDK. ([open-telemetry#4665](open-telemetry#4665)) --------- Co-authored-by: Jack Berg <34418638+jack-berg@users.noreply.github.com>
With declarative configuration stable (#4374), I propose adjusting the spec contribution process to be "declarative config first".
What this means: If a spec PR is proposing changes to an SDK component's configuration surface area, it should include a reference to an PR against
opentelemetry-configurationto propose corresponding changes to the declarative config schema.Why this is important:
cc @open-telemetry/configuration-approvers