¿Por qué los desarrolladores de Magento no usan Zend Framework 2 para Magento 2?

21

Magento continuará utilizando principalmente el Zend Framework original (versión 1) para Magento 2 (fuente: Magento 2 y Zend Framework 2 )

Viendo como Magento 2 no será compatible con Magento 1 de todos modos, ¿por qué no están actualizando a Zend Framework 2?

Espero una respuesta técnica autorizada.

Comunidad
fuente
esta pregunta es 99% similar a magento.stackexchange.com/questions/33259/… . pero no puedo configurarlo como duplicado ya que el interrogador anterior no aceptó la respuesta de @Marius. Sin embargo, estoy ansioso por saber su respuesta. Esperemos una respuesta oficial para ese "POR QUÉ" :-)
Rajeev K Tomy
44
Solo un desarrollador principal puede responder esto con precisión. Convocamos a @AntonKril.
Marius
@ Mario: sí, esta pregunta es una duda básica que se nos ocurrirá cada vez que comencemos a aprender magento 2 (especialmente quién está familiarizado con magento 1. *). Esto no debe mantenerse en secreto. Más bien debería ser revelado. Esperemos que un funcionario responda a esta pregunta
Rajeev K Tomy

Respuestas:

32

Solo para repetir las partes importantes anteriores, las aplicaciones de Magento 2 deberían usar las API oficiales de Magento 2, no Zend directamente. Por lo tanto, a los desarrolladores no les debería importar sobre qué construimos.

Para las mentes inquisitivas, Magento 2 utiliza bits de diferentes marcos. Utilizamos el acceso a la base de datos de Zend 1. Investigamos el cambio a Doctrine, pero fue demasiado trabajo para la versión Magento 2.0.0. Sin embargo, podemos hacerlo en 2.1, 2.2, 3.0 o ... (sin compromiso aún). Cuando lo hagamos, también podremos cambiar de opinión sobre si usar ZF1, ZF2, Doctrine, etc. según la nueva información disponible. Magento 2 también puede tener un archivo YML (lo que significa que usamos parte de Symfony). Una parte del instalador usó algo de ZF2 (¿deberíamos desarrollar una nueva aplicación en ZF1?), Pero esto puede cambiar. También vimos una pequeña parte de Angular que posiblemente parecía interesante para MV * en JavaScript.

Pero tan pronto como esté buscando lo que está debajo del marco de trabajo de Magento, probablemente esté haciendo lo incorrecto. Su código de aplicación no debería importarle. Debería utilizar las API "oficiales" proporcionadas por el marco de trabajo de Magento para que podamos cambiar las partes internas sin afectar los sitios o extensiones de clientes existentes. Por "oficial", vamos a documentar qué API son API "compatibles" (aún no se han hecho muy bien); para que las actualizaciones sean más confiables, vamos a mantener estas API lo más estables posible, pero haremos cambios en el código subyacente base para mejorar el rendimiento, etc.

Nota: No busco en esta área muy a menudo: las preguntas de Magento 2 se ven en el rastreador de problemas de GitHub. Estamos tratando de mantenerlos a todos allí en este momento.

Alan Kent
fuente
1
¿Entonces está mal usar clases Zend en nuestro código? Noté que Magento llama a algunas funciones estáticas de Zend en los archivos de plantilla, es decir <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić
1
Sí, @ ZvonimirBurić, deberías usar \Magento\Framework\Json\DecoderInterfaceen su lugar. O json_encode/ json_decodedirectamente.
nevvermind
¿Qué pasa con los validadores? parece que no hay un equivalente de Magento a la validación Zend
Antonio Pedicini el
10

La pregunta se hizo muchas veces. Todo se reduce al retorno de la inversión. Es un gran esfuerzo migrar, el valor no es tan alto y Magento, ya que incluye ZF1 como una biblioteca en la distribución, solo se responsabiliza de esta biblioteca, incluidos parches para problemas, etc.

Piotr Kaminski
fuente
2
Gracias por la respuesta Piotr. ¿Sabes si ZF1 todavía es compatible con Zend? Encontré una pregunta frecuente (posiblemente desactualizada) (aquí: framework.zend.com/about/faq ) que dice: "Actualmente planeamos admitir completamente Zend Framework 1 hasta al menos principios de 2014, incluidas las actualizaciones de mantenimiento y seguridad".
3
@Marius: magento 2 gobernará durante las próximas 2,3 décadas (con suerte). En ese caso, como dijo Tom, si el soporte de ZF1 ha expirado, ¿qué pensaría sobre el futuro de Magento 2. Mantener una base desactualizada es lo suficientemente bueno? quién sabe !
Rajeev K Tomy
55
Basado en su manejo de PHP, supongo que Magento tiene una política de ser extremadamente conservador con sus lanzamientos. Requieren la versión estable más antigua de PHP que todavía está recibiendo actualizaciones de seguridad. Requerieron 5.3 hasta que PHP finalmente anunció el fin de su vida útil. Si tuviera que adivinar, podría pensar que su enfoque de ZF es el mismo: usar la versión más antigua y estable que todavía tiene soporte. La pregunta para mí, como comenta programmer_rkt, es si Magento cambiará a ZF2 cuando ZF 1 llegue al final de su vida útil incluso en una versión 2.x o mantendrán ZF1 ellos mismos sin Zend y la comunidad ZF1.
3
Esta es la respuesta correcta. :-)
puntos de referencia
2
No sé si lo reconsideraremos, no sé si no lo haremos. Si el efecto de no estar en ZF2 fuera fuerte, eso podría influir en las cosas, pero dudo que ese sea el caso. Tenga en cuenta que no soy parte del equipo de producto , así que esta es solo mi opinión.
Benmarks
2

Por la misma razón, usaron Prototype.js en lugar de jQuery para Magento 1.

Parece que ZF1 es aproximadamente dos veces más rápido que ZF2. Chequea aquí

El problema es que ZF1 ya no es compatible (hasta donde yo sé) a partir de este año. Yo personalmente iría con ZF2. Estoy seguro de que lo optimizarán pronto.

Razvan
fuente
1
He leído que jquery era un bebé cuando se lanzó magento 1 y prototype.js era la herramienta de JavaScript bien establecida. Para un pez grande como el magento, confiar en una herramienta no establecida como jquery (en ese momento) está fuera de la caja
Rajeev K Tomy
Gracias por la respuesta. ¿Puedes por favor elaborar un poco?
1
Bueno, parece que ZF1 es aproximadamente dos veces más rápido que ZF2. Consulte aquí: developerknowhow.com/zf1-vs-zf2 El problema es que ZF1 ya no es compatible (hasta donde yo sé) a partir de este año. Yo personalmente iría con ZF2. Estoy seguro de que lo optimizarán pronto.
Razvan
No estoy seguro de si Magento eligió Zend Framework debido a su velocidad de ejecución. No se sabe exactamente por ser rápido.
Investigué un poco y descubrí que la última versión de ZF1 se lanzó hace 8 días. framework.zend.com/downloads/archives Parece que todavía es muy compatible.