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

Loosen requirements for component-specific config #326

Open
pellared opened this issue Nov 25, 2024 · 8 comments
Open

Loosen requirements for component-specific config #326

pellared opened this issue Nov 25, 2024 · 8 comments
Assignees
Milestone

Comments

@pellared
Copy link
Contributor

pellared commented Nov 25, 2024

Hmm, I don't really want to change the existing ones, plus as an end user when you're configuring a JS service, I don't think the JS part adds much

OK. I also see that Java also does more or less the same: https://github.com/signalfx/splunk-otel-java/blob/main/docs/advanced-config.md. I think we should loosen the requirement below:

If a new configuration variable is needed by a GDI repository it MUST be brought to the GDI specification as a GitHub issue.

Originally posted by @pellared in signalfx/splunk-otel-js#978 (comment)

@pellared pellared transferred this issue from signalfx/splunk-otel-js Nov 25, 2024
@pellared pellared added this to the v1.7.0 milestone Nov 25, 2024
@MrAlias
Copy link
Contributor

MrAlias commented Nov 25, 2024

I think without some reference back here we will have a source of divergence/conflict. A language will add a feature, it will be adopted, customers will ask for it in other languages, other languages will determine it is not possible or needs to be changed, and this will result in language implementation divergence or direct conflict that results in breaking changes being introduced to already released functionality.

Ideally, we get ahead of these things. I think bringing them to the group via this repository is an ideal approach, but we should search for alternative if we plan to change that.

@pellared
Copy link
Contributor Author

pellared commented Nov 25, 2024

The issue is mostly about loosening it only for instrumentation library-specific configs. E.g. there is currently an SPLUNK_NEXTJS_FIX_ENABLED env var in splunk-otel-js.

My initial proposal was to have a different pattern for them: SPLUNK_{LANGUAGE}_{FEAUTRE}, e.g. SPLUNK_JS_NEXTJS_FIX_ENABLED. The proposal is based on https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#language-specific-environment-variables.

Thoughts?

@MrAlias
Copy link
Contributor

MrAlias commented Nov 25, 2024

I think language specific environment variables make sense.

They will need to be carefully specified so they don't just become a catch all to circumvent the GDI spec process though.

@pellared
Copy link
Contributor Author

Found some pre-work:

By @pjanotti

The key is to have a discussion about why some env var is needed in some instrumentation: even if it becomes "stable" but makes only sense for one language/runtime I don't think we should bring it to the GDI spec.

Which is about:

If a new configuration variable is needed by a GDI repository it MUST be brought to the GDI specification as a GitHub issue.

So far we had none repo specific variable requests so the GDI maintainers were not even considering how to tackle such things. @signalfx/gdi-js-maintainers, I think that only our Node.js distro has many SPLUNK_ env vars which are not defined in the GDI spec. The only other repo I found that uses an env var not defined in the GDI spec is Java but this is only a single SPLUNK_METRICS_FORCE_FULL_COMMANDLINE experimental env var. CC @signalfx/gdi-java-maintainers

@seemk
Copy link
Contributor

seemk commented Nov 26, 2024

I don't think everything needs to be documented in the GDI spec. Node.js has a few env vars that have been added for customers, e.g. SPLUNK_NEXTJS_FIX_ENABLED, which may be removed or turned into a no-op in the future once Next.js has their issues fixed.

If a new configuration variable is needed by a GDI repository it MUST be brought to the GDI specification as a GitHub issue. - I don't think this rule makes much sense, way too much bureaucracy to get anything released quickly.

What would adding language specific prefixes add exactly? E.g. SPLUNK_JS_NEXTJS_FIX_ENABLED vs SPLUNK_NEXTJS_FIX_ENABLED.

@pellared
Copy link
Contributor Author

pellared commented Nov 26, 2024

If a new configuration variable is needed by a GDI repository it MUST be brought to the GDI specification as a GitHub issue.

I don't think this rule makes much sense, way too much bureaucracy to get anything released quickly.

  1. I do not think creating an issue takes long.
  2. We should not rush with introducing new configuration that later customers may expect us to support.
  3. Prioritize fixing in upstream.

What would adding language specific prefixes add exactly? E.g. SPLUNK_JS_NEXTJS_FIX_ENABLED vs SPLUNK_NEXTJS_FIX_ENABLED.

Predictable pattern. E.g. I would prefer having SPLUNK_JS_REDIS_INCLUDE_COMMAND_ARGS than SPLUNK_REDIS_INCLUDE_COMMAND_ARGS to indicate that it JS instrumentation library specific.

@seemk
Copy link
Contributor

seemk commented Nov 26, 2024

What is the actual problem we are solving with this?

@pellared
Copy link
Contributor Author

What is the actual problem we are solving with this?

Consistency, feature-parity, avoiding feature creeping.

Assigning @akubik-splunk who will help solving this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants