Композер классный. Проверка зависимостей и системных требований стала проще. Установка пакетов проходит с ним на ура. Модульность проекта поддерживается отлично. Головной боли для разработчика с подключением библиотек уменьшилось. Проект разворачивается одной строчкой.
И вот за всё это мне Композер не нравится.
Инстумент, удобный для разработчика, насильно впаривается конечному пользователю. Множество оупенсорсных проектов сейчас используют, или переходят на использования Композера. Причём, указывают его в качестве единственно возможного средства установки. Здесь я уже говорю не о либах и фрэймворках, а о полноценных CMS и иже с ними.
Пример: на одном из наших дев-серверов стоит уже достаточно старенькое ПО. На данный момент обновить его без бубна и долгих камланий не получится. Почему — вопрос достойный отдельного разговора. Но работатет, задачи решает и ладно. И хочу я поставить на этот самый сервер через Композер очередную приблуду — побаловаться. Хочу, а не могу — одна из либ подгружает свои зависимости, а там, в свою очерездь, прописаны минимальные требования к системной библиотеке. И, как на зло, библиотека установлена более ранней версии, а обновить, как говорил уже, нельзя. Всё, приехали — кина не будет.
Да, я знаю про composer install --ignore-platform-reqs, этот флаг решает проблему. Альтернативный вариант — установка в контейнере с последними версиями всего ПО и банальный аплоад на сервер.
Только один раз встретилась ситуация, когда приложение не завелось конкретно по причине отсутствующего интерфейса в устаревшей библиотеке. Все остальные приложения, отваливавшиеся из-за конфликта версий, отлично работали и без проблем использовали старые версии либ.
Отсюда вопрос — зачем тогда нужны эти самые минимальные требования? Или они на самом деле не минимальные, а использующиеся у разработчика? В любом случае, полезная фича Композера теряет свой смысл.
Но главная моя боль не в этом. Почему с появлением Композера ребята убирают ссылку на скачку полного пакета, который можно было бы просто скачать, распаковать и запустить инсталлятор? Без консоли, без дополнительных проверок на совместимость. Просто скачал и пользуйся.
Можете использовать у себя Композер, автоматические тесты, Бехат, Трэвис, играйте себе в DevOps сколько угодно — я за обеими руками. Но, когда я хочу скачать конечный продукт — сделайте все необходимые процессы у себя в фоне, а мне дайте готовый архив. Не заставляйте меня думать над вашими багами — мне и своих хватает.