Skip to content

[ADR] Config vs Options vs Settings for Component Wiring - #349

Draft
yordis wants to merge 1 commit into
mainfrom
yordis/docs-config-vs-options-adr
Draft

yordis wants to merge 1 commit into
mainfrom
yordis/docs-config-vs-options-adr

Conversation

@yordis

@yordis yordis commented Jul 29, 2026

Copy link
Copy Markdown
Member

Adds ADR 7616317836 (src/adrs/7616317836/README.md): "Config vs Options vs Settings for Component Wiring".

  • The input passed when wiring a long-lived component is inconsistently named Config, Options, opts, or Settings across codebases and languages, inviting bikeshedding and diverging vocabularies for the same concept.
  • The three words make different promises to the reader: an option is a discretionary choice, a setting is a dial on something already running, and configuration is the arrangement of parts into a whole, which is what wiring is.
  • Config is the only word native or neutral in Go, Rust, Elixir, and TypeScript: Options fights Go's defaults-only functional options pattern, collides with Rust's Option<T>, and misuses Elixir's opts connotation, while OTP itself separates required wiring from optional opts.
  • Reserving Options for genuinely optional inputs preserves the word for its honest meaning, so the vocabulary drift this ADR exists to stop does not restart under new names.
  • One spelling everywhere (Config/config, never cfg or Configuration) keeps every wiring site findable with a single search and avoids the abbreviation readability tax that motivated ADR#6819030042.
  • Defining wiring by a litmus test (anything alive or environment-derived in the construction input) instead of the word "service" closes the loophole where a repository or client claims the rule does not apply to it.
  • Scoping the rules to APIs we author keeps third-party call sites from becoming false violations.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis marked this pull request as draft August 3, 2026 21:43

This branch has not been deployed

No deployments
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

Successfully merging this pull request may close these issues.

1 participant