Установка расширения и последствия
Идея иметь расширяемую систему великолепна, но, как мы, разработчики, знаем, не все так просто. Многие вещи могут (и, к сожалению, делают) пойти не так.
обзор
Я начну со списка проблем, которые могут быть вызваны установкой расширений. Затем я выскажу свою главную мысль и изложу выводы, которые лично сделаю из всего этого, и, наконец, предложу решение. (Это, вероятно, получится долго, заранее извиняюсь. Я постараюсь написать как можно меньше и все же осветить тему.)
Итак, для начала, вот список распространенных проблем, обнаруженных при установке расширения.
Безопасность
Проверка кода не выполняется до тех пор, пока расширение не будет принято в Magento Connect. Как следствие, многие расширения содержат уязвимости. Есть много причин, таких как неопытные или ленивые разработчики, использование уязвимого стороннего кода, а некоторые расширения даже содержат вредоносный вредоносный код. Удаленное выполнение кода, SQL-инъекции и простои - реальность. Последствия - потерянные данные клиентов, потерянные учетные данные, потерянный доход, потерянное время и потерянное доверие.
Представление
Расширение может нормально работать на одном сайте или на экземпляре разработчика, но с другим каталогом или клиентской базой, это может вызвать серьезные проблемы с производительностью. Может быть много конкретных причин, начиная от неэффективной загрузки сущностей, неоптимизированных объединений SQL, большого количества запросов ajax, большого количества опций или атрибутов атрибутов и многих других. Как каждый торговый звонок говорит нам разработчикам, производительность имеет значение. Это стоит торгового дохода.
конфликты
Даже только два расширения, даже если они разработаны с использованием лучших практик, могут конфликтовать. В основном это происходит из-за того, что среда Magento объединяет конфигурационный XML. В лучшем случае эти конфликты видны через трассировку стека или пустой экран, в худшем случае сайт запрещает странное и трудно отлаживаемое поведение. Продавец не сможет решить проблемы и заставить сосуществующие конфликтующие расширения сосуществовать без помощи разработчика. Это стоит времени и денег.
Возможность обновления
Не обновление не вариант, если только из соображений безопасности. Необходимо поддерживать расширения как отдельные кодовые базы и как часть инфраструктуры Magento. Если расширение используется, и первоначальный разработчик не продолжает поддерживать расширение, другой разработчик должен вступить во владение. Отсутствие разработчика часто делает невозможным для продавца обновление, что, в свою очередь, приводит к тому, что сайты работают медленнее, чем нужно, а проблемы с безопасностью эксплуатируются и, таким образом, теряются доходы.
растяжимость
Добавление новых функций в существующий сайт становится все более сложным и, следовательно, дорогостоящим, поскольку каждое расширение в системе добавляет свой технический долг. Общая задолженность намного больше, чем у каждого отдельного расширения, так как совокупная сложность также больше, чем у каждого отдельно. Неспособность легко экспериментировать с новыми функциями и изменениями приводит к тому, что продавец теряет много прибыли.
Пробные
Следующие вещи вызывают сбой в Magento при удалении расширения:
- Записи базы данных, ссылающиеся на класс в неустановленном расширении (например, индексаторы или модели внутренних атрибутов). Даже расширения после лучших практик склонны к этому.
- При удалении расширений, которые перезаписывают код ядра, Magento пропускает исходный файл. Это, конечно, происходит только в том случае, если расширение не следует передовым методам, но фактом является то, что многие расширения являются плохими.
Поломка сайта конечно стоит денег.
Magento Connect
Учитывая приведенный выше список проблем, как можно ожидать, что не разработчик установит расширение и оценит, работает ли оно на данном сайте?
Нет гарантированной чистой деинсталляции, поэтому часто сломанную установку невозможно восстановить. Единственный вариант - сделать полное резервное копирование заранее, а затем выполнить откат вручную, если что-то пойдет не так. Может ли нетехнический человек сделать это? По моему опыту нет.
Предположим, все выглядит хорошо. Знает ли продавец, что все в порядке?
Как насчет безопасности? Как насчет проблем с производительностью? Что насчет проблем с обновлением?
Нет, не разработчик может оценить эти вещи.
Сообщение, которое сообщает Magento Connect, заключается в том, что ваш магазин Magento легко расширить, установив Magento без разработчика. Возможно, в торговой точке было бы удобно сказать кому-то, что это так, но это просто не соответствует действительности.
Что я испытываю в основном, так это то, что в общении необходимость разработчика просто подразумевается, а не сообщается. В результате многие владельцы магазинов ломают свой магазин, устанавливая расширения. Это стоит денег, времени, нервов и репутации Magento и разработчика.
Мне нравится, чтобы у моих классов был явный интерфейс, и я считаю, что было бы хорошо, если бы требование разработчика для Magento также было бы сообщено явно.
Выводы
Это совсем не хорошо для экосистемы, даже если исправление неработающих сайтов приносит доход некоторым разработчикам Magento. Те же деньги могут быть использованы для создания реальной стоимости для клиентов торговцев.
В Твиттере кто-то сказал, что торговцы - это взрослые люди, которые могут сами решить, установить расширение или нет. Я не согласен. Если продавец не является разработчиком в то же время, он не может принять решение самостоятельно.
Magento Connect не должен позволять нетехническим людям стрелять себе в ногу.
Лично мне надоело видеть испорченные установки Magento из-за расширений. Я предпочитаю создавать вещи, которые просто убирают беспорядок.
Я думаю об удалении моих расширений из Magento Connect, потому что я больше не хочу поддерживать ошибочную идею.
Решение
На мой взгляд, решение легко и дешево. Речь идет не о создании еще одного нового расширения Marketplace , коммерческого или бесплатного. Это не технический вопрос, это все о связи.
Если Magento Connect заявит, что это ресурс разработчика, и что расширения должны быть проверены перед установкой, и что только разработчики должны устанавливать расширения, это не будет проблемой. Продавцы, которые все еще устанавливают расширения, делают это, зная риски.
Итак, вот три простых шага, которые сделают Magento более дружелюбным к торговцам:
- Удалите опцию установки расширений через интерфейс Magento Admin (например, загрузчик).
- На Magento Connect четко и наглядно заявите, что разработчик должен загружать, просматривать и устанавливать любые расширения.
- Обучите разработчиков делать полный обзор любого расширения, которое будет установлено на сайте.
Завершающие слова
Я люблю делиться расширениями. Я люблю с открытым исходным кодом. Я думаю, что сообщество разработчиков Magento - это круто!
Просмотр расширений - отличный способ учиться. Magento Connect не плохой, просто сообщение, которое он проецирует для нетехнических людей.
Каждый сайт Magento является приложением. Он уникален и должен рассматриваться как уникальная разработка.
В экосистеме должен быть общий консенсус в отношении того, что расширения могут быть полезны, но их установка чаще, чем когда-либо, не потребует написания или изменения кода и, следовательно, требует разработчика.
РЕДАКТИРОВАТЬ : я разместил некоторые менее техническую справочную информацию в моем блоге .