Feb/101
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.
Sin trackbacks por ahora.

12:03 on 18 Febrero 2010
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.