Primer vistazo a Symfony2

El resto del año hasta la liberación de la primera versión de Symfony2 promete ser muy entretenida. Hoy hemos podido saborear la primera entrega de una versión de previsualización y es hora de ver diferencias y opinar.

Git vs Subversion

Symfony quiere dar carpetazo a Subversion para pasarse a Git, un sistema de control de versiones distribuido mucho más adecuado para proyectos en los que interviene una infinitud de desarrolladores.

Siendo un subversion-boy, este tema me escuece especialmente, porque he adaptado mi manera de trabajar al excelente duo Subversion-Trac pero he de reconocer que el cambio es completamente coherente y que va a facilitar que más y más gente intervenga y aporte código a Symfony. Solo espero que surjan herramientas como Trac que permitan a las organizaciones a montar su mini-reino de control de desarrollos Git lo antes posible.

Retrocompatibilidad

Adios con la manita. Piénsate muy bien cómo vas a desarrollar todos los proyectos a lo largo de este año, porque cuando quieras migrar a Symfony2 vas a tener que picar mucho. Aplicar buenas costumbres de programación orientada a objetos es más importante que nunca. Un buen punto de partida sería desarrollar los módulos de tus aplicaciones Symfony 1.x como plugins directamente. De este modo, la transición te dolerá menos (aunque me parece una locura).

Doctrine vs Propel vs Doctrine2

Aunque me considero más que solvente en Propel, soy un novatillo en Doctrine, por lo que no puedo entrar a valorar en profundidad sus bondades. Sin entrar en lo técnico, Propel va más con mi estilo de programación y me siento un poco “sucio” cuando hago algo en Doctrine. Supongo que se pasará con el tiempo…

Lo que no se puede discutir es que Doctrine es el camino a seguir, te guste o no. La historia de Propel y Doctrine es una historia muy triste: un ejemplo de las dificultades que un projecto OpenSource se puede encontrar en su vida. Si Propel hubiese tenido una evolución más sostenida seguramente hoy estaría en igualdad de oportunidades frente a Doctrine pero, lamentablemente, el frenazo de la versión 1.2 le ha costado el nacimiento de un serio competidor que además tiene el apoyo motriz de los propios creadores de Symfony.

Lo que no entiendo es que se quiera potenciar Doctrine cuando Propel gana en los benchmarks de rendimiento. Uno de los principales objetivos de Symfony2 es mejorar la eficiencia y el rendimiento del framework, por lo que apoyar Propel parecería lo adecuado. Mucho tiene que mejorar Doctrine2, creo yo.

Algo que me gustaría es dejar de depender de los drivers PDO y empezar a usar drivers nativos para aprovechar un poquito más las características particulares de cada motor de bases de datos. Según he leido, parece que se podrá con esta nueva versión :)

Symfony vs Symfony2

En cuanto al framework en sí, la nueva versión parece mucho más estructurada y de nivel más bajo que la actual. Es muy recomendable leerse la QuickTour para entrar en detalles, pero grosso-modo:

  • La organización del código se hace a través de los namespaces de PHP 5.3.
  • Las configuraciones se pueden hacer en PHP, YAML, XML o INI. Se recomienda XML.
  • Se implementa un paradigma MVC más convencional. El Controlador, la Vista y el Modelo son muchos más presentes.
  • Los plugins y los módulos se fusionan en los bundles. Cada bundle tiene la estructura de una app actual: librerías, plantillas, javascript, css, etc.
  • Los bundles están diseñados para encapsular una determinada funcionalidad y para ser intercambiado entre desarolladores y proyectos.
  • La distinción entre acciones y componentes se diluye. Es como si las acciones se vistieran de componentes y su integración en las vistas es mucho más flexible.
  • El sistema de enrutado es muy parecido al actual, pero parte se delega en los bundles para dar mayor flexibilidad.
  • Ahora las variables entran en las acciones desde el sistema de enrutado.
  • Los helpers vuelven para quedarse. El concepto ha sido rediseñado y ahora son objetos que amplían la funcionalidad de la vista.
  • Mayor coherencia en torno a las clases responsables de las peticiones, respuestas, cabeceras, sesiones… Pocos cambios al respecto.

A partir de aquí el territorio es completamente nuevo para los que venimos de Symfony. El sistema de directorios es completamente distinto y se basa principalmente en los bundles, el proceso de bootstraping del controlador es nuevo también… La QuickTour es de obligada lectura definitivamente. También es recomendable ver la presentación de Fabien Potencier sobre Symfony2.

Resumen

Como digo al principio de este artículo, va a ser un año movidito. Hay que ponerse las pilas. Personalmente, tengo que suplir el handicap de no tener soltura con Doctrine, pero todo se andará. Me gusta mucho la dirección en la que se está moviendo el proyecto Symfony, aunque lo de Doctrine me resulta difícil de aceptar.

A Symfony2 le falta mucho para estar listo. Por ejemplo, no tiene un framework de formularios, generador de CRUDs, framework de testeo y Doctrine solo está integrado parcialmente. Espero que tengamos pronto una versión alfa para hincarle el diente y volver a repetir la historia que viví cuando le metí mano por primera vez al alfa 0.6 de Symfony allá por el 2006.

Retweet
Publicado el: 18 febrero 2010
Categorías: Desarrollo
Etiquetas:
Comentarios: 5 comentarios.
Comentarios
Comentario de Aitor - 18 de febrero de 2010 a las 12:03

Tio, a mi me están dando ya miedo. No es normal que haya TANTOS cambios de una versión a otra haciendo la retrocompatibilidad imposible.

Si lo que quieren es que cuando desarrolles una aplicacion en una versión se quede para siempre en esa versión porque la adaptación es un dolor, lo están consiguiendo.

Comentario de Aitor2 - 23 de febrero de 2010 a las 13:43

Puedes usar git con trac por medio de un (o varios) plugin de trac.

Comentario de Yon - 12 de marzo de 2010 a las 18:18

Joder, que vértigo da meterse en 1.4 con todos los cambios que va a haber antes de que acabe el año. Va a ser como volver a empezar.

Los bundles es una BUENISIMA idea, es el santo grial que llevo toda la vida buscando ¿lo habrán encontrado?

Comentario de fistroman - 19 de octubre de 2010 a las 18:38

Yo estoy aprendiendo symfony(a la vez que desarollo web), he dividido mi proyecto, que es grande, en fases, y el cambio de symfony me pillará acabada la fase 2, lo cual es una marranada.
Pero… a este mundo venimos a sufrir, cuando salga le echaré un ojo, y si me gusta lo que ofrece, esperaré un par de revisiones y cambiaré el proyecto, desde cero…
Hasta entonces, curraré con la versión 1.4.
Me gusta que cambien las cosas, me gusta mucho. Encima te garantizan que dan soporte durante dos años a tu versión, ¿Cuanto tardas en aprender un framework??
Es más si no hubiesen cambios, acabarías cambiando porque el proyecto se muere, pq el framework chupiplaster ofrece integración directa con el porno durante el desarrollo, y ya nadie usa symfony. (Tendrás que aprender otro frameowrk quieras o no).
A SUFRIR!!… que son dos días.

Comentario de Guille - 20 de octubre de 2010 a las 10:04

@Firstoman en efecto, hay que surfear la ola como sea :D

Mi recomendación es: orientación a objetos por encima de todo, buena estructura y, sobre todo, aplicación de patrones de diseño.

Es la única manera de asegurarse una transición lo más suave posible a Symfony2, bajo mi punto de vista.