Summary
The ConfirmEdit (CAPTCHA extension) extension allows loading of a captcha implementation via wfLoadExtension. This makes it hard to load more than one captcha implementation for different endpoints. These sub-extensions should be removed and replaced with more flexible configuration to enable implementations.
Background
- ConfirmEdit (CAPTCHA extension) has several captcha implementations
- The code for these implementations often uses shared base classes (such as SimpleCaptcha)
- The subextensions are small and only contain the i8n files with an extension.json file
- Loading more than one captcha has been hard and has caused issues such as T394814
- In T394814, there were comments made that "I would be keen to unwind the concept of this being multiple extensions in a trench coat" (T394814#10841508) and "... treat the selected backend as a config var / pluggable service class, rather than a separate extension with separate hooks each" (T394814#10841481)
- In T394804 there is a request to make it possible to use different captcha implementations for different actions
- Doing this means that we need to load more than one ConfirmEdit (CAPTCHA extension) sub-extension on one wiki, which has been historically not supported
- Removing the sub-extensions to make the support for T394804 explicit would be useful and also helps avoid issues caused by extensions being loaded at the same time.
Technical notes
- We may need a period of deprecation where it is still supported to use the sub-extension loading method but it raises deprecation warnings
- We can probably still do that, but essentially make the extension.json a wrapper at most
Acceptance criteria
- ConfirmEdit (CAPTCHA extension) no longer uses sub-extensions to load a specific captcha type for use