It can be desirable to implement "experimental" features which are disabled by default and must be explicitly enabled via the Synapse configuration. This is applicable for features which:
Note that this only really applies to features which are expected to be desirable to a broad audience. The module infrastructure should instead be investigated for non-standard features.
Guarding experimental features behind configuration flags should help with some of the following scenarios:
Experimental configuration flags should be disabled by default (requiring Synapse administrators to explicitly opt-in), although there are situations where it makes sense (from a product point-of-view) to enable features by default. This is expected and not an issue.
It is not a requirement for experimental features to be behind a configuration flag, but one should be used if unsure.
New experimental configuration flags should be added under the experimental
configuration key (see the synapse.config.experimental
file) and either explain
(briefly) what is being enabled, or include the MSC number.