Last Modified 2019-02-06 by Ralf Lang (B1 Systems GmbH)

No More Pear: Move to composer

Remove any hard runtime or installation dependency on pear


List any tickets on http://bugs.horde.org/ that cover this issue or are relevant to it.


Ralf Lang


The PHP ecosystem has increasingly moved from pear to composer as the default installer. The changed paradigm (global versus local dependency management) attracts many users and developers.

Runtime dependencies

horde-db-migrate and web migrator

horde-db-migrate "forgets" to migrate or even acknowledge libraries in git checkouts where the pear channel is not present.

l10n/translation tools?


Document .horde.yml format and how it relates to composer json and pear xml

Generate composer json file from .horde.yml

components/lib/Helper/Composer.php currently depends on conductor and gets its data from package.xml
anything handling package.xml is broken without pear though. Always need to register the horde channel

rewrite all pear.horde.org dependencies to vcs type dependencies github/horde/


Other resources
Do we want to keep a whitelist of other channels/packages which should be pulled from packagist or github rather than pear?

Composer plugin: install apps below base rather than vendor/

(we don't want /vendor/ web-readable)
horde apps are type "horde-application" and get installed to /$appname or base/appname
Installing/updating an app should clear cache and autoloader cache
Check if the app provides a registry snippet in /doc/
write horde.local.php if necessary
installing base should provide some initialization

Composer plugin: copy, move or link js content from libraries to horde/js

horde libs are type "horde-library" and get installed to /vendor/Horde/Foo
Maybe we find some trick


Add tool chain to create and update packages on packagist for easier consumption.


https://getcomposer.org/doc/articles/custom-installers.md composer notes on custom installers and plugins
https://github.com/composer/installers multi-framework collection of installers

Back to the Project List