-
Notifications
You must be signed in to change notification settings - Fork 897
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
[configuration] Add exception for 'false default' when there is a double negation #4351
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: Robert Pająk <pellared@hotmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I support but would recommend that it be left open through at least the Tue, Jan 21 spec meeting given the contentious discussion around the topic previously.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is introducing ambiguity and inconsistency to a clear and well litigated part of the specification. It is only substantiated with a biased subjective opinion about an undefined user-base.
The prior decision for this part of the specification was made on logical reasoning. There are neither objective data nor facts being presented here that add to the prior discussion. Do these exist? Can you provide them to motivate this change?
The added ambiguity and inconsistency deteriorate the specification and should not be accepted without better motivation.
Could you clarify what is biased about my or others opinion here?
I think I have been very clear about the user base that motivated this decision: Collector users. The discussion that followed also showed other artifacts within OpenTelemetry that do not follow this approach. What is undefined about this?
#4344 (comment), #4344 (comment) and #4344 (comment) are objective data showing how this convention is not followed elsewhere in OpenTelemetry. I am happy to dig up more, but before I spend any further effort on this, I would like to step back and clarify what evidence would you consider as 'objective data'. What kind of evidence would make you change your mind?
The sentence this PR modifies in the spec is inconsistent with several software artifacts end users use that are under the OpenTelemetry umbrella. I disagree that this adds any inconsistency. Furthermore, I think the sentence has around the same level of ambiguity as the existing text. Could you give examples where this is more ambiguous than before?
Again, I think we need to step back and think: what motivation would we need? I don't want to spend effort on this if there is no motivation that would justify this change for you. |
You represent a specific demographic with inherent bias. |
This is too narrow of a scope to claim it is representative of OpenTelemetry users. What about all the other languages being used, do you have data representing their expectations? |
These are all instances where different choices were made. These choice, again, are framed with biased subjective opinions. They do not address any reasoning from #2755 or add anything new to that discussion. |
I would appreciate that. I'm looking for user feedback, not OTel developer opinions, that represent this view. I would like the data to show not only those that are motivated to complain in an issue about the current state of things, but also shows how many users appreciate the current form of our environment variables. |
An OTel user-survey would help in this regard. |
Adding an exception that directly contradicts and existing recommendation is ambiguous. It leaves the reader with an unclear understanding about what they need to do. Especially since we already have prior art where the non-normative "exception" has been ignored. |
I appreciate that fact. However, I would ask that it also be understood that much effort has already gone into the decision that resulted in our current state. This will reverse that decision. It seems reasonable that we require some level of effort to provide objective facts and data to motivate the change. Without such we will not be making an effective decision and likely just find ourselves back here in a few months. |
I tend to agree with @MrAlias here - the existing wording is very clear and simple, the added caveat makes it worse. The "double negation" argument tries to fix poor data modeling / naming by introducing a caveat to the spec that breaks the fundamental principle - unset values are defaulted to "zero" value, which for Booleans is false. I would rather fix the naming. I agree that |
I think @yurishkuro brings up a good point -- the existing guidance is clear and definitive, and loosening this requirement adds a lot of potential confusion. Is there some motivating examples for why we couldn't change names in order to allow for false defaults? |
from the Java agent perspective (#4344 (comment)):
|
Yeah, that is kinda annoying... is this something we can ensure that's normalized in the new config file stuff and just preserve the existing implementations? |
I think that's the goal of this PR, but maybe it's not expressed well (or in the right place in the spec?), would appreciate any concrete suggestions on how to achieve this goal in specification language @MrAlias @yurishkuro |
if we're talking specifically about the situation where multiple instrumentations can be |
yeah, this sounds like a nice approach when configuration properties are limited to key/value pairs, but I think the Declarative Configuration SIG has ruled out any kind of built-in merge/overlay support for declarative (yaml) configuration |
the presets approach does not contradict declarative configuration (e.g. golangci yaml config uses it) |
As of today .NET Automatic Instrumentation has a lot of Related issue: open-telemetry/opentelemetry-dotnet-instrumentation#1633 CC @open-telemetry/dotnet-instrumentation-maintainers (please double-check) |
I support where we're going in this PR, however, I have a different view. Instead of treating it as "Add exception for 'false default' when there is a double negation", I don't think it should be an exception. I think it should be the No. 1 principle - we want the configuration to be simple, the configuration should be easy to understand by the users, we should do our best to avoid the potential confusion. If we agree with the "keeping things simple" principle, this is the order of priorities I would imagine:
|
named and defined such that false is the expected safe default behavior, unless | ||
the name and false value would produce a double-negation (e.g. 'disabled'). In | ||
the latter case Boolean environment variables MAY be named and defined such that | ||
true is the safe default behavior. Renaming or changing the default value MUST | ||
NOT happen without a major version upgrade. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... MUST be named to minimize user confusion, such as double-negation (e.g. "xyz_disabled = false"). Renaming or changing the default value MUST NOT happen without a major version upgrade.
I like this suggestion. It is new to the discussion and deserves further investigation. |
This is just restating the contented issue. There has already been agreement in the specification here, namely #2755. If we would like to reverse that decision, let us do it based on facts and finds, not opinions and best guesses. |
I might be missing something, but I don't see any user feed back in open-telemetry/opentelemetry-dotnet-instrumentation#1633. Is this correct? |
offering my 2p here:
What I think we could do:
|
You are correct. We got feedback from a few users during SIG meetings. It was nothing formal (no surveys). I think that your proposal with making a survey e.g. via OTel End-User SIG is a great idea. |
This PR was marked stale due to lack of activity. It will be closed in 7 days. |
Thanks for the comment Liudmilla! I personally find this to be the least disruptive option for end users and think it is reasonable, but I am not sure if this would address the concerns from @MrAlias or if it would fly with @open-telemetry/configuration-approvers. I have not put more work on this because I do not see a way forward, so I would really appreciate more opinions about this. |
I think you can ask @open-telemetry/sig-end-user-maintainers to help making a user-survey. |
Relates to #4344.
Changes
Adds exception to naming and default value rule for environment variables.
This is a backwards compatible change since the original statement is phrased as a 'SHOULD'. The
OTEL_SDK_DISABLED
deviates from this new norm (this is not a spec violation but a lack of consistency).The wording tries to be similar to the one in footnote [1] here: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.40.0/specification/protocol/exporter.md
There are several OpenTelemetry artifacts that are either not bound by the specification or have decided, for usability reasons, to not follow this rule in this case. This change would, I argue, bring more consistency and less confusion to end users.
I plan to submit a follow-up PR to change
MeterConfig.disabled
toMeterConfig.enabled
if this PR is accepted.I don't plan to submit a PR to migrate
OTEL_SDK_DISABLED
, but this could be done if there is interest.Thanks to @pellared for guidance on this :)
For non-trivial changes, follow the change proposal process.
enabled
convention #4344Links to the prototypes (when adding or changing features)(not applicable)CHANGELOG.md
file updated for non-trivial changesspec-compliance-matrix.md
updated if necessary