Debido a la cercana salida de Drupal8 que contará con numerosas novedades toca ponernos al día con ellas. El código de la nueva versión está mejor orientado a objetos (clases, interfaces, etc) e incorpora los últimos estándares de la codificación en PHP que ofrece a los desarrolladores mayor flexibilidad y facilidad para cambiar y comprender el comportamiento del sistema a diferencia de Drupal7 donde se seguía una tónica fuertemente procedural, con el uso de sus famosos «hooks» que podía volver loco a cualquiera. Ahora se adoptan técnicas y componentes de la comunidad de PHP (las mejores librerías como Composer, PHPUnit, Guzzle, Zend Feed Component, Assetic y algunas más) sin necesidad de reinventar la rueda con soluciones sólo válidas para Drupal.
La principal novedad es la incorporación en el Core de módulos externos y la adopción de componentes de Symfony2 así como la sustitución de PHPtemplate Engine por Twig Template Engine y otros componentes de Symfony2. Se nos ofrece la posibilidad de desarrollar nuestros propios módulos con las facilidades que aporta este framework y su conocido sistema de plantillas flexible, rápido y seguro. El marcado de páginas está ahora basado en HTML5 y todas las plantillas incluidas son responsive (no se ha adaptado lo que había a versiones móviles, sino que se ha desarrollado íntegramente para dispositivos móviles y luego se ha escalado a resoluciones mayores). Incluso las páginas de administración funcionan mucho mejor en dispositivos móviles, tanto tablas como la barra de herramientas incluida en Drupal8 se adaptan correctamente a estos dispositivos.
La inclusión de nuevos componentes va más allá del backend, Backbone.js y Underscore.js son otra incorporación destacada, estas estupendas librerías de presentación son fuertemente usadas en el core para mantener los estados de sincronización y modelado de datos.
El módulo Views (probablemente el de mayor éxito en Drupal) estará incorporado en el Core y se utiliza en todo el sistema ya que era indispensable para muchos desarrolladores y requerido por otros módulos para realizar consultas a la base de datos y visualizar los resultados sin necesidad de programar SQL. Será más fácil personalizar tanto la presentación de contenido en páginas y bloques, como crear páginas de administración personalizadas con filtros y acciones.
Los servicios web también estarán totalmente integrados en el Core, cualquier Drupal tras ser instalado podrá enviar/recibir fácilmente cualquier tipo de datos a/desde cualquier otra web, permitiendo envíos a través de JSON o XML, identificación de usuarios, núcleo para aplicaciones móviles, etc. La nueva versión incorpora el lenguaje HAL (Hypertext Application Language).
El sistema multi-idioma se incorpora al Core de Drupal8. En la nueva versión se podrá traducir cualquier palabra desde la interfaz de usuario. Se podrá crear páginas nuevas filtrando por un idioma específico y configurar la visibilidad de los bloques en base al idioma. También se automatiza la obtención de traducciones de idiomas aportadas por la comunidad.
Incorporación de CKEditor en el Core como editor de texto enriquecido. Se ha realizado una mejora sustancial en la interfaz de edición para los contenidos, ahora todo es más sencillo, se editará el contenido de la misma forma y en el mismo sitio en que lo vas a ver.
Incorpora un nuevo sistema de configuración basado en ficheros. De esta forma podremos llevar fácilmente los datos de un entorno de desarrollo (nuevos tipos de contenido o vistas) a un entorno de producción, así como utilizar un sistema de control de versiones para controlar también los cambios en bases de datos, y todo sin peligro de afectar a los datos de producción.
Este es un adelanto de las novedades que se incorporan a Drupal, ya hemos empezado a realizar pruebas y podemos decir que han sido decisiones más que acertadas y que se va por el buen camino, pero para todos los amantes de Drupal7 que no quieran ni oír hablar de estas novedades y que prefieran algo mas continuista tienen el proyecto Backdrop CMS que seguro les resultará interesante.