Instalacja rozszerzenia i konsekwencje
Pomysł posiadania rozszerzalnego systemu jest świetny, ale jak wiemy, programiści, nie jest to takie proste. Wiele rzeczy może (i niestety robi się źle).
Przegląd
Zacznę od listy problemów potencjalnie spowodowanych instalacją rozszerzeń. Następnie przedstawię moją główną uwagę i przedstawię wnioski, które osobiście wyciągam z tego wszystkiego, a na koniec zaproponuję rozwiązanie. (To prawdopodobnie potrwa długo, z góry przepraszam. Postaram się pisać tak mało, jak to możliwe i nadal obejmować ten temat.)
Aby rozpocząć, oto lista najczęściej spotykanych problemów związanych z instalacją rozszerzenia.
Bezpieczeństwo
Przegląd kodu nie jest wykonywany przed zaakceptowaniem rozszerzenia w Magento Connect. W rezultacie wiele rozszerzeń zawiera luki w zabezpieczeniach. Istnieje wiele powodów, takich jak niedoświadczeni lub leniwi programiści, użycie podatnego kodu strony trzeciej, a niektóre rozszerzenia zawierają nawet złośliwie szkodliwy kod. Zdalne wykonanie kodu, zastrzyki SQL i przestoje są rzeczywistością. Konsekwencjami są utracone dane klientów, utracone dane do płatności, utracone przychody, stracony czas i utracone zaufanie.
Występ
Rozszerzenie może działać dobrze w jednej witrynie lub instancji programisty, ale w przypadku innego katalogu lub bazy klientów może powodować poważne problemy z wydajnością. Może być wiele konkretnych powodów, od nieefektywnego ładowania encji, niezoptymalizowanych sprzężeń SQL, dużej liczby żądań ajax, dużej liczby opcji atrybutów lub atrybutów i wielu innych. Jak każdy telefon od handlowca mówi nam deweloperów, wydajność ma znaczenie. To kosztuje przychód handlowca.
Konflikty
Nawet dwa rozszerzenia, nawet opracowane przy użyciu najlepszych praktyk, mogą powodować konflikty. Wynika to głównie ze sposobu, w jaki środowisko Magento scala konfigurację XML. W najlepszym przypadku konflikty te są widoczne przez ślad stosu lub pusty ekran, w najgorszym przypadku witryna hamuje dziwne i trudne do debugowania zachowanie. Sprzedawca nie będzie w stanie rozwiązać problemów i sprawić, że konflikty rozszerzeń będą współistnieć bez pomocy programisty. To kosztuje czas i pieniądze.
Możliwość aktualizacji
Brak aktualizacji nie jest opcją, choćby ze względów bezpieczeństwa. Rozszerzenia muszą być utrzymywane, jako indywidualne podstawy kodu i jako część frameworka Magento. Jeśli używane jest rozszerzenie, a oryginalny programista nie kontynuuje jego utrzymania, jakiś inny programista musi przejąć kontrolę. Brak posiadania programisty często uniemożliwia akceptantowi uaktualnienie, co z kolei prowadzi do spowolnienia witryn, a także problemów związanych z bezpieczeństwem i utraty przychodów.
Rozciągliwość
Dodanie nowych funkcji do istniejącej witryny staje się coraz bardziej złożone, a przez to kosztowne, ponieważ każde rozszerzenie w systemie powoduje dodatkowe zadłużenie techniczne. Całkowity dług jest znacznie większy niż każde indywidualne przedłużenie, ponieważ złożona złożoność jest również większa niż każde z osobna. Brak możliwości łatwego eksperymentowania z nowymi funkcjami i zmianami powoduje utratę przychodów przez kupca.
Odinstalowanie
Następujące rzeczy powodują uszkodzenie Magento podczas odinstalowywania rozszerzenia:
- Rekordy bazy danych odnoszące się do klasy w odinstalowanym rozszerzeniu (na przykład indeksatory lub modele zaplecza atrybutów). Nawet rozszerzenia zgodne z najlepszymi praktykami są na to podatne.
- Odinstalowanie rozszerzeń zastępujących kod rdzenia powoduje, że Magento nie ma oryginalnego pliku. Dzieje się tak oczywiście tylko wtedy, gdy rozszerzenie nie jest zgodne z najlepszymi praktykami, ale faktem jest, że wiele rozszerzeń jest złych.
Awaria witryny oczywiście kosztuje.
Magento Connect
Biorąc pod uwagę powyższą listę problemów, jak, u licha, ktoś może oczekiwać, że programista nie zainstaluje rozszerzenia i oceni, czy działa on na danej stronie?
Nie ma gwarancji czystego odinstalowania, więc często nie można nawet naprawić uszkodzonej instalacji. Jedyną opcją jest wcześniejsze wykonanie pełnej kopii zapasowej, a następnie ręczne cofnięcie, jeśli coś pójdzie nie tak. Czy osoba nietechniczna może to zrobić? Z mojego doświadczenia wynika, że nie.
Załóżmy, że wszystko wygląda dobrze. Czy kupiec wie, że wszystko jest w porządku?
Co z bezpieczeństwem? Co z problemami z wydajnością? Co z problemami z uaktualnieniem?
W żaden sposób nie-programista może ocenić te rzeczy.
Komunikat Magento Connect mówi, że łatwo jest rozszerzyć swój sklep Magento, instalując Magento bez programisty. Może się przydać w sprzedaży, aby powiedzieć komuś, że tak jest, ale to po prostu nieprawda.
Najbardziej odczuwam to, że w komunikacji potrzeba dewelopera jest po prostu implikowana i nie jest komunikowana. W rezultacie wielu właścicieli sklepów psuje sklep, instalując rozszerzenia. To kosztuje, czas, nerwy oraz reputację Magento i deweloperów.
Lubię, aby moje klasy miały wyraźny interfejs i uważam, że dobrze by było, gdyby wymagania programistyczne dla Magento były również jawnie przekazywane.
Wnioski
Nie jest to wcale dobre dla ekosystemu, nawet jeśli naprawienie uszkodzonych stron zapewnia dochód niektórym programistom Magento. Te same pieniądze mogłyby zostać wykorzystane do stworzenia prawdziwej wartości dla klientów kupców.
Na Twitterze ktoś powiedział, że kupcy to dorośli, którzy mogą sami zdecydować, czy zainstalować rozszerzenie, czy nie. Nie zgadzam się. Jeśli kupiec nie jest programistą w tym samym czasie, nie może sam decydować.
Magento Connect nie powinien ułatwiać osobom nietechnicznym strzelania sobie w stopę.
Osobiście mam dość oglądania spieprzonych instalacji Magento z powodu rozszerzeń. Wolę tworzyć rzeczy, które po prostu sprzątają bałagan.
Zastanawiam się nad usunięciem moich rozszerzeń z Magento Connect, ponieważ nie chcę już wspierać wadliwego pomysłu.
Rozwiązanie
Moim zdaniem rozwiązanie jest łatwe i tanie. Nie chodzi o tworzenie kolejnego nowego rynku rozszerzeń , komercyjnego lub bezpłatnego. To nie jest problem techniczny, chodzi tylko o komunikację.
Jeśli Magento Connect stwierdziłby, że jest to zasób dla programistów, a rozszerzenia powinny zostać sprawdzone przed instalacją, a tylko programiści powinni instalować rozszerzenia, nie byłoby to problemem. Sprzedawcy, którzy nadal instalują rozszerzenia, robią to, znając ryzyko.
Oto trzy proste kroki, dzięki którym Magento będzie bardziej przyjazny dla handlowców:
- Usuń opcję instalowania rozszerzeń za pomocą interfejsu Magento Admin (np. Downloadera).
- W Magento Connect wyraźnie i wyraźnie zaznacz, że pobieranie, przeglądanie i instalowanie dowolnego rozszerzenia jest zadaniem programisty.
- Poinformuj programistów, aby przeprowadzili pełną recenzję każdego rozszerzenia, które zostanie zainstalowane w witrynie.
Końcowe słowa
Uwielbiam udostępniać rozszerzenia. Uwielbiam open source. Myślę, że społeczność programistów Magento jest niesamowita !!
Sprawdzanie rozszerzeń to świetny sposób na naukę. Magento Connect nie jest zły, tylko wiadomość, którą wyświetla osobom nietechnicznym.
Każda strona Magento to aplikacja. Jest wyjątkowy i należy go traktować jako wyjątkowy wysiłek rozwojowy.
W ekosystemie powinna istnieć ogólna zgoda co do tego, że rozszerzenia mogą być przydatne, ale ich częstsze instalowanie nie będzie wymagało pisania ani modyfikacji kodu, a zatem wymaga programisty.
EDYCJA : Na moim blogu opublikowałem trochę mniej technicznych informacji ogólnych .