El largo pero seguro camino hacia Drupal 9

Por Nathaniel Catchpole

Cuando se lance Drupal 9, será la primera versión mayor  desde que se adoptaron las versiones semánticas y los ciclos de lanzamiento de versiones menores,  de seis meses.

El momento exacto en que Drupal 9 podría ser lanzado solo ha sido una cábala hasta el momento , y si bien es probable que aún esté lejos, cuanto antes hablemos de ello de la manera más constructiva , mejor preparado estará todo el mundo para cuando  esto ocurra.

¿Por qué hablar de Drupal 9? ¿ Acaso no estamos agregando funcionalidades a Drupal 8 cada seis meses?


Drupal 8 es la primera versión mayor  que depende de instancias significativas en PHP soportadas por terceros. Estas dependencias, como Symfony, Twig y Guzzle tienen sus propios ciclos de lanzamiento y soporte. A medida que pasa el tiempo, estos servicios de terceros van a retirar gradualmente el soporte de seguridad para las versiones de las que dependemos actualmente;  entonces nos enfrentaremos al escenario de unas versiones con las que quedaremos a cargo, ya sea para proporcionar cobertura de seguridad nosotros mismos, o para actualizarlas a las versiones más recientes de estos aliados de código abierto. Debido a que Drupal expone directamente las API de muchas de sus instancias, las principales actualizaciones de estas,  pueden requerir cambios de la API en el núcleo de Drupal y, a partir de allí, es necesario liberar una nueva versión del core.

Por ejemplo, Drupal 8 actualmente usa Symfony 3. Esta versión  llegará al final de su vida útil (EOL por sus siglas en inglés) en noviembre de 2021, punto en el que dejará de recibir parches de seguridad. Las versiones anteriores de Drupal 8 se basaban en Symfony 2, pero el core de Drupal 8  ya fue actualizado a Symfony 3, durante un ciclo de lanzamiento menor. A pesar de toda la planificación, esa actualización causó algunos problemas de compatibilidad con versiones anteriores. Si bien la actualización a Symfony 4 aún no se ha analizado por completo, idealmente no desearíamos tener que volver a hacerlo.

Suponiendo que Drupal 8 permanezca en Symfony 3, entonces sería ideal que quisieramos  lanzar Drupal 9 con la mayor cantidad de tiempo posible, antes de la llegada de la fecha de caducidad (EOL) de Symfony que está planificada para el 3 de noviembre de 2021. Por ejemplo, si queremos dar a los propietarios de los sitios en Drupal 8 una ventana de 12 meses para actualizar sus sitios a Drupal 9, idealmente querríamos lanzar Drupal 9 para la segunda mitad de 2020. De lo contrario, si nos vemos atrasados, en el peor de los casos, Drupal 8 necesitará en su haber un mantenedor de Symfony 3 y realizar manualmente las correcciones de seguridad de Symfony 4.

Esta necesidad de permanecer en versiones soportadas de instancias de terceros,  es realmente el principal impulsor para lanzar Drupal 9. El desarrollo y soporte de Drupal 8 por parte de la comunidad, es muy activo, con cientos de contribuciones a cada versión menor, y también sabemos que hay que llevar a cabo una  preparación muy grande para lograr que la transición a Drupal 9 sea lo más suave posible; hacerlo bien tomará el tiempo que tenga que tomar.

¿Qué pasará con el fin de la vida útil (EOL) de  Drupal 7?
 

Si bien la ruta de migración se acerca rápidamente a su máxima estabilidad, la actualización de Drupal 7 a Drupal 8 aún no es totalmente compatible. Se prevé que lo  más temprano posible para tener una ruta de migración oficialmente estable y compatible para migrar sitios de Drupal 7 a Drupal 8 estará en Drupal 8.6.0 en la segunda mitad de 2018, con algunos módulos contribuidos reforzando esto posteriormente.

Es un hecho que Drupal 7 todavía soporta a  al menos 900 mil sitios web en el mundo. Incluso si otros 200 ó 300,000 sitios migran a Drupal 8 para 2020, todavía tendremos más de 500,000 sitios que tienen su desarrollo en Drupal 7.

El core de Drupal ha adoptado una ruta de actualización continua y estable  que permite a los mantenedores de los módulos actualizar gradualmente su código sin sorpresas de compatibilidad con versiones anteriores. Debido a esta práctica, podemos permitir que los módulos sean compatibles tanto con Drupal 8 como también, desde ya, con Drupal 9. También permite hacer  lanzamiento de versiones mayores dentro de un calendario programado. Esto difiere significativamente de las versiones anteriores, donde los desarrolladores de módulos no podían prever cuándo se lanzaría una nueva versión mayor y tenían que lidiar con desarrollos que terminaban siendo incompatibles, aún antes de nacer .

Mientras que para algunos desarrolladores solía tener sentido 'saltarse' una versión principal de Drupal, a causa de lo anterior,  con Drupal 9, será muy fácil seguir el camino, y estar a tono con el ciclo de lanzamiento del core de Drupal y su versionamiento. Esto significa que empieza a verse el camino para los propietarios de  sitios en Drupal 7 en el sentido de tener certeza con respecto a la pregunta de si actualizan a Drupal 8 o esperan a Drupal 9, ya que tan pronto como estén en Drupal 8 o superior, las actualizaciones futuras no requerirán una reconstrucción y migración del sitio.

Por lo tanto, está sobre la mesa la necesidad de  discutir sobre el apoyo de la comunidad Drupal a D7,  hasta algún punto entre 2021 o 2022. Creo que tiene sentido comenzar esta discusión ahora y anunciar una fecha este año para darles a los usuarios la máxima cantidad de tiempo para planificar sus actualizaciones. Existía el rumor de que el soporte del core, terminaría el día en que salió la versión principal +2, pero como Drupal 8 a Drupal 9 será un cambio incremental, y las versiones de Drupal 9 en adelante podrán  programarse, parece que es hora de comenzar la cuenta regresiva de la terminación de la vida útil de Drupal 7, con la debida anticipación.

Si 2021 o 2022 parece demasiado pronto, recuerde que todavía hay 60,000 sitios en Drupal 6, más de siete años desde el lanzamiento de Drupal 7 y más de dos años después de la terminación oficial de la vida útil  de Drupal 6. También es probable que algo similar al programa de Soporte a Largo Término (LTS por sus siglas en inglés) de Drupal 6, ocurra para Drupal 7, independientemente de cuándo se retire el soporte de manera oficial. El programa de LTS actual,  requiere que los proveedores de este servicio liberen todos los parches de seguridad que se lanzan públicamente a la comunidad de forma gratuita, por lo que incluso después de la fecha de caducidad de Drupal 7, aún habrá opciones para la asistencia y soporte en parches de seguridad.

Entonces, ¿cómo se ve el cronograma?
 

Una línea de tiempo de lanzamiento puede terminar pareciéndose a la siguiente, los números de publicación son solo ejemplos y todo esto es solo para iniciar una conversación sobre estos temas, todavía estamos discutiendo cosas como los principales responsables y también aspectos fundamentales con el equipo de seguridad.



Propuesta: Drupal 7 y 8 serán  compatibles un año después de 9.0.0.

En resumen, Drupal 8 y Drupal 7 serían compatibles durante un año posteriormente al lanzamiento de Drupal 9.0.0, después de lo cual, se espera que ambos, Drupal 8 y Drupal 7, migren a Drupal 9.

Dado que será mucho más fácil pasar de Drupal 8 a Drupal 9 que de Drupal 7 a Drupal 9, y podríamos configurar la fecha de caducidad (EOL) con mucha antelación, podría ser que Drupal 7 termine recibiendo soporte por más tiempo que Drupal 8. .



Propuesta alternativa: el soporte de Drupal 8 finaliza un año después de 9.0.0, y el soporte de Drupal 7 finaliza dos años después de 9.0.0.

Y Drupal 10?
 

El calendario de lanzamientos de Symfony es, en principio, el siguiente:

Symfony 5, noviembre de 2019
Symfony 6, noviembre de 2021
Symfony 7, noviembre de 2023


Cada versión principal de Symfony tiene soporte oficial por un total de cinco años. Las versiones de Symfony con LTS, tienen soporte extendido por tres años cada una. (Otras instancias de Drupal podrían  tener ciclos de tres años de soporte, o ningún compromiso de tiempos, en particular).

Por lo tanto, para beneficiarse del soporte de seguridad de Symfony por el mayor tiempo posible, idealmente tendríamos que lanzar una versión mayor de Drupal dentro de los 6-12 meses posteriores a cada lanzamiento principal de Symfony, lo que nos daría unos cuatro años de soporte de seguridad oficialmente por parte de Symfony.

Las futuras versiones más allá de Drupal 9 podrían parecerse a las siguientes:


 

Al sincronizar con el cronograma de Symfony, esto significaría un ciclo de desarrollo de 2 años para cada versión mayor, potencialmente, con un soporte adicional de seguridad de 2 años, esto sin tener en cuenta el ciclo de PHP y los ciclos de otras instancias de terceros,  que pueden hacer que tengamos enfrente de nosotros cuatro años bastante desafiantes.

Conclusión
 

Para equilibrar todas estas prioridades que entran en conflicto entre sí, lo principal sobre lo que hay que  trabajar, es lograr que la transición de Drupal 8 a Drupal 9 sea tan fluida como humanamente sea posible, y este es un trabajo que se puede programar desde ahora. Hay que trabajar en que Drupal no quede usando código obsoleto de sus aliados de código abierto y  que la propia obsolescencia del núcleo de Drupal esté claramente documentada y que permita que los módulos debidamente actualizados de Drupal 8 funcionen sin modificaciones con Drupal 9.0.

Para discutir las fechas de lanzamiento y la fecha de caducidad, hay problemas para Drupal 7 y Drupal 8 y 9, más discusión en esos temas es el siguiente paso para establecer las fechas.

Escrito por:

 

Nathaniel Catchpole

Usuario de Drupal desde la versión 4.5, Nathaniel ha sido colaborador habitual del Core de Drupal desde 2006. Ha contribuído con más de 400 parches para Drupal 7, así como con un extenso trabajo de código. En septiembre de 2011, se convirtió en mantenedor de un “branch” de Drupal 8, y ha continuado como administrador del “framework” y coordinador del  lanzamiento de 8.0.0 el año pasado. Nathaniel es también coautor del libro “High Performance Drupal”


Gracias a Gábor Hojtsy por preparar las imágenes utilizadas en esta publicación.

Traducido al español por SeeD EM, Expertos Desarrolladores y Consultores  Drupal en Colombia. 

Desarrollo Drupal.