Instalación de extensión y las consecuencias
La idea de tener un sistema extensible es genial, pero como sabemos los desarrolladores, no es tan simple. Muchas cosas pueden (y, desafortunadamente, hacerlo) salir mal.
Visión de conjunto
Comenzaré con una lista de problemas potencialmente causados por la instalación de extensiones. Luego, haré mi punto principal y expondré las conclusiones que personalmente saco de todo eso, y finalmente sugeriré una solución. (Esto probablemente se prolongará, disculpas de antemano. Trataré de escribir lo menos posible y aún cubriré el tema).
Para comenzar, aquí hay una lista de problemas comunes encontrados debido a la instalación de extensiones.
Seguridad
No se realiza ninguna revisión de código antes de que se acepte una extensión en Magento Connect. Como consecuencia, muchas extensiones contienen vulnerabilidades. Hay muchas razones, como desarrolladores inexpertos o perezosos, el uso de código de terceros vulnerable y algunas extensiones incluso contienen código malicioso dañino. La ejecución remota de código, las inyecciones SQL y el tiempo de inactividad son una realidad. Las consecuencias son pérdida de datos del cliente, pérdida de credenciales de pago, pérdida de ingresos, pérdida de tiempo y pérdida de confianza.
Actuación
Una extensión puede funcionar bien en un sitio o en una instancia de desarrollador, pero con un catálogo o base de clientes diferente, puede causar serios problemas de rendimiento. Puede haber muchas razones concretas que van desde la carga ineficiente de entidades, uniones SQL no optimizadas, una gran cantidad de solicitudes ajax, una gran cantidad de opciones de atributos o atributos, y muchas más. Como cada llamada comercial nos dice a los desarrolladores, el rendimiento es importante. Esto cuesta un ingreso comercial.
Conflictos
Incluso dos extensiones, incluso cuando se desarrollan utilizando las mejores prácticas, pueden entrar en conflicto. Esto se debe principalmente a la forma en que el marco de Magento combina la configuración XML. En el mejor de los casos, estos conflictos son visibles a través de un seguimiento de pila o una pantalla en blanco, en el peor de los casos, el sitio inhibe un comportamiento extraño y difícil de depurar. Un comerciante no podrá solucionar los problemas y hacer que coexistan extensiones conflictivas sin la ayuda de un desarrollador. Esto cuesta tiempo y dinero.
Capacidad de actualización
No actualizar no es una opción, aunque solo sea por razones de seguridad. Las extensiones deben mantenerse, como bases de código individuales y como parte del marco Magento. Si se está utilizando una extensión y el desarrollador original no continúa manteniendo la extensión, algún otro desarrollador tiene que hacerse cargo. No tener un desarrollador a menudo hace imposible que un comerciante actualice, lo que a su vez hace que los sitios sean más lentos de lo que tienen que hacerlo, se explotan los problemas de seguridad y, por lo tanto, se pierden ingresos.
Extensibilidad
Agregar nuevas funciones a un sitio existente se vuelve cada vez más complejo y, por lo tanto, costoso, porque cada extensión del sistema agrega su deuda técnica. La deuda general es mucho mayor que cada extensión individual, ya que la complejidad combinada también es mayor que cada una por sí sola. No poder experimentar fácilmente con nuevas características y cambios causa a un comerciante una gran cantidad de ingresos perdidos.
Desinstalación
Las siguientes cosas causan rotura en Magento al desinstalar una extensión:
- Registros de bases de datos que hacen referencia a una clase en la extensión desinstalada (por ejemplo, indexadores o modelos de backend de atributos). Incluso las extensiones que siguen las mejores prácticas son propensas a esto.
- Desinstalar extensiones que sobrescriben el código central deja a Magento sin el archivo original. Por supuesto, esto solo sucede si una extensión no sigue las mejores prácticas, pero es un hecho que muchas extensiones son malas.
La rotura del sitio, por supuesto, cuesta dinero.
Magento Connect
Dada la lista de problemas anteriores, ¿cómo puede alguien esperar que un no desarrollador instale una extensión y evalúe si funciona en un sitio determinado?
No hay una desinstalación limpia garantizada, por lo que a menudo una instalación dañada ni siquiera puede repararse. La única opción es hacer una copia de seguridad completa de antemano, y luego hacer una reversión manual si algo sale mal. ¿Puede una persona no técnica hacer eso? En mi experiencia, no.
Supongamos que todo se ve bien. ¿El comerciante sabe que todo está bien?
¿Qué hay de la seguridad? ¿Qué pasa con los problemas de rendimiento? ¿Qué pasa con los problemas de actualización?
No hay forma de que un no desarrollador pueda evaluar estas cosas.
El mensaje que comunica Magento Connect es que es fácil ampliar su tienda Magento instalando Magento sin un desarrollador. Puede ser útil en un argumento de venta decirle a alguien que es así, pero simplemente no es cierto.
Lo que más experimento es que, en la comunicación, la necesidad de un desarrollador simplemente está implícita y no se comunica. Como consecuencia, muchos propietarios de tiendas rompen su tienda instalando extensiones. Eso cuesta dinero, tiempo, nervios y reputación de desarrolladores y Magento.
Me gusta que mis clases tengan una interfaz explícita, y creo que sería bueno que los requisitos del desarrollador para Magento también se comuniquen explícitamente.
Conclusiones
Esto no es bueno para el ecosistema en absoluto, incluso si la reparación de sitios rotos proporciona ingresos para algunos desarrolladores de Magento. El mismo dinero podría usarse para crear un valor real para los clientes comerciantes.
En Twitter, alguien dijo que los comerciantes son adultos, que pueden decidir por sí mismos si instalan una extensión o no. Estoy en desacuerdo. Si un comerciante no es desarrollador al mismo tiempo, no puede decidir por sí mismo.
Magento Connect no debería facilitar que las personas no técnicas se disparen en el pie.
Personalmente, estoy cansado de ver las instalaciones de Magento jodidas debido a las extensiones. Prefiero crear cosas que simplemente limpien un desastre.
Estoy pensando en eliminar mis extensiones de Magento Connect porque ya no quiero apoyar la idea defectuosa.
Solución
En mi opinión, la solución es fácil y barata. No se trata de crear otro nuevo mercado de extensiones , comercial o gratuito. Este no es un problema técnico, se trata de comunicación.
Si Magento Connect declara que es un recurso de desarrollador, y que las extensiones deben revisarse antes de la instalación, y que solo los desarrolladores deben instalar extensiones, esto no sería un problema. Los comerciantes que aún instalan extensiones lo hacen sabiendo los riesgos.
Así que aquí hay tres pasos simples que harían que Magento sea más amigable para los comerciantes:
- Elimine la opción de instalar extensiones a través de la interfaz de administración de Magento (por ejemplo, el descargador).
- Indique de forma clara y visible en Magento Connect que el trabajo de un desarrollador es descargar, revisar e instalar cualquier extensión.
- Eduque a los desarrolladores para que realicen una revisión completa de cualquier extensión que se instale en un sitio.
Palabras finales
Me encanta compartir extensiones. Amo el código abierto. ¡Creo que la comunidad de desarrolladores de Magento es increíble!
Revisar extensiones es una excelente manera de aprender. Magento Connect no es malo, solo el mensaje que proyecta a personas no técnicas.
Cada sitio de Magento es una aplicación. Es único y debe tratarse como un esfuerzo de desarrollo único.
Debería haber un consenso general en el ecosistema de que las extensiones pueden ser útiles, pero instalarlas con más frecuencia no requerirá que se escriba o modifique el código, y por lo tanto requiere un desarrollador.
EDITAR : publiqué información de antecedentes menos técnica en mi blog .