Aggiornare Drupal 8 a Drupal 9 è veramente facile come dicono? [prima parte]

By roberto, 9 October, 2020

Ricordo la prima volta che ebbi l'occasione di collaborare ad un aggiornamento da Drupal 7 a Drupal 8: era il 2017, il sito in questione era Contractor UK e l'agenzia che mi coinvolse era NDP Studio. Tanto per dare un'idea sulla complessità di quel lavoro, posso dire che il team era formato da 3 persone e il tutto fu completato e consegnato nell'arco di quasi tre mesi. I motivo principale di tale complessità è dovuto al fatto che le due versioni di Drupal hanno un'architettura completamente differente e quindi contenuti, strutture dati e template grafici vanno praticamente ricostruiti.

La Drupal community da tempo sta lavorando duramente sui processi di migrazione in modo da agevolare il passaggio a quel 61% di progetti che attualmente sono ancora su Drupal 7. Nonostante ciò, per migrare verso Drupal 8 o direttamente a D9 è ancora un investimento importante. Proprio per questo motivo spesso chi sta per affrontare il grande passo mi chiede

... cosa devo aspettarmi per passare da Drupal 8 a Drupal 9?

Francamente non lo so! Non avendolo ancora mai fatto, posso solamente riportare quello che leggo e sento dire da altri e cioè che l'aggiornamento a Drupal 9 sarà semplice. Ecco perché a Settembre di quest'anno (circa tre mesi dal lancio di Drupal 9) ho deciso di vivere sulla mia pelle l'aggiornamento del mio sito personale da Drupal 8 a Drupal 9 diventando quindi il banco di prova per raccontarvi gioie e dolori dell'intero processo.

La community è il carburante per un progetto Open Source

In questo primo articolo la mia intenzione è di dar voce all'enorme lavoro dietro le quinte che tutta la comunità di Drupal ha fatto e sta facendo tutt'ora per agevolare il processo di aggiornamento. Vedremo come nell'arco di quattro mesi il numero di incompatibilità a Drupal 9 del mio sito si è quasi azzerato.

Tutto ebbe inizio circa un anno fa durante il DrupalCon ad Amsterdam, quando l'intervento di Dries solleticò la mia curiosità nel verificare il livello di compatibilità a Drupal 9 del mio sito web. Il risultato allora non fu per nulla entusiasmante: 216 errori e 100 warnings.

Upgrade status Novembre 2019
Upgrade status a Novembre 2019 (https://www.drupal.org/project/upgrade_status)

Dopo aver aggiornato all'ultima versione tutti i moduli segnalati qualcosa migliorò passando a 166 errori e 115 warnings, ma non abbastanza per decidere di saltare in groppa a Drupal 9. Quello che feci allora fu di segnalare alcune di queste incompatibilità tra le issues dei vari moduli.

Upgrade status Novembre 2019 after modules updates.
Upgrade status dopo aver aggiornato all'ultima versione disponibile il 99% dei moduli.

Per semplicità diciamo che gli errori rappresentano frammenti di codice sorgente non più utilizzabili in Drupal 9, mentre i warnings rappresentano piccole modifiche di configurazione da apportare al modulo.

Da Novembre 2019 a Marzo 2020 la community si dimostrò "effervescente" nel revisionare i principali moduli di contribuzione: appena veniva segnalata una incompatibilità, nel giro di qualche giorno usciva la patch necessaria. In effetti, con l'avvicinarsi della data prevista per il rilascio, le cose migliorarono decisamente: 1 errore e 1 warning.

Upgrade status March 2020
Upgrade status a Marzo 2020

Ecco il segnale che stavo aspettando, l'aggiornamento si può fare.

Come mi devo preparare all'aggiornamento del mio sito?

Vediamo quali sono i passi da seguire per portare a casa il risultato.

1. Assicurarti che il tuo ambiente sia compatibile

La prima cosa da fare è verificare che le versioni dei componenti software nel proprio ambiente siano almeno quelle indicate dai requisiti minimi. Nel mio caso adattare le versioni dello stack applicativo non è stato un problema utilizzando Wodby nel mio ambiente Live e docker4drupal per il mio ambiente di sviluppo locale: mi è bastato aggiornare lo stack di Wodby in produzione e la configurazione docker4drupal locale alla versione 5.4.20, per avere i requisiti di compatibilità a posto.

2. Aggiorna tutti i moduli di contribuzione

Per assicurare una piena compatibilità con D9 dei moduli di contribuzione installati, bisogna assolutamente aggiornarli all'ultima versione disponibile. Per capire se un modulo è compatibile o meno si può controllare le informazioni presenti nella scheda del modulo stesso; ad esempio tra le info del modulo token si può leggere tra i requisiti "Requires Drupal: ^8.8 || ^9""Drupal 9 compatibility" 

Token module info.

Per velocizzare questo processo di verifica si può installare il modulo Upgrade Status che, eseguendo una scansione di tutti i moduli, fornisce un report dettagliato della vostra situazione come vi ho mostrato negli screenshot precedenti. Segnalo che proprio due giorni fa è stata rilasciata la release 3.0 del modulo.

Upgrade status release 3.0.0

3. Aggiorna il tuo Drupal 8

Proprio quando è uscito Drupal 9 la versione 8.7 terminava il suo periodo di supporto; questo comporta che alcuni problemi legati al processo di upgrade a partire da versioni precedenti alla 8.8 non sono più stati sistemati. Ecco perché si consiglia di aggiornare il proprio progetto Drupal 8 all'ultima versione disponibile (in questo momento è la 8.9.7).

4. Rimuovere API deprecate dai moduli custom

Se il tuo progetto utilizza moduli realizzati ad-hoc per te, devi essere sicuro che non contengano API Drupal deprecate. Un tool utile per fare questo tipo di ispezione è il modulo Upgrade Rector: ti aiuta a individuare codice deprecato e ti propone anche le patch da applicare.

5. Aggiorna il core a Drupal 9

Bene siamo arrivati al punto tanto atteso: aggiorniamo il core e saltiamo su Drupal 9!

Nel prossimo post

Nel prossimo post metterò in pratica i passi descritti qui sopra e vi racconterò come è andata.