¿Por qué decidimos abandonar nuestro framework y pasarnos a Symfony?

Esta es una traducción autorizada del artículo Why we ditched our legacy framework for Symfony publicado por Roland Benedetti.


¿Por qué una empresa de éxito decidió tirar a la basura su excelente plataforma de desarrollo web que tenía una comunidad muy activa? Sigue leyendo este artículo y descubrirás el motivo.

Si el nombre eZ Systems te es desconocido, permíteme que nos presentemos: eZ es una empresa que comercializa soluciones de software libre. Hemos desarrollado un CMS (gestor de contenidos) llamado eZ Publish que pronto cambiará su nombre a eZ Platform. El negocio de eZ consiste en desarrollar soluciones de valor añadido utilizando ese CMS de software libre.

Ahora que ya nos conocemos todos, comencemos con esta historia:

En el año 2011, eZ decidió reescribir el core de su gestor de contenidos. El objetivo, como siempre, era cambiar todo para mejorarlo. Empezamos por el núcleo o core del producto porque creemos que es el primer paso que hay que dar antes de mejorar las partes visibles del gestor de contenidos.

Nuestra situación era la siguiente: habíamos publicado eZ Publish 4.5 en la primavera de 2011. Se trataba de la última versión de una larga serie de versiones que empezó con el lanzamiento de la versión 3.x. Todas estas versiones usaban el mismo kernel, la misma arquitectura y el mismo código que se había introducido por primera vez en el año 2002.

En ese momento eZ Publish era muy estable y a las empresas que lo utilizaban les gustaba lo fácil que era de extender y la calidad de su código. Comparándolo con otras aplicaciones PHP de software libre, eZ Publish era mucho más "empresarial". Estas funcionalidades fueron la clave del éxito de eZ Publish, sobre todo la calidad de su código, algo que en esa época no era muy común en la mayoría de aplicaciones PHP.

eZ Publish ofrecía a los programadores un montón de elementos interesantes: un sistema de extensiones bastante avanzado, un framework para sitios/aplicaciones web y un motor de plantillas. Sin duda, eZ se encontraba en la posición más avanzada del desarrollo de frameworks y plataformas web basadas en PHP.

Entonces decidimos abandonarlo todo

¿Por qué? Porque queríamos rediseñar las dos partes críticas del sistema: el repositorio de contenidos y sus APIs. Esto nos permitiría introducir una nueva arquitectura más adecuada para sistemas escalables y para los entornos basados en cloud.

Otro de los objetivos era abandonar nuestro framework web propio (con su motor de plantillas, sus controladores, sus extensiones, el sistema de caché, etc.) y reemplazarlo con el framework Symfony.

Tirar a la basura algo que funcionaba bien puede parecer una locura, ¿no crees? De hecho, en su momento más de un desarrollador pensó que estábamos cometiendo un error. Pero con el paso del tiempo cada vez estamos más contentos de la decisión que tomamos.

Redefiniendo el objetivo de la empresa

Todas las empresas, especialmente si desarrollan productos, tienen mucho que ganar si se centran exclusivamente en aquellas actividades que forman el core o núcleo de su negocio.

Primero, los frameworks web y los gestores de contenidos son dos piezas de software que están muy desacopladas. Segundo, un framework web es un "producto intercambiable" o commodity. Obivamente no hay nada malo es ser una commodity, ya que hay muchas empresas exitosas cuyo modelo de negocio se basa en este tipo de productos.

Así que no hay ninguna justificación para desarrollar tanto un framework web como un gestor de contenidos a la vez cuando la clave de tu negocio es precisamente el gestor de contenidos.

eZ Publish 3 y 4 se lanzaron en una época en la que no había frameworks web que destacaran, sobre todo en el mundo PHP. Así que tuvimos que desarrollar nuestro propio framework. Pero como dice la canción de Bob Dylan: "The times they are changin'", así que diez años después, la historia es muy diferente.

Al igual que Apple o Microsoft, que no fabrican todos los chips de sus productos, o GM y BMW, que no fabrican las ruedas y frenos de sus coches, o Sony, Canon, Nikon o Leica, que no fabrican todos los elementos electrónicos de sus cámaras digitales, decidimos que sería una buena idea dejar de fabricar nuestro propio framework.

Colaborando con otras comunidades PHP

Fuera de eZ hay todo un mundo de comunidades PHP muy diferentes. Así que tenemos que estar en contacto con otras comunidades para coger ideas, ver cómo evolucionan, pedirles consejo, etc. El objetivo es que las ideas fluyan entre las diferentes comunidades PHP para que todos salgamos ganando.

Al utilizar un framework estándar utilizado en todo el mundo, estos propósitos se convierten en una realidad. Como ejemplo de lo que estoy contando, hace poco asistí a una conferencia (el eZ and PHP Summer Camp) que está organizado por Netgen, una empresa asociada con eZ. Allí vi cómo algunas empresas están combinando eZ Publish con aplicaciones como Sylius, una plataforma de comercio electrónico creada con Symfony, para crear aplicaciones que permite gestionar contenidos y crear soluciones e-commerce.

Y esto es sólo un ejemplo, ya que utilizar el framework web más popular hace que nuestros clientes puedan integrarlo con un montón de aplicaciones y servicios muy populares. Esta es la prueba de que hicimos lo correcto: con nuestro propio framework jamás hubiéramos disfrutado de este tipo de colaboraciones.

Fomentando las contribuciones al proyecto

El tercer motivo por el que decidimos usar Symfony fue para fomentar las contribuciones al proyecto eZ.

En las versiones anteriores, eZ Publish consiguió superar las 10.000 extensiones creadas por los programadores de la comunidad. Por supuesto estamos muy agradecidos a todos esos colaboradores, pero había una cosa que debíamos mejorar. Las contribuciones a las partes internas de la aplicación eran mínimas o prácticamente nulas, como por ejemplo en el motor de plantillas.

Probablemente el motivo es que para contribuir al núcleo de eZ, debes tener unos conocimientos técnicos muy superiores a los que necesitas para crear una exntesión. Otro posible motivo es que nuestro framework estaba muy escondido bajo el gestor de contenidos, por lo que no había muchos incentivos para colaborar en su desarrollo.

Por otra parte, al utilizar un framework como Symfony, todos los programadores eZ puede contribuir al proyecto a todos los niveles, incluso en el framework. Si lo desean, nuestros programadores pueden contribuir al propio código de Symfony, pueden crear "bundles" para reutilizarlos en otras aplicaciones Symfony, etc.

De la misma manera, eZ Publish se beneficia de todas las mejoras que se hacen en el framework. La mayoría de esas mejoras están hechas por personas que ni utilizan ni conocen eZ, pero que aún así nos están ayudando indirectamente.

Haciendo que sea más fácil de extender y personalizar

La principal razón por la que adoptamos Symfony y desechamos nuestro propio framework fue facilitar que la gente pudiera personalizar y extender eZ.

A diferencia de otros gestores de contenidos, eZ siempre se ha construido como una plataforma que permite extender y personalizar sus funcionalidades. En el caso de un gestor de contenidos, no importa cuánta flexibilidad des a tus programadores, ya que nunca es suficiente. Aunque eZ Publish 4.x era bastante flexible, sabíamos que podíamos hacerlo mucho mejor.

Llevábamos mucho tiempo obesrvando a Symfony. Primero como competidor, ya que nosotros también ofrecíamos un framework web. Con el paso del tiempo, ya no lo veíamos como un competidor sino como un proyecto extremadamente interesante que podía resolver muchas de nuestras necesidades. Estas son algunas de ellas:

  • Twig es el motor de plantillas que usa Symfony. Comparado con nuestro motor de plantillas anterior, Twig lo mejora en todo, especialmente en lo fácil que es de usar y en el número de contribuidores del proyecto.
  • Composer, el gestor de paquetes de PHP y fiel compañero de Symfony, permite desplegar aplicaciones de manera mucho más profesional y "empresarial".
  • Doctrine, la capa de abstracción de base de datos simplifica mucho el trabajo de los programadores que extienden eZ y acceden a otras fuentes de información y otras bases de datos.
  • YAML, el formato de configuración semántica que usa Symfony es mucho más moderno, entendible y fácil de escribir que el que usábamos antes para gestionar nuestras opciones de configuración.
  • Caché HTTP, el sistema de caché de Symfony basado en HTTP (al que hemos contribuido bastante porque lo usamos mucho) permite mejoras increíbles en el rendimiento de la aplicación, sobre todo cuando se usa con Varnish.

Por todo esto y por mucho más, decidimos tirar a la basura nuestro propio framework y pasarnos a algo mejor.

¿Sigues pensando que estamos locos?

A medida que pasa el tiempo, cada vez oímos a más programadores fanáticos de las anteriores versiones de eZ decir que les gusta el cambio y que están empezando a asimilarlo en sus propios desarrollos. Eso es lo mejor que podíamos escuchar, ya que valida la decisión tan arriesgada que tomamos en su momento.

Las cuatro razones para el cambio que he dado en este artículo se pueden resumir en una sola frase: lo más importante en el software son las personas.

La tecnología no es absolutamente nada sin las personas que la usan. Pasar de un framework propio al framework estándar hace que una enorme cantidad de programadores puedan conocer y usar nuestros productos. Es una manera de reconocer que no estamos solos en el mundo PHP y que nunca llegaremos lejos si lo hacemos todo nosotros mismos.

El software libre es genial, pero si sólo te quedas en la parte del software y te olvidas de las personas, entonces no es gran cosa. El software libre es genial cuando conecta personas y consigue que colaboren, a pesar de trabajar en diferentes ámbitos, tener diferente nivel técnico y no compartir ni la misma visión ni los mismos objetivos.

Queríamos basar nuestra infraestructura de software en un proyecto de software libre. Pero sobre todo, queríamos basarnos en un proyecto que fuera usado masivamente para conectar con todas esas personas. Gracias a Symfony ya lo hemos conseguido.

Comentarios

  1. Excelente aporte

    Gabriel Gallardo el 17 de marzo de 2015, 14:24:30

  2. Os invito a que conozcáis el producto. Llevo varios años usándolo. Suscribo todo lo que dicen el artículo.

    Carlos Revillo el 18 de marzo de 2015, 11:39:54

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

17 de marzo de 2015

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.