Встановлення розширення та наслідки
Ідея мати розширювану систему чудова, але, як ми знаємо розробники, це не так просто. Багато речей можуть (і, на жаль, зробити) піти не так.
Огляд
Почну зі списку проблем, потенційно викликаних установкою розширень. Потім я сформулюю основні моменти і викладу висновки, які я особисто роблю з усього цього, і, нарешті, запропоную рішення. (Мабуть, це задовго. Вибачтеся заздалегідь. Я постараюся написати якомога менше і все-таки висвітлити тему.)
Отже, для початку, ось список поширених проблем, виявлених через встановлення розширення.
Безпека
Перевірка коду не проводиться до того, як розширення буде прийнято на Magento Connect. Як наслідок, багато розширень містять уразливості. Існує безліч причин, наприклад, недосвідчені або ледачі розробники, використання вразливого коду сторонньої сторони, а деякі розширення навіть містять шкідливий код. Віддалене виконання коду, ін'єкції SQL та простої - це реальність. Наслідки - це втрачені дані клієнта, втрачені облікові дані про платежі, втрачений дохід, втрачений час та втрачена довіра.
Продуктивність
Розширення може спрацьовувати на одному веб-сайті або в екземплярі розробника, але в іншому каталозі чи базі клієнтів це може спричинити серйозні проблеми з ефективністю. Конкретних причин може бути багато: від неефективного завантаження сутностей, неоптимізованих приєднань до SQL, великої кількості запитів ajax, великої кількості параметрів або атрибутів та багатьох інших. Як повідомляють нам розробники, кожен виклик продавця має значення. Це коштує доходу продавця.
Конфлікти
Навіть лише два розширення, навіть якщо вони розроблені з використанням кращих практик, можуть конфліктувати. В основному це пов'язано з тим, як рамка Magento об'єднує XML конфігурації. У кращому випадку ці конфлікти видно через стеження стека або порожній екран, у гіршому випадку сайт перешкоджає дивному та важкому для налагодження поведінці. Торговець не зможе виправити проблеми та змусити співіснувати розширення співіснувати без допомоги розробника. Це коштує часу і грошей.
Оновлення
Не модернізувати не можна, хоча б з міркувань безпеки. Розширення потрібно підтримувати як окремі бази коду та як частина системи Magento. Якщо використовується розширення, а оригінальний розробник не продовжує підтримувати розширення, його повинен взяти на себе інший розробник. Відсутність розробника часто унеможливлює модернізацію продавця, що, в свою чергу, призводить до того, що сайти повільніші, ніж вони повинні, проблеми з безпекою експлуатуються і, таким чином, втрачають дохід.
Розширюваність
Додавання нових функцій до існуючого сайту стає все складнішим і, таким чином, дорогим, оскільки кожне розширення в системі додає технічну заборгованість. Загальна заборгованість значно більша за кожне окреме розширення, оскільки комбінована складність також більша, ніж кожна окрема. Неможливість легко експериментувати з новими можливостями та змінами призводить до того, що продавець втратить дохід.
Видалення
Наступні речі викликають поломку в Magento під час видалення розширення:
- Записи бази даних, що відносяться до класу в невстановленому розширенні (наприклад, індексатори або моделі атрибутів резервного копіювання). Цьому схильні навіть розширення за найкращими методами.
- Видалення розширень, що перезаписують основний код, залишає Magento відсутній у вихідному файлі. Це, звичайно, відбувається лише в тому випадку, якщо розширення не відповідає кращим практикам, але факт, що багато розширень є поганими.
Поломка сайту, звичайно, коштує грошей.
Magento Connect
З огляду на перелік вищезазначених питань, як же хтось може очікувати, що не розробник встановить розширення та оцінить, чи працює він на певному сайті?
Немає гарантованої чистої видалення, тому часто порушену установку неможливо навіть відремонтувати. Єдиний варіант - заздалегідь зробити повне резервне копіювання, а потім зробити відкат вручну, якщо щось піде не так. Чи може це зробити нетехнічна особа? На мій досвід, ні.
Припустимо, все виглядає нормально. Чи знає продавець все це добре?
А як щодо безпеки? Що з питаннями продуктивності? Що з питаннями оновлення?
Там немає ніякого способу , НЕ-розробник може оцінити ці речі.
Повідомлення Magento Connect повідомляє, що легко поширити свій магазин Magento, встановивши Magento без розробника. Це може бути зручно на місці продажу, щоб сказати комусь, що так, але це просто неправда.
Я переживаю, головним чином, те, що в спілкуванні потреба розробника просто мається на увазі, а не передається. Як наслідок, багато власників магазинів ламають свій магазин, встановлюючи розширення. Це коштує грошей, часу, нервів, а також Magento і репутація розробника.
Мені подобається, що в моїх класах є явний інтерфейс, і я вважаю, що було б добре, якби вимога розробника до Magento була також повідомлена явно.
Висновки
Це зовсім не добре для екосистеми, навіть якщо виправлення зламаних ділянок забезпечує прибуток для деяких розробників Magento. Ті ж гроші могли бути використані для створення реальної вартості для покупців-покупців.
У Twitter хтось сказав, що торговці - це дорослі люди, які можуть вирішити самостійно, встановлять вони розширення чи ні. Я не погоджуюсь. Якщо торговець не є розробником одночасно, він не може вирішити самостійно.
Magento Connect не повинен спрощувати людей, які не технічні, стріляти в ногу.
Особисто мені болить і втомився бачити трахкі установки Magento через розширення. Я дуже вважаю за краще створювати речі, які просто прибирають безлад.
Я думаю про видалення своїх розширень з Magento Connect, тому що більше не хочу підтримувати цю недосконалу ідею.
Рішення
На мою думку, рішення легко і дешево. Йдеться не про створення ще одного нового ринку розширень , комерційного чи безкоштовного. Це не технічне питання, це все про спілкування.
Якщо Magento Connect заявив, що це ресурс розробника, і розширення слід переглянути перед встановленням, а розширення повинні встановлювати лише розробники, це не буде проблемою. Торговці, які все ще встановлюють розширення, роблять це, знаючи ризики.
Ось ось три простих кроки, які зробили б Magento більш привабливим для торговців:
- Видаліть опцію встановлення розширень через інтерфейс Magento Admin (наприклад, завантажувач).
- У Magento Connect чітко та наочно заявіть, що завдання розробника - завантажувати, переглядати та встановлювати будь-яке розширення.
- Навчіть розробників робити повний огляд будь-якого розширення, яке потрібно встановити на сайті.
Закінчувальні слова
Я люблю розширення для спільного використання. Я люблю відкритий код. Я думаю, що спільнота розробників Magento є приголомшливою !!
Перегляд розширень - це чудовий спосіб навчитися. Magento Connect не є поганим, лише повідомлення, яке воно проектує на людей, які не є технічними.
Кожен сайт Magento - це додаток. Він унікальний і його слід розглядати як унікальне зусилля з розвитку.
Має бути загальний консенсус в екосистемі, що розширення можуть бути корисними, але встановлення їх частіше, тоді не вимагатиме написання чи модифікації коду, а отже, вимагає розробника.
EDIT : Я розмістив у своєму блозі дещо менш технічну основну інформацію .