Больной вопрос о том, что есть почти везде и не понятно, будет ли когда-нибудь в CS-Cart (очень хочу надеяться).
У нас есть коробка, в которой в компании с ядром поставляется очень много предустановленных модулей. Мы их можем включать, выключать, устанавливать и удалять.
НО!
Обновлять мы можем только всё скопом. То есть - или ВСЁ, или НИЧЕГО.
Тоже интересный подход.
Например я не хочу обновлять ядро, меня не устраивают множественные новые болячки основного функционала, мне не нужны вариации, и их болячки. Но допустим мне нужно отображение карты. Потому что имеющийся у меня модуль карт с устаревшим кодом (Яндекс не воспринимает запросы и не отдает карту), а чтобы получить новый код - я должен обновить всё.
То есть фактически как всегда карт называет вещи одним именем, а по факту оказывается иначе: ядро и предустановленные модули - это всё ядро, потому что… Ну потому что не могу я оставив магазин в том состоянии в каком он есть, то есть рабочем и отлаженном, зайти в обновления, увидеть, что для моей версии ядра при оплаченной подписке, разумеется, есть доступные обновления для таких-то модулей (из тех что идут в коробке) и при необходимости обновить только их.
Говоря иначе, предлагаю перевести на новую систему поставки обновлений модулей не только сторонних разработчиков, но и разработчиков самого Карта (в первую очередь).
Логика то простая. На странице обновлений вижу список: обновление ядра и список модулей с обновлениями. Некоторые могу обновить без обновления ядра. Для некоторых будет написано что потребуется также обновить ядро. Для обновления ядра также будет предупреждение, что какие-то модули для работы с новой версией ядра также будут обновлены.
Мне интересно обновление отдельных предустановленных модулей без обновления ядра
Очень болезненная история по модулям онлайн-касс, онлайн-оплаты. Их требуется временами обновить из-за изменений, а вот всю боль обновлений сильно доработанного магазина испытывать не хочется. И других примеров, помимо касс и карт, хватает.
Смотреть надо не с точки зрения трудностей, а сточки зрения потребностей. И искать способы. Есть вещи, которые с точки зрения технического специалиста, делать трудозатратно и не целесообразно, а с коммерческой точки зрения без них продукт ни в каком виде не нужен. Сейчас никакая подписка на обновления не целесообразна после минимального количества внесения изменений - не обновиться без разработчика в штате.
Получается такая ситуация - без доработок движок использовать нельзя. После доработок нельзя обновить критически важные вещи. Вопрос немаловажный, не так ли? Где, собственно, в таком случае поддержка. Только не формальная, а реальная. С формальной точки зрения выходят какие-то обновления. Реально же приходится самостоятельно вытаскивать изменения из дистрибутивов новых версий и вручную вносить только нужные изменения.
Вижу два выхода:
В addon.xml есть параметры минимальной и максимальной версии совместимого ядра - почему бы карту первым в конце концов не начать заполнять эти поля? Многие модули работают со стандартными функциями которые не менялись уже много лет. Да и если менялись - в хук ведь (по идее) должны отдаваться те же данные, и массивы оставаться с той же структурой;
Даже не надо никакой другой политики. Я купил обновления на год на ядро+предустановленные модули. Всё остальное - мое дело, хочу обновляю всё, хочу - только несколько модулей. Потом вдруг карт решил все проблемы и выпустил безбажное обновление, и я раз - и обновил ядро до последнего наконец-то
Вопрос в другом: исправляя какой-то баг, часто разработчики правят не только модуль, но и лезут в ядро и правят что-то там. То есть модульность как суть на самом деле не осуществляется, на сегодня ядро+предустановленные модули рассматривается разработчиками как единое целое и как единое целое правится и потому как единое целое отдается в обновления.
Основная часть штатных модулей, даже скорее всего все не могут работать автономно, они так или иначе завязаны на ядре, по этому без его обновления в большинстве случаев модули не смогут корректно взаимодействовать с платформой. А так, идея неплохая.