Il passaggio dalla versione 3 alla versione 4 di Joomla ha segnato un confine che per certi versi non tutti hanno compreso fino in fondo. Molti utenti hanno sperimentato la delusione nello scoprire che molte estensioni che funzionavano per Joomla 3 non siano state aggiornate per la versione 4 e in seguito siano state abbandonate. Mi è capitato spesso negli ultimi due anni di leggere commenti tra il deluso e l’arrabbiato e altrettanto spesso qualcuno arrivare alla facile conclusione che questo sia un sintomo del fatto che Joomla sia un progetto destinato all’abbandono.
Io non posso prevedere il futuro ovviamente, ma posso dirvi qual’è stata la mia esperienza in prima persona su questo passaggio epocale e provare a spiegarvi alcune cose dal mio punto di vista di sviluppatore.
Partiamo dai fondamentali. Joomla (come Wordpress) funziona solo se installato in un server in cui è presente PHP e un sistema di database (tipicamente MySQL, ma non sempre). Se per esempio caricate il pacchetto di file di Joomla in un server configurato per il Python non funzionerà. Questo aspetto molti di noi lo danno per scontato, ma non lo è perché di fatto crea l’ecosistema in cui poter realizzare il nostro sito web. Joomla è egli stesso un ecosistema, realizzato e pensato appositamente per essere scalabile, cioè diventare quel che si vuole, in base alle esigenze di chiunque per mezzo degli strumenti nativi e delle estensioni. Le estensioni sono l’anello più centrale, devono quindi rispettare sia i paradigmi di Joomla, sia quelli di PHP+database.
Come tutti i linguaggi di programmazione anche PHP evolve, sia per poter migliorare le sue performance sia per diventare più sicuro e veloce. Se PHP evolve, anche l’ecosistema di Joomla DEVE evolvere seguendone i paradigmi. E se Joomla evolve per adattarsi ai suoi paradigmi anche le estensioni al suo interno devono farlo. Se mi avete seguito fino qui avrete forse compreso che l’adattamento delle estensioni avviene su due livelli: quello verso Joomla e quello verso PHP.
E cosa è successo nel passaggio J3/J4?
Proverò a fare tre macro esempi senza entrare troppo nel tecnico.
Namespaces
Tra le feature introdotte con Joomla 4, quella che singolarmente ha impattato maggiormente sullo sviluppo delle estensioni probabilmente è l’utilizzo dei namespace a tutti i livelli, dal core alle estensioni. I namespace non sono un concetto nuovo e hanno iniziato ad essere inseriti già con Joomla 3.3, ma la grossa differenza è che fino alla v 3.9 le estensioni potevano funzionare anche senza. Dopo no. I namespace sono uno strumento potentissimo che permettono allo sviluppatore di crearsi uno spazio proprio e popolarlo con delle entità a proprio uso e consumo evitando i conflitti con tutto il resto e richiamando entità esterne in altre estensioni. Avere un’architettura con i namespace rende molto più efficiente lo sviluppo... il problema nasce quando hai un’architettura che è stata creata senza i namespace e devi riscriverla con i namespace. Molto spesso significa dover riprogettare tutto.
Router
Su questo capitolo potrei scrivere un romanzo. Gli utenti considerano il router di Joomla sono nel suo aspetto più semplice: la costruzione degli url degli articoli. Ebbene, sappiate che il sistema di routing di un CMS è una delle cose più complesse che esistano e che influenza pesantemente lo sviluppo di un’estensione. Il core di Joomla non può sapere com’è fatta la struttura logica di un’estensione e quindi nella fase di sviluppo è necessario compilare il router (dell’estensione) in modo che istruisca il core. Joomla 4 ha definitivamente abbracciato un nuovo sistema di routing che esisteva già dalla versione 3.5. È molto più rigido rispetto al precedente in cui era ammesso un metodo “legacy” che permetteva anche alle vecchie versioni di Joomla di funzionare. Con il passaggio alla versione 4 questo metodo è stato abbandonato. Cambiare il sistema di routing di un’estensione già installata può comportare che le voci di menu che un utente ha creato con la versione precedente smettano di funzionare o generino errori (ecco perché nel pannello di gestione dei menu esiste la voce “Rigenera”), si tratta quindi di un processo molto delicato.
Chiamate Database
Ogni volta che richiamate, create, modificate o eliminate una cosa qualunque all’interno di Joomla (un articolo, un utente, un tag ecc) fate un’operazione basata su una chiamata al database. In gergo si chiamano query e Joomla le fa per voi. Cioè voi cliccate “Salva” e Joomla elabora una query per voi. Joomla 4 ha introdotto i prepared statements nelle query e ha modificato l'oggetto che si occupa di gestirle.
// Joomla 3.x
$db = JFactory::getDbo();
//Joomla 4.x
$db = Factory::getContainer()->get('DatabaseDriver');
Solo che il sistema che funziona per Joomla 4 non può essere usato su Joomla 3 e questo crea un ENORME problema perchè se qualcuno installa l'ultima release di un'estensione su Joomla 3 va a rompere tutte le chiamate al db. Questa è una delle ragioni per cui alcuni sviluppatori hanno creato una major release dell'estensione per Joomla 4 e mantenuto aggiornate ancora per un po' quelle per Jooma 3.
vedi ad esempio il caso akeeba.com - https://www.akeeba.com/compatibility.html#akeeba-backup-compatibility
Tutto questo, per farla breve, si è tradotto in una mole di lavoro straordinariamente alta per gli sviluppatori. Lavoro che si è dovuto aggiungere a quello che già si svolge quotidianamente (aggiornamenti regolari, supporto ai clienti, nuove feature ecc) e non con la prospettiva di aumentare le entrate, ma in realtà con la sola speranza di riuscire a mantenere quelle attuali (e con l'ansia crescente che i clienti si stancassero prima di aspettare...). Questo scenario ha portato probabilmente molti a farsi due conti in tasca e domandarsi se ne valesse la pena. E la scelta fatta da molti l'abbiamo avuta sotto i nostri occhi.
E Joomla 5 e Joomla 6?
Guardando al presente e al futuro più vicino, Joomla oggi è un CMS con delle caratteristiche molto migliori di quelle che avevamo prima. Il prezzo da pagare è stato alto, ma è stata fatta una scelta per certi versi epocale e ora la cosa saggia è guarda avanti. Joomla 5 è l'evoluzione del paradigma nato con Joomla 4 e con Joomla 6 diventerà definitivo (molti dei warning che oggi vengono visualizzati come DEPRECATE su J4/J5 con J6 diventeranno bug a tutti gli effetti). Nel frattempo vengono realizzate nuove feature e il core viene costantemente migliorato.
Quindi chi ha timore che Joomla sia un relitto abbandonato si ricreda: da un punto di vista tecnico in realtà Joomla è molto migliore oggi di quanto non lo fosse ieri. Ma servono sviluppatori che portino nuove estensioni, con il giusto approccio manageriale per mantenerle nel lungo termine. Serve una community correttamente informata, con un occhio attento e che esca dal concetto "tutto gratis, tutto subito, tutto perfetto" perchè quello al massimo è uno slogan, ma non la realtà. Serve tanto lavoro, tanta fatica, tanta dedizione.
Come sempre del resto.
Buon Joomla a tutti.