The maintaina-com/horde-installer-plugin has seen a few changes lately. This piece is run on every composer install or update in a horde installation. A bug in it can easily break everything from CI pipelines to new horde installations and it is quite time consuming to debug. I usually try to limit changes.
Two codebases merged
For the 2.4.0 release I decided to finally rebase the installer onto the command codebase and get rid of the older code. It turned out that the reconfigure command was lacking some details which are important in the install use case. Nobody ever complained because these settings are usually not changed/deleted outside install/update phase. As of v2.4.4 the installer is feature complete again.
New behaviour in v2.4
The installer has been moved from the install/update phase to the autoload-dump phase. It will now process the installation as a whole rather than one library at a time. This simplifies things a lot.reviously, the installer ran for each installed package and potentially did a few procedures multiple times. Both the installer and the horde-reconfigure command will now issue some output to the console about their operation and they will process the installation only once with the updated autoloader already configured. The changes will now also apply on removal of packages or on other operations which require a rewrite of the autoloader. The registry snippets now include comments explaining that they are autogenerated and how to override the autoconfigured values.
Outlook to 2.5 or 3.0
The composer API has improved over the last year. We need to be reasonably conservative to support OS distribution packaged older versions of composer. At some point in the future however I want to have a look at using composer for simplifying life
- Improve Theme handling: Listing themes and their scope (global and app specific), setting default theme of an installation
- Turning a regular installation into a development setup for specific libraries or apps
- Properly registering local packages into composer’s package registry and autoloader (useful for distribution package handling).
Both composer’s native APIs and the installer plugin can support improving a horde admin’s or developer’s life:
- Make horde’s own “test” utility leverage composer to show which optional packages are needed for which drivers or configurations
- Expose some obvious installation health issues on the CLI.
- Only expose options in the config UI which are supported by current PHP extensions and installed libraries
- Expose a check if a database schema upgrade is needed after a composer operation, both human readable and machine consumable. This should not autorun.
The actual feature code may be implemented in separate libraries and out of scope for the installer itself. As a rule, horde is supposed to be executable without composer but this is moving out of focus more and more.