Configuration

Convention over configuration is required due to the sheer amount of configuration we have.

Feature-system

Our services use the so-called "feature-system" to handle configuration. Each individual feature can have configuration files associated with it.

Provide "Sensible defaults" for these configuration files wherever possible:

  • Can the feature (possibly) work (at least in a basic, useful sense) without configuration? Provide defaults that make this the case.
  • Does the feature require configuration for even the most basic useful use-case? Have the feature be disabled by default.

At no point should a service not work (e.g. fail to start) because a user did not configure a feature that they don't even use in the first place.