Con la salida de la nueva versión de Drupal a la vuelta de la esquina, las organizaciones que trabajamos en nuestro día a día con este gestor estamos planificando una hoja de ruta para la actualización de todos los sites con Drupal 8 que mantenemos.
Pero, ¿qué cambios trae esta nueva versión? ¿Merece la pena actualizarse? ¿Es sencillo?
Vayamos paso a paso:
Un paso prácticamente indoloro
En el pasado, la aparición de una nueva versión de Drupal suponía o bien la migración y “reconstrucción” del site en la nueva versión, o quedarse estancado en la versión actual e ir realizando las actualizaciones menores de seguridad. Además, la adopción de la nueva versión por parte de las compañías podía tardar meses, generalmente por incompatibilidad de módulos de la comunidad, bugs, funcionalidades incompletas…
En esta ocasión, la situación es muy distinta. La ventana entre la salida de Drupal 9 y el fin de soporte de Drupal 8 es mucho menor. Drupal 9 saldrá a la luz el 3 de junio de este año, mientras que Drupal 8 terminará su soporte en Noviembre de 2021. En concreto, será la versión 8.9 la que tendrá soporte hasta noviembre de 2021.
En versiones anteriores como la 8.7, el soporte finaliza el mismo día en el que se publique Drupal 9. Pero la parte genial de Drupal 9 es que ya no hay inestabilidad en el paso a esta versión, por lo que no es necesario esperar para actualizar los sites. La versión 9 de Drupal no trae consigo ninguna funcionalidad nueva, de hecho será prácticamente igual a las versiones 8.8 y 8.9, pero sin el código marcado previamente como obsoleto (o deprecado, como lo llamamos los desarrolladores).
Tal vez podamos encontrarnos con el problema de que algunos módulos contribuidos no sean todavía declarados oficialmente como compatibles con Drupal 9, aunque ya hay muchos que constan como tal, pero el proceso de actualización y compatibilización de estos módulos es tan sencillo que hará que este problema esté resuelto en cuestión de días.
¿Cómo nos preparamos para la actualización?
Si hemos seguido el proceso de actualizaciones como es habitual y tenemos el site en la última versión, el día 3 de junio se nos presentará la posibilidad de actualizar a la versión 8.9, o de subir directamente a la versión 9.
Ambas versiones serán prácticamente idénticas, salvo que en la versión 9 se elimina todo el código que hasta ahora se había ido marcando como deprecado en la API de Drupal, y además, se actualiza a la versión 4.4 de Symfony.
Es muy importante planificar la ventana de actualización, sobre todo teniendo en cuenta el relativamente poco tiempo del que se dispondrá para pasar a la versión 9 antes de que la 8 quede obsoleta. Así pues, lo mejor es tener claros los pasos a seguir:
1- Priorizar la actualización a la hora de planificar nuevos desarrollos, para evitar en la medida de lo posible trabajo doble.
Si nuestro proceso de desarrollo es correcto, probablemente ya estemos haciendo código compatible con Drupal 9, pero siempre es prudente mantener el CMS completamente actualizado antes de afrontar nuevas funcionalidades, para evitar comprobar de nuevo si estas son compatibles o no.
2- Actualizar la infraestructura
Un cambio fundamental en Drupal 9 es que requiere PHP 7.3, a diferencia de Drupal 8 que solo lo recomienda. También hay unos requisitos mínimos en cuanto al resto de servicios, como la base de datos y drush. Estos son cambios que se pueden realizar en Drupal 8, por lo tanto es más que recomendable acometerlos cuanto antes.
3- Comprobar nuestros módulos custom para ver si son compatibles
Para comprobar la compatibilidad de nuestro código existen herramientas como Drupal Check (https://github.com/mglaman/drupal-check) o Drupal Quality Checker (https://github.com/vijaycs85/drupal-quality-checker) que nos pueden ayudar a detectar ese código deprecado; o también Rector https://github.com/palantirnet/drupal-rector que -en parte- hace ese trabajo de actualización por nosotros, no sin cierta supervisión.
Siempre debemos tener en cuenta que, si bien son herramientas que nos facilitan el trabajo en gran medida, nosotros como desarrolladores también tenemos que dar una última revisión al código y lanzar todos los test que tengamos para comprobar que no hay nada roto. Es más, lo ideal es configurar nuestros test para que fallen si utilizamos métodos deprecados (https://www.drupal.org/docs/9/how-to-prepare-your-drupal-7-or-8-site-for-drupal-9/deprecation-checking-and-correction-tools)
Una vez comprobados nuestros módulos, debemos marcarlos como compatibles en el fichero info.yml con la nueva nomenclatura de versionado semántico.
4- Si detectamos que el código custom de nuestro site es incompatible, reservar un espacio de tiempo para corregirlo
Y es que puede ocurrir que ni siquiera con Rector podamos dar con el problema de compatibilidad y tengamos que “bucear” un poco en nuestro código para corregir algunos problemas. No será lo habitual, pero siempre está bien ser precavido.
5- Comprobar el estado de los módulos contribuidos
Podemos consultar el estado de actualización de los módulos de la comunidad tanto en drupal.org como en esta herramienta que ha preparado Acquia: https://dev.acquia.com/drupal9/deprecation_status
Tal y como se puede ver en la gráfica de compatibilidad de los proyectos, a día 9 de mayo más de la mitad podrían funcionar en Drupal 9. Estos incluyen en verde los explícitamente compatibles, en amarillo los que solo necesitan ser marcados como compatibles, y en azul los cubiertos por Rector.
Por otro lado, también podemos utilizar el módulo Upgrade status (https://www.drupal.org/project/upgrade_status) que nos facilita mucho comprobar de un solo vistazo si los módulos instalados son compatibles o no. Si vemos que alguno de ellos no lo son, siempre podemos buscar una alternativa, o aún mejor, contribuir a la comunidad con un parche para actualizarlo.
6- Poquito a poco… primero la versión 8.9
Si cumplimos los anteriores pasos, ya estamos listos para probar las nuevas funcionalidades y optimizaciones de Drupal 9, pero primero aplicando la versión 8.9 para asegurarnos de que todo funciona. En Biko tenemos claro que esto siempre va en un entorno preproductivo, acompañado de una serie de test funcionales que nos indiquen si todo funciona correctamente. Sobre todo hay que controlar que el modelo de negocio del site funcione correctamente y no falle. Si todo va bien, podremos pasar a producción nuestro último paso por Drupal 8.
7- Y por fin, ¡Drupal 9!
Al igual que en el paso anterior, actualizaríamos esta vez a la versión 9, haríamos la batería de pruebas y test necesarios en entornos preproductivos, y si todo está correcto, pasaríamos a producción.
Como veis, el cambio de versión es muy asequible y permite dejar atrás uno de los puntos negros por los que se le solía criticar a Drupal como CMS, el coste de la actualización entre versiones.
¿Te animas a dar el paso? Ponte en contacto con nosotros si necesitas ayuda con ello.
Otros enlaces interesantes:
- Drupal core release cycle https://www.drupal.org/core/release-cycle-overview
- Drupal 9 Deprecation Status https://dev.acquia.com/drupal9/deprecation_status