Erweiterungsinstallation & die Konsequenzen
Die Idee, ein erweiterbares System zu haben, ist großartig, aber wie wir Entwickler wissen, ist es nicht so einfach. Viele Dinge können (und tun es leider) schief gehen.
Überblick
Ich beginne mit einer Liste von Problemen, die möglicherweise durch die Installation von Erweiterungen verursacht werden. Dann werde ich mein Hauptaugenmerk darauf richten und die Schlussfolgerungen darlegen, die ich persönlich daraus ziehe, und schließlich werde ich eine Lösung vorschlagen. (Dies wird wahrscheinlich lange dauern, entschuldige mich im Voraus. Ich werde versuchen, so wenig wie möglich zu schreiben und das Thema trotzdem abzudecken.)
Im Folgenden finden Sie zunächst eine Liste häufig auftretender Probleme, die bei der Installation von Erweiterungen auftreten können.
Sicherheit
Es wird keine Codeüberprüfung durchgeführt, bevor eine Erweiterung in Magento Connect akzeptiert wird. Infolgedessen enthalten viele Erweiterungen Sicherheitsanfälligkeiten. Es gibt viele Gründe, z. B. unerfahrene oder faule Entwickler, die Verwendung von anfälligem Code von Drittanbietern und einige Erweiterungen enthalten sogar schädlichen Code. Remote-Code-Ausführung, SQL-Injections und Ausfallzeiten sind Realität. Die Folgen sind verloren gegangene Kundendaten, verloren gegangene Zahlungsausweise, entgangene Einnahmen, verlorene Zeit und verlorenes Vertrauen.
Performance
Eine Erweiterung kann auf einer Site oder in einer Entwicklerinstanz problemlos funktionieren, bei einem anderen Katalog oder Kundenstamm können jedoch schwerwiegende Leistungsprobleme auftreten. Es kann viele konkrete Gründe geben, wie ineffizientes Laden von Entitäten, nicht optimierte SQL-Joins, eine hohe Anzahl von Ajax-Anforderungen, eine hohe Anzahl von Attributoptionen oder Attributen und vieles mehr. Wie jeder Händleranruf uns Entwicklern mitteilt, ist die Leistung von Bedeutung. Dies kostet einen Händlerumsatz.
Konflikte
Selbst nur zwei Erweiterungen können Konflikte verursachen, selbst wenn sie mit Best Practices entwickelt wurden. Dies liegt hauptsächlich an der Art und Weise, wie das Magento-Framework Konfigurations-XML zusammenführt. Im besten Fall sind diese Konflikte über einen Stack-Trace oder einen leeren Bildschirm sichtbar, im schlimmsten Fall verhindert die Site seltsames und schwer zu debuggendes Verhalten. Ein Händler ist nicht in der Lage, die Probleme zu beheben und widersprüchliche Erweiterungen ohne die Hilfe eines Entwicklers nebeneinander auszuführen. Das kostet Zeit und Geld.
Ausbaufähigkeit
Ein Nicht-Upgrade ist schon aus Sicherheitsgründen keine Option. Erweiterungen müssen als einzelne Codebasis und als Teil des Magento-Frameworks gepflegt werden. Wenn eine Erweiterung verwendet wird und der ursprüngliche Entwickler die Erweiterung nicht weiter pflegt, muss ein anderer Entwickler übernehmen. Wenn ein Händler nicht über einen Entwickler verfügt, kann er häufig kein Upgrade durchführen, was wiederum dazu führt, dass Websites langsamer als nötig sind, Sicherheitsprobleme ausgenutzt werden und dadurch Einnahmen verloren gehen.
Erweiterbarkeit
Das Hinzufügen neuer Features zu einer vorhandenen Site wird immer komplexer und damit auch teurer, da jede Erweiterung im System ihre technischen Schulden hinzufügt. Die Gesamtverschuldung ist viel größer als bei jeder einzelnen Erweiterung, da die kombinierte Komplexität auch größer ist als bei jeder einzelnen Erweiterung. Wenn Sie nicht in der Lage sind, mit neuen Funktionen und Änderungen zu experimentieren, geht dem Händler viel Geld verloren.
Deinstallation
Die folgenden Dinge verursachen in Magento einen Defekt, wenn eine Erweiterung deinstalliert wird:
- Datenbankeinträge, die sich auf eine Klasse in der deinstallierten Erweiterung beziehen (z. B. Indexer oder Attribut-Backend-Modelle). Auch Erweiterungen, die Best Practices folgen, sind anfällig dafür.
- Bei der Deinstallation von Erweiterungen, die den Kerncode überschreiben, fehlt Magento die Originaldatei. Dies geschieht natürlich nur, wenn eine Erweiterung nicht den bewährten Methoden entspricht, aber es ist eine Tatsache, dass viele Erweiterungen fehlerhaft sind.
Baustellenbruch kostet natürlich Geld.
Magento Connect
Wie um alles in der Welt kann man von einem Nicht-Entwickler erwarten, dass er eine Erweiterung installiert und bewertet, ob sie auf einer bestimmten Site funktioniert?
Es gibt keine Garantie für eine saubere Deinstallation, daher kann eine fehlerhafte Installation häufig nicht einmal repariert werden. Die einzige Möglichkeit besteht darin, vorher ein vollständiges Backup zu erstellen und dann ein manuelles Rollback durchzuführen, wenn etwas schief geht. Kann eine nicht technische Person das tun? Nach meiner Erfahrung nein.
Nehmen wir an, alles sieht in Ordnung aus. Weiß der Händler, dass alles in Ordnung ist?
Was ist mit Sicherheit? Was ist mit Leistungsproblemen? Was ist mit Upgrade-Problemen?
Ein Nichtentwickler kann diese Dinge auf keinen Fall bewerten.
Die Nachricht, die Magento Connect kommuniziert, ist, dass es einfach ist, Ihren Magento-Shop zu erweitern, indem Sie Magento ohne Entwickler installieren. In einem Verkaufsgespräch mag es nützlich sein, jemandem mitzuteilen, dass dies der Fall ist, aber es stimmt einfach nicht.
Was ich meistens erlebe, ist, dass in der Kommunikation das Bedürfnis nach einem Entwickler einfach impliziert und nicht kommuniziert wird. Infolgedessen brechen viele Ladenbesitzer ihren Laden durch die Installation von Erweiterungen. Das kostet Geld, Zeit, Nerven und das Ansehen von Magento und Entwicklern.
Ich mag es, wenn meine Klassen eine explizite Schnittstelle haben, und ich glaube, es wäre gut, wenn die Entwickleranforderung für Magento auch explizit kommuniziert würde.
Schlussfolgerungen
Dies ist überhaupt nicht gut für das Ökosystem, auch wenn das Reparieren defekter Sites einigen Magento-Entwicklern ein Einkommen bringt. Das gleiche Geld könnte verwendet werden, um einen echten Mehrwert für die Kunden des Händlers zu schaffen.
Auf Twitter sagte jemand, dass Händler Erwachsene sind, die selbst entscheiden können, ob sie eine Erweiterung installieren oder nicht. Ich stimme dir nicht zu. Wenn ein Händler nicht gleichzeitig Entwickler ist, kann er sich nicht selbst entscheiden.
Magento Connect sollte es nicht einfach machen, dass sich Nicht-Techniker in den Fuß schießen.
Persönlich bin ich es leid zu sehen, dass Magento-Installationen aufgrund von Erweiterungen versaut sind. Ich ziehe es vor, Dinge zu erschaffen, die nur ein Chaos beseitigen.
Ich denke darüber nach, meine Erweiterungen von Magento Connect zu entfernen, weil ich die fehlerhafte Idee nicht länger unterstützen möchte.
Lösung
Meiner Meinung nach ist die Lösung einfach und billig. Es geht nicht darum, einen neuen kommerziellen oder kostenlosen Extension Marketplace zu erstellen . Dies ist kein technisches Problem, es geht nur um Kommunikation.
Wenn Magento Connect angibt, dass es sich um eine Entwicklerressource handelt und dass Erweiterungen vor der Installation überprüft werden sollten und dass nur Entwickler Erweiterungen installieren sollten, ist dies kein Problem. Händler, die noch Erweiterungen installieren, kennen die Risiken.
Hier sind drei einfache Schritte, die Magento händlerfreundlicher machen:
- Entfernen Sie die Option zur Installation von Erweiterungen über die Magento Admin-Oberfläche (z. B. den Downloader).
- Stellen Sie in Magento Connect klar und deutlich dar, dass es Aufgabe eines Entwicklers ist, Erweiterungen herunterzuladen, zu überprüfen und zu installieren.
- Weisen Sie die Entwickler an, eine vollständige Überprüfung aller Erweiterungen vorzunehmen, die auf einer Site installiert werden sollen.
Schlussworte
Ich liebe es, Erweiterungen zu teilen. Ich liebe Open Source. Ich finde die Magento Developer Community großartig !!
Das Überprüfen von Erweiterungen ist eine hervorragende Möglichkeit, dies zu lernen. Magento Connect ist nicht schlecht, nur die Nachricht, die es an nicht-technische Personen sendet.
Jede Magento-Site ist eine Anwendung. Es ist einzigartig und muss als einzigartiger Entwicklungsaufwand behandelt werden.
Es sollte allgemeiner Konsens im Ökosystem sein, dass Erweiterungen nützlich sein können, aber eine häufigere Installation erfordert nicht, dass Code geschrieben oder geändert wird, und erfordert daher einen Entwickler.
EDIT : Ich habe einige weniger technische Hintergrundinformationen in meinem Blog gepostet .