We have a couple optional libraries that are not required for MediaWiki to work but make it work better (like Monolog for logging), or are required for some non-fundamental feature to work (like PsySH for shell.php), or are required for a certain type of infrastructure (like wikimedia/avro when using Kafka as the log backend). They are listed in the suggest block of composer.json (except PsySH which was put into require-dev largely to work around this problem), and the user is supposed to install them manually. This raises some problems:
- How is the user supposed to know which version of the library is compatible with the calling code?
- Likewise, how does the user learn about when the library needs to be updated?
- How can the library be installed in a convenient way, given that our homegrown composer-merge-plugin-based usage pattern does not really work with composer require.