Updated: Comment #44
Configurable plugins have variable plublic and protected methods for fetching default configuration. A significant number have a method for this called settings(). Basically, it's because that's a lie, and not actually what it's providing - it's providing default configuration.
Add method defaultConfiguration() in ConfigurablePluginInterface
Having "DefaultConfiguration" in the name is much more descriptive and we're already using that convention in a few places, so this just unifies everything under one name.
Note on the naming: "getFooBar" is a convention for a simple function that just deals with an internal object property (e.g. $this->fooBar). In the case where we're doing something fancier than that (like currentUser()) we should drop the "get" prefix so people don't get confused. Or so is the thinking anyway.
Add documentation to plugin interfaces by overriding the method.
Consider updating plugins with a protected method that combines the defaults with the passed in configuration rather than doing this logic in the constructor.
User interface changes
No changes in UI.
ConfigurablePluginInterface interface. All configurable plugins must implement this method and return an associative array with effect configuration defaults.
In addition, all plugin interfaces extending ComfigurablePluginInterface are expected to override it for the purpose of providing specific documentation about the possible configuration keys and values appropriate for that plugin type.
PASSED: [[SimpleTest]]: [MySQL] 59,172 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 59,312 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 58,731 pass(es).