Installation d'extension et les conséquences
L’idée de disposer d’un système extensible est excellente, mais comme nous le savons les développeurs, ce n’est pas si simple. Beaucoup de choses peuvent (et, malheureusement, vont) mal tourner.
Vue d'ensemble
Je commencerai par une liste de problèmes potentiellement causés par l'installation d'extensions. Ensuite, je ferai valoir mon point principal et exposerai les conclusions que je tire personnellement de tout cela, puis je proposerai une solution. (Cela prendra probablement longtemps, excuses à l'avance. Je vais essayer d'écrire le moins possible et de continuer à parler du sujet.)
Pour commencer, voici une liste des problèmes courants rencontrés en raison de l’installation d’une extension.
Sécurité
Aucune révision de code n'est effectuée avant l'acceptation d'une extension sur Magento Connect. En conséquence, de nombreuses extensions contiennent des vulnérabilités. Il existe de nombreuses raisons, telles que des développeurs inexpérimentés ou paresseux, l'utilisation de code tiers vulnérable, et certaines extensions contiennent même du code malveillant. L'exécution de code à distance, les injections SQL et les temps d'arrêt sont une réalité. Les conséquences sont la perte des données client, des informations d'identification de paiement, des revenus, du temps et de la confiance.
Performance
Une extension peut fonctionner correctement sur un site ou sur une instance de développeur, mais avec un catalogue ou une base de clients différent, cela peut entraîner de graves problèmes de performances. Il peut y avoir de nombreuses raisons concrètes, telles que le chargement inefficace d'entités, les jointures SQL non optimisées, le nombre élevé de demandes ajax, le nombre élevé d'options d'attributs ou d'attributs, etc. Comme chaque commerçant nous dit aux développeurs, la performance compte. Cela coûte un revenu marchand.
Conflits
Même deux extensions, même lorsqu'elles ont été développées à l'aide des meilleures pratiques, peuvent être en conflit. Cela est principalement dû à la manière dont l'infrastructure de Magento fusionne la configuration XML. Dans le meilleur des cas, ces conflits sont visibles via une trace de pile ou un écran vide, dans le pire des cas, le site empêche tout comportement étrange et difficile à mettre au point. Un commerçant ne sera pas en mesure de résoudre les problèmes et de faire coexister des extensions en conflit sans l'aide d'un développeur. Cela coûte du temps et de l'argent.
Évolutivité
Ne pas mettre à niveau n'est pas une option, ne serait-ce que pour des raisons de sécurité. Les extensions doivent être conservées, en tant que bases de code individuelles et dans le cadre de Magento. Si une extension est utilisée et que le développeur d'origine ne continue pas à maintenir l'extension, un autre développeur doit prendre la relève. Le fait de ne pas avoir de développeur rend souvent impossible la mise à niveau par un commerçant, ce qui a pour conséquence que les sites sont plus lents que nécessaire, que les problèmes de sécurité sont exploités et que les revenus perdus.
Extensibilité
L'ajout de nouvelles fonctionnalités à un site existant devient de plus en plus complexe et donc coûteux, car chaque extension du système ajoute une dette technique. La dette globale est beaucoup plus importante que chaque extension individuelle, car la complexité combinée est également plus grande que chacune d’elles séparément. Le fait de ne pas pouvoir facilement expérimenter de nouvelles fonctionnalités et modifications entraîne pour le commerçant une perte de revenus importante.
La désinstallation
Les problèmes suivants causent des pannes dans Magento lors de la désinstallation d'une extension:
- Enregistrements de base de données faisant référence à une classe de l'extension désinstallée (par exemple, indexeurs ou modèles d'arrière-plan d'attributs). Même les extensions suivant les meilleures pratiques sont sujettes à cela.
- En désinstallant les extensions qui écrasent le code principal, il manque le fichier d'origine à Magento. Ceci ne se produit bien entendu que si une extension ne suit pas les meilleures pratiques, mais il est un fait que de nombreuses extensions sont mauvaises.
La rupture du site coûte bien sûr de l'argent.
Magento Connect
Étant donné la liste de problèmes ci-dessus, comment peut-on s'attendre à ce qu'un non-développeur installe une extension et détermine si elle fonctionne sur un site donné?
Il n’existe aucune garantie de désinstallation propre, si bien qu’une installation défectueuse ne peut même pas être réparée. La seule option consiste à effectuer une sauvegarde complète au préalable, puis à effectuer une restauration manuelle en cas de problème. Une personne non technique peut-elle faire cela? D'après mon expérience, non.
Supposons que tout a l' air d' aller bien. Est -ce que le tout savoir marchand est d' accord?
Qu'en est-il de la sécurité? Qu'en est-il des problèmes de performance? Qu'en est-il des problèmes de mise à niveau?
Il est impossible qu'un non-développeur puisse évaluer ces choses.
Le message que Magento Connect communique est qu’il est facile d’étendre votre boutique Magento en installant Magento sans développeur. Il peut être utile, dans un argumentaire de vente, de dire cela à quelqu'un, mais ce n'est tout simplement pas vrai.
Ce que je ressens principalement, c’est que dans la communication, le besoin d’un développeur est tout simplement implicite et non communiqué. En conséquence, de nombreux propriétaires de magasin brisent leur magasin en installant des extensions. Cela coûte de l’argent, du temps, des nerfs et la réputation de Magento et des développeurs.
J'aime que mes cours aient une interface explicite et je pense qu'il serait bon que l'exigence de développeur pour Magento soit également explicitement communiquée.
Conclusions
Ce n'est pas bon pour l'écosystème, même si la réparation de sites cassés procure des revenus à certains développeurs Magento. Le même argent pourrait être utilisé pour créer une valeur réelle pour les clients marchands.
Sur Twitter, quelqu'un a dit que les commerçants sont des adultes, qui peuvent décider par eux-mêmes d'installer ou non une extension. Je ne suis pas d'accord. Si un commerçant n'est pas développeur en même temps, il ne peut pas décider seul.
Magento Connect ne devrait pas aider les personnes non techniques à se tirer une balle dans le pied.
Personnellement, j'en ai marre de voir des installations de Magento gâchées par des extensions. Je préfère de loin créer des choses qui nettoient un désordre.
Je songe à supprimer mes extensions de Magento Connect car je ne veux plus soutenir cette idée imparfaite.
Solution
À mon avis, la solution est simple et peu coûteuse. Il ne s'agit pas de créer un autre nouveau marché d'extension , commercial ou gratuit. Ce n’est pas un problème technique, c’est une question de communication.
Si Magento Connect indique qu'il s'agit d'une ressource pour développeur et que les extensions doivent être vérifiées avant l'installation et que seuls les développeurs doivent installer des extensions, cela ne posera pas problème. Les marchands qui installent encore des extensions le font en connaissant les risques.
Voici donc trois étapes simples qui rendraient Magento plus convivial:
- Supprimez la possibilité d'installer des extensions via l'interface d'administration de Magento (par exemple, le téléchargeur).
- Indiquez clairement et visiblement sur Magento Connect que le téléchargement, l’examen et l’installation de toute extension incombent au développeur.
- Apprenez aux développeurs à effectuer une révision complète de toute extension à installer sur un site.
Mots de finition
J'adore partager des extensions. J'adore l'open source. Je pense que la communauté de développeurs Magento est géniale !!
La révision des extensions est un excellent moyen d'apprendre. Magento Connect n'est pas mauvais, juste le message qu'il transmet à des personnes non techniques.
Chaque site Magento est une application. Il est unique et doit être traité comme un effort de développement unique.
Le consensus général dans l'écosystème devrait être que les extensions puissent être utiles, mais pour les installer plus souvent, il ne faudra pas nécessairement écrire du code ou le modifier, et donc faire appel à un développeur.
EDIT : J'ai posté des informations de base moins techniques sur mon blog .