Novedades sobre Drupal 8

Drupal 8

Hace unas semanas tuve la gran suerte de poder ir al evento DeSymfony, la cual tuvo muchas ponencias bastante interesantes, sobre todo el segundo día. El primero fue bastante decepcionante, pero no me meteré a criticar a los que tienen el valor de exponer antes cientos de personas.
Una de las ponencias fue sobre la integración de Symfony en Drupal en su nueva versión 8. Aparte de eso hay muchas novedades que les comentaré acontinuación.

¿Hay alguna razón para este cambio tan grande?
Drupal es una comunidad que lleva años sin sufrir un lavado de cara. Muchos años de antigüedad provocan que haya una deuda técnica ante las nuevas tecnologías. La aparición de los tests así como Frameworks de Javascript obligaban en consecuencia a que Drupal también se oriente a estas nuevas, y eficientes, prácticas.
Cada versión de Drupal siempre se hizo pensando en la anterior, y se hizo pensando en que deberían tener una relación para que sea relativamente fácil para el usuario migrar su sitio a lo último. Pero esa herencia de versiones (Drupal soporta hasta PHP 4, algo inentendible) hace que se quede muy atrás técnicamente. Se ha tomado la decisión de cambiar todo drásticamente, asumiendo las consecuencias, y en esta versión 8 de Drupal se verá el comienzo de una transición hacia las buenas prácticas para el desarrollador.

Cambios en el hook_menu
Ahora las rutas las definiremos en el fichero routing.yml de nuestro módulo personalizado. Algo muy derivado de Symfony. En nuestro hook_menu solo quedará el título de la página que definamos.

¿Pasará algo con los hooks?
Evidentemende, los hooks han sido parte de nuestra vida en Drupal (para los que no solo lo usamos para instalar módulos), pero en Drupal 8 desaparecerán muchos de ellos, para que finalmente en Drupal 9 no existan más. Muy probablemente sea un cambio negativo para muchos, que ya están acostumbrados a desarrollar de una manera, pero las buenas prácticas las tenemos que seguir y los hooks, por lo tanto, deben desaparecer de nuestra mente.

Si los hooks ya no existen, ¿Quiénes los reemplazarán?
En Symfony existe el EventDispatcher, que son disparadores de eventos orientados a objetos, agrupables y, sobre todo, testeables. Un conjunto perfecto de buenas prácticas que Drupal necesitaba tener y que con los hooks no tenía. Como mencioné más arriba, el EventDispatcher convivirá con los hooks en Drupal 8, pero en Drupal 9 los hooks no estarán más.

Dependency Injection (Inyección de dependencias)
Para los que no sepan, la inyección de dependencias es un patrón de diseño orientado a objetos en la cual se suministran objetos a una clase en lugar de crearlas ella misma. Sonará muy confuso, pero crear un objeto dentro de una clase hace que la misma dependa de ese objeto, cosa que no es muy bueno a veces, sobre todo si se tiene que refactorizar el código.
Los objetos siempre tienen que ser creados fuera de una clase, y a lo sumo inyectarlos en ella y que no haya ningún tipo de dependencia si se separan.
Esta práctica la adquirirá Drupal 8, con la idea de que su código sea mucho más legible, escalable y testeable.

Views va a pasar a ser parte del Core
Al fin vamos a tener un módulo prácticamente indispensable en el Core de Drupal. Tendremos el punto negativo que de momento será muy difícil pasar vistas realizadas en Drupal 7, pero seremos optimistas y esperaremos a que haya alguna manera sencilla de hacerlo.

Otros proyectos OS incorporados
Esta es una lista de los proyectos OS que incorporará Drupal en su versión 8.

  • jQuery
  • CKEditor
  • Backbone
  • Modrnizr
  • Farbtastic
  • Grippie
  • Normalize
  • Composer
  • PHPUnit
  • Guzzle
  • Zend Feed

Conclusiones
Drupal hará un cambio drástico en su Core para el uso de las buenas prácticas. Esto es muy positivo, pero muchos de nosotros nos pusimos a pensar: ¿Cuánta gente que usa Drupal usa buenas prácticas?. El ponente nos dijo que con este cambio el 50% de la comunidad Drupal se iría, con que nos ha respondido la pregunta antes de hacerla.
Otros de los puntos a cubrir en las preguntas fue el tema de la migración, el mismo ponente nos dijo que si una persona tiene un site en Drupal 6 o 7 y le funciona bien económicamente, entonces no es necesario migrar a Drupal 8 de momento. No se si es la respuesta que esperaba pero realmente tiene sentido, ahora mismo migrar de versión es prácticamente imposible.
Drupal 8 tiene previsto salir a la luz a comienzos del año que viene, ahora mismo es un 400% más lento que Drupal 7, pero ahora empieza la época de optimización, la cual espero que deje a nuestro CMS favorito en el top del ranking.