Configuration values required by a component can change over time. Because some configuration fields can be modified by other components it is important to take care when changing a component's configuration schema to avoid breaking other components that may depend on it.
This guidance only applies to configuration fields that have a mutability
specifier. Modifying fields without mutability
does not require special care, as the values are always provided by the component's configuration value file.
No special considerations are required, as all configuration fields require a base/default value to be in a component's configuration value file and there will be no existing providers of the configuration from outside that component.
Safely removing a mutable configuration field from a component's schema will require first working with configuration providers to ensure they are no longer passing any overrides for the field that will be removed.
If as a component author you want to remove a configuration field from your component that has a mutability
specifier:
mutability: [ "parent" ]
then you should identify any parent components that provide values for that field.mutability
specifier.Renaming a field is equivalent to adding a newly named field and removing the existing field.
If as a component author you want to rename a configuration field that has a mutability
specifier:
Changing a mutable field's type requires either using a new name or eliminating all overriders before changing the type.
Increasing a field's max_len
or max_size
constraint is always safe.
Reducing a field's max_len
or max_size
constraint is only safe if all externally-provided values are within the new range.