Definire in modo sintetico gli autori di un software, soprattutto di un sito web, oggi non è affatto semplice. Lo sviluppo del sito web dell'Istituto si basa esclusivamente su software open source, spesso integrato automaticamente da strumenti che generano un intricato sistema di dipendenze. Questo rende complesso attribuire il giusto riconoscimento a tutti i contributori. Sebbene esistano software in grado di compilare un elenco alfabetico di autori diretti e indiretti, preferisco raccontare le vicende per come le ho vissute, piuttosto che redigere una lista sterile che non evidenzia i contributi più significativi. Molti contributi nascono dal confronto con altre persone: idee, suggerimenti e discussioni che, pur essendo intangibili, hanno un valore enorme nello sviluppo di un progetto. Per questo motivo ho deciso di scrivere un articolo per raccontare la nascita di Ouitoulía, il suo sviluppo e gli strumenti utilizzati. Ouitoulía è stato sviluppato interamente con strumenti e sistemi operativi open source, citare tutti gli autori indiretti significherebbe risalire fino alla nascita di GNU/Linux. Sarebbe un viaggio troppo lungo, al punto da trasformarsi in un articolo sulla storia dell'informatica. Meglio partire dal 2019, quando mi venne l'idea: "Quasi quasi faccio una distribuzione Drupal, che ci vuole...". Da allora sono trascorsi sei anni, mi sono sposato e sono diventato papà.
L'ispirazione e la scoperta di Bootstrap Italia
Settembre 2019. Durante l'estate di quell'anno lessi degli articoli e una serie di discussioni, su forum dedicati, che parlavano di un nuovo tema grafico sviluppato dal Governo Italiano, basato su Bootstrap 4 e chiamato bootstrap-italia. L'argomento mi aveva subito incuriosito. Approfondendo, ho scoperto un'intera organizzazione dedicata, un quadro normativo specifico e una quantità notevole di documentazione tecnica.
Ricordo di essere rimasto piacevolmente sorpreso dalla cura dei dettagli e dalla professionalità con cui erano pubblicate le informazioni, un aspetto in cui, diciamocelo, le fonti governative non avevano sempre brillato.
Questo approccio innovativo alla condivisione e alla comunicazione mi ha entusiasmato enormemente. Scoprire che il governo rilasciasse software open source di qualità era per me una novità assoluta - anche se in realtà questo processo era già in corso da alcuni anni. Fui particolarmente entusiasta quando appresi che era stato scelto Bootstrap come strumento principale di sviluppo grafico; proprio quel framework che utilizzavo da anni e che conoscevo molto bene. Infatti, la seconda versione dell'interfaccia grafica del sito web del mio istituto l'avevo sviluppata con Bootstrap 2 a fine 2013 e, con molta fatica, nel 2015 avevo costruito un tema custom ricompilando Bootstrap 3.
Sapere che a livello governativo erano stati realizzati componenti accessibili con Bootstrap 4, già pronti all'uso e per giunta provenienti da una fonte istituzionale certificata, mi ha reso entusiasta. A quel punto decisi che era il momento giusto per aggiornare la mia vecchia installazione Drupal 7 con Bootstrap 3 a un moderno e fiammante Drupal 8 con Bootstrap 4 come interfaccia grafica.
Quasi quasi faccio una distribuzione Drupal, che ci vuole...
La ricerca di un tema Drupal compatibile
Ottobre 2019. Dedicai un po' di tempo a documentarmi su come assemblare una distribuzione Drupal. All'epoca, una distribuzione Drupal – ora sostituita dalle "Ricette" – serviva a costruire CMS personalizzati in modo rapido, aggregando i moduli necessari e un tema predefinito. Sembrava un'operazione piuttosto semplice: individuare ciò di cui avevo bisogno, assemblarlo, configurarlo e avviare il tutto. In teoria, un processo lineare. In pratica, le difficoltà emergono quando manca qualche elemento fondamentale, costringendoti a svilupparlo da zero. E il problema più grande fu proprio il tema grafico, che mancava e sarebbe stato il pezzo più complesso da realizzare.
Fiducioso nella community open source italiana, cercai nei repository pubblici, ma senza successo. Allora pensai che avrei potuto richiedere il tema grafico tramite il meccanismo del "riuso", considerando che diverse regioni, comuni ed enti utilizzavano già un tema Drupal 8 basato su Bootstrap Italia.
Per chi non lo sapesse, il "riuso" di un software si basa su una serie di norme che stabiliscono che, se un software è stato sviluppato con fondi pubblici, il pubblico non dovrebbe pagare una seconda volta per realizzarlo da zero. Questo permette agli enti di richiedere e riutilizzare software già sviluppati da altri enti.
Memore del Drupal Day 2017 a Roma, dove un'azienda partecipata di un comune lagunare presentò un bellissimo tema grafico per Drupal 8 conforme alle linee guida, ero convinto di aver trovato la soluzione giusta. Purtroppo, si rivelò un vicolo cieco.
Nonostante i miei sforzi nel cercare, chiedere e bussare a diverse porte, non esisteva un tema Drupal che rispettasse le linee guida e che fosse liberamente utilizzabile. Lentamente, e con una certa apprensione, prendeva forma un'idea sempre più chiara: se volevo un tema Drupal 8 conforme alle linee guida con Bootstrap Italia, dovevo costruirlo da solo o, almeno, unirmi a un team già attivo su questo fronte. Purtroppo, a livello pubblico – escludendo aziende private e partecipate – tutti erano nella mia stessa situazione: cercavano la stessa soluzione, ma nessuno aveva ancora iniziato a realizzarla.
Approfondisci su https://forum.italia.it/t/drupal-template/429
A quel punto, non avevo alternative: "Devo sviluppare un nuovo tema...". L'idea mi intimoriva, ma non mi spaventava del tutto. Usavo Drupal da quasi dieci anni, Drupal 8 da qualche anno, e conoscevo Bootstrap fin dalla versione 2. Nella mia attività da libero professionista avevo già sviluppato diversi temi, quindi, pur con qualche timore, ero pronto a mettermi al lavoro. Così iniziai a studiare e pianificare lo sviluppo del tema.
Devo sviluppare un nuovo tema...
Il confronto tra WordPress e Drupal: un bivio tecnologico
Novembre 2019. A metà novembre 2019 furono pubblicati i primi UI-kit dedicati alle scuole, disponibili in due formati principali: pagine HTML statiche e un tema per il CMS WordPress. Inizialmente non compresi la scelta del team governativo di sviluppare un tema per WordPress, ma decisi di valutarla con mente aperta, effettuando un confronto dettagliato.
Avevo usato WordPress fino al 2010/2011, prima di passare definitivamente a Drupal. Lo avevo abbandonato perché lo trovavo limitato e poco strutturato: spesso per far funzionare le cose bisognava ricorrere a soluzioni forzate ("a martellate" nel gergo). Tuttavia, nel 2019 pensai che fosse stato migliorato, quindi decisi di dargli un'opportunità.
Dopo un'analisi approfondita, mi resi conto che non era cambiato molto: il codice risultava disorganizzato, scritto in maniera procedurale e privo di una struttura chiara, simile a quello che ci si aspetterebbe da un codice scritto nei primi anni 2000. In un file di codice, trovai persino la frase "Il codice è poesia", una scelta quantomeno discutibile per un codice procedurale.
Per approfondire: https://forum.italia.it/t/.../4100/36
Considerando le best practices e le tecnologie disponibili nel 2019, l'uso di WordPress risultava ormai anacronistico e difficilmente giustificabile. Drupal, al contrario, si confermava anni luce avanti, offrendo una gestione più intuitiva tramite interfaccia grafica, con funzionalità avanzate per l'implementazione dei campi e la gestione del backend, aspetti completamente assenti in WordPress. Questo confronto rafforzò ulteriormente la mia decisione di proseguire sulla strada di Drupal.
Avviai quindi il primo progetto open source, il tema per Drupal Bootstrap Italia; ad oggi, di grande successo, utilizzato da oltre 2500 amministrazioni pubbliche.
Drupal mi da un grande vantaggio tecnologico, è sicuramente la strada giusta...
La svolta tecnologica: la scoperta di UI Patterns
Sfruttando l'esperienza maturata con la libera professione, alla fine del 2019 avevo già delineato le caratteristiche principali del tema grafico. Decisi di strutturare tutto in componenti Twig, basandomi su soluzioni software che avevo già sperimentato in altri progetti. Adottare un'architettura a componenti era la scelta più sensata per garantire un tema solido, scalabile, longevo e conforme alle best practices, come il riutilizzo del codice, la modularità e la manutenibilità.
Questa decisione si rivelò vincente: negli anni successivi il paradigma dei web component esplose, diventando uno standard consolidato nel mondo dello sviluppo front-end. Non posso dire di aver previsto il futuro, ma nel 2019 questa era ancora una scelta innovativa e sperimentale. Tuttavia, era chiaro che l'intero settore stava andando in questa direzione, e io non volevo restare indietro.
A questo punto, mancava ancora un tassello fondamentale per completare le funzionalità del tema: l'interfaccia grafica di amministrazione. I componenti Twig sono potenti, riutilizzabili e facilmente richiamabili, permettendo di impostare il rendering di un singolo componente tramite opzioni dedicate. Inoltre, grazie alla cache, preferibilmente in RAM con Redis, è possibile servire pagine statiche direttamente dalla memoria RAM del server, garantendo velocità e scalabilità.
L'adozione del paradigma a componenti si è rivelata così efficace che, ad agosto 2024, Drupal lo ha ufficialmente integrato nel core come funzionalità stabile con il rilascio di Drupal 11.
L'uso esclusivo dei componenti Twig presentava ancora una limitazione: per integrarli nei template era necessario scrivere piccole porzioni di codice, un aspetto che, seppur semplice per uno sviluppatore, rappresentava un ostacolo per i cosiddetti "builder". Questi sviluppatori Drupal lavorano esclusivamente con l'interfaccia grafica, senza mai scrivere codice o modificare file, e per loro questa dipendenza dal codice era un limite significativo.
Ero quindi alla ricerca di una soluzione per mappare le configurazioni dei componenti nell'interfaccia grafica di backend. Soluzione che arrivò grazie a un amico di vecchia data: Michele Rovera, conosciuto ai tempi in cui facevo parte dell'associazione OPENSIPA e nei vari Drupal Day. Mi chiamò e, in sintesi, mi disse: "Bello il tema che stai facendo. Prova a dare un'occhiata al modulo UI Patterns che stiamo usando su Open Europa!"
Fu una vera rivelazione. Il team di sviluppo della Comunità Europea aveva realizzato esattamente il modulo di cui avevo bisogno: open source, pronto all'uso e, soprattutto, disponibile senza necessità di richieste di riuso o autorizzazioni particolari. Era la conferma definitiva che la direzione che avevo intrapreso era quella giusta!
Sono sulla strada giusta!
La nascita dei componenti: studio, adattamento e resilienza
Primo trimestre 2020. In un primo momento valutai l'opportunità di adottare la libreria di componenti sviluppata da Open Europa come base per il tema. Questa scelta sembrava sensata, ben presto mi resi conto che, nonostante le somiglianze, ogni componente richiedeva interventi mirati per essere pienamente compatibile. Le differenze tra le due librerie, soprattutto nei dettagli di implementazione e nello stile dei componenti, erano tali da rendere poco efficiente l’adozione diretta. Questo mi spinse a cercare una soluzione più su misura, adatta a garantire coerenza e piena aderenza alle linee guida grafiche italiane.
Alla fine, l'unica strada percorribile era quella di rivedere e definire con precisione ogni singolo componente. Così mi misi a studiare su come integrare al meglio i componenti Twig con l’interfaccia di amministrazione di Drupal, cercando una soluzione che fosse il più possibile modulare, riutilizzabile e in particolar modo adatta ai "builder". Questo fu un lavoro concettuale che mi permise di definire lo "scheletro" di ogni componente, le variabili, le modalità di visualizzazione e la relazione con le funzionalità amministrative offerte dal CMS. In questo modo riuscivo a garantire un'esperienza coerente sia lato utente che lato amministratore, rendendo il tutto più solido e accessibile.
Questo fu anche il periodo della pandemia da COVID, che ricordo come estremamente faticoso, denso e interminabile. All'improvviso ci ritrovammo tutti a dover fare tutto da casa, senza sapere bene come affrontare la situazione. Dovemmo inventarci modalità per tenere lezioni online, avviare piattaforme di e-learning, formare i colleghi meno esperti e offrire supporto alle famiglie degli alunni meno abbienti. È stato un periodo estenuante.
Che faticata!
L'espansione del progetto
Maggio 2020. In questo periodo inizia a prendere forma il primo vero team di sviluppo del tema. Dopo la pubblicazione di un post sul forum di Developers Italia (link), che attirò l'attenzione di altri professionisti interessati al progetto. Fu così che si unirono al team Crescenzo Vellecra e Maurizio Cavalletti, due sviluppatori di grande competenza e passione, con i quali si instaurò fin da subito una proficua collaborazione.
Durante l'estate del 2020, insieme affrontammo le sfide tecniche e concettuali necessarie per costruire una prima versione solida del tema, la versione 0.x. Lavorammo a stretto contatto per definire i componenti principali, strutturare i pattern ricorrenti e garantire coerenza tra grafica e funzionalità. Questo periodo segnò una tappa fondamentale nello sviluppo del progetto, sia dal punto di vista tecnico che umano.
Tra la fine del 2020 e tutto il 2021, il tema Drupal crebbe notevolmente, raggiungendo e superando il traguardo del migliaio di installazioni attive. Fu adottato non solo dalla Pubblica Amministrazione centrale (come nel caso di dati.gov.it), ma anche da regioni (ad esempio regione.sicilia.it), province, comuni, università e perfino da aziende private, attratte dalle possibilità di personalizzazione offerte dal tema.
Woow, funziona benissimo, è un successo!
L'integrazione del tema scuole
Fine 2020 e 2021. Questa fase di relativa "calma" sul fronte dello sviluppo attivo rappresentò per me un momento di riflessione e riorganizzazione. Approfittando del tempo libero, iniziai a valutare concretamente come integrare la variante del tema pensata per le scuole, con l'obiettivo di sviluppare il sito della mia scuola e offrire una soluzione accessibile, aderente alle linee guida, ma allo stesso tempo semplice da gestire anche per chi non ha competenze tecniche.
In un primo momento, mi sembrava tutto piuttosto lineare: con Drupal l'architettura dei contenuti si realizza facilmente tramite interfaccia grafica, quindi sul fronte backend ero tranquillo. Per il frontend, dopo due anni di lavoro sul tema Drupal, pensavo che bastasse recuperare dal repository la variante "scuole v1.0.0" di Bootstrap Italia, personalizzare alcune variabili (colori, dimensioni, spaziature) e il gioco era fatto. Sbagliato!
Scoprii con grande disappunto che la variante scuole non seguiva alcuna best practice moderna: era costruita usando la tecnica dell'override CSS, ovvero caricando prima l'intero CSS di Bootstrap Italia e poi un ulteriore file di stile che sovrascriveva tutte le regole (circa 12.000 righe di override). Una strategia completamente inefficiente, obsoleta e ormai considerata una cattiva pratica.
Dopo un paio di mesi di insuccessi, e un po' amareggiato, aprii una segnalazione nel repository chiedendo almeno i sorgenti SCSS, in modo da provare a sistemare la situazione in autonomia. Alcune risposte, per vie informali (chat Slack), furono ancora più scoraggianti: "Abbiamo perso i sorgenti SCSS e JS, piano piano li stiamo rifacendo ma ci vuole tempo, pazienta un po'." (quel momento, ovviamente, non arrivò mai); "Hai comunque il foglio di stile, quello è un sorgente, mica non si vede il codice..." (😞).
Cercai di adattarmi: pensai di includere tutto il CSS e JS così com'erano, accettando un compromesso in termini di performance e qualità del codice. Sbagliato di nuovo! I componenti del tema scuole, pur essendo visivamente simili a quelli di Bootstrap Italia, erano completamente diversi nella struttura e nell'implementazione del codice. Questo li rendeva non solo non riusabili, ma anche incompatibili con l’architettura a componenti che avevo pazientemente costruito. Mi resi conto che, ancora una volta, avrei dovuto ricominciare da capo, ma almeno questa volta con piena consapevolezza del contesto, dei limiti tecnici e delle sfide da affrontare.
Decisi quindi di prendermi una pausa. Era appena terminato giugno 2021, l’estate era alle porte e a breve mi sarei sposato: era il momento perfetto per staccare la spina. Avevo bisogno di ricaricare le energie, ma anche di prendere le distanze da una situazione che, sotto il profilo tecnico, mi aveva profondamente deluso. La pausa durò circa dieci mesi. In quel periodo, ogni volta che pensavo di rimettere mano a quella brutta implementazione del tema scuole, mi passava la voglia. E non perché fosse esteticamente brutto – anzi, dal punto di vista visivo era anche ben fatto – ma perché la tecnica di sviluppo utilizzata era tutto fuorché sostenibile, e lontana anni luce dalle best practice che avevo scelto di adottare.
Forse sono troppo pignolo? Sto sbagliando io?
La sfida della versione 2
Nel primo trimestre del 2022, nel poco tempo libero, decisi di cimentarmi nel reverse engineering del file CSS del tema scuole, che ormai contava circa 20.000 righe di codice e di cui si erano persi i sorgenti originali. L’obiettivo era recuperare le variabili e la struttura CSS, per ricostruire il lavoro in modo ordinato e moderno. Dopo diversi tentativi, analisi e test, i risultati si rivelarono deludenti, troppo frammentari e poco utili. Decisi quindi di mettere da parte l’idea, consapevole che sarebbe servito un approccio diverso, magari con strumenti o collaborazioni nuove.
A partire da maggio 2022, sempre nel poco tempo libero, iniziai a lavorare alla versione 2 del tema Drupal, basandomi sulla nuova versione di Bootstrap Italia (v2). Riuscii a intercettare fin da subito il branch di sviluppo della libreria, partendo quindi in parallelo con la sua evoluzione. Questo mi permise di costruire un tema aggiornato e allineato fin dalle prime fasi di rilascio. Lo sviluppo della versione 2 del tema proseguì per diversi mesi e si concluse a gennaio 2023. Anche questa vollta Crescenzo, Maurizio e Andrea (che si è unito in corsa) mi hanno dato un supporto prezioso nei test e nelle traduzioni.
Nel primo trimestre del 2023, tornai nuovamente sul reverse engineering, ma questa volta con la versione 2 sia di Bootstrap Italia che del tema scuole che a giugno 2022 era stata rilasciata la versione 2 del tema scuole, e in uno dei branch erano comparsi dei sorgenti (anche se obsoleti e relativi alla vecchia versione 1 erano un aiuto). Anche questa volta i tentativi non portarono a una soluzione definitiva, ma i risultati furono meno deludenti rispetto alla volta precedente. Questa parziale riuscita mi rincuorò: forse, con un po’ di lavoro in più, avrei potuto trovare davvero un modo efficace per portare a termine l’integrazione.
Ciao Lucia 🎀💓
Le basi di Ouitoulía: decisioni e strategie di partenza
Il mio istituto, grazie alla lungimiranza del Dirigente Scolastico (Giuseppe Eburnea), della vicaria (Daniela Naso) e della DSGA (Caterina Marcianò), a maggio 2023, mi affida l’incarico di sviluppare il nuovo sito scolastico secondo il modello scuole, con annessa la migrazione dal vecchio al nuovo sistema, incluso albo online e amministrazione trasparente. Mi sono messo subito a ripassare la normativa tecnica di riferimento, che già conoscevo ma che ho voluto approfondire ancora una volta per non tralasciare nessun dettaglio. Proprio in questa fase si è ripresentata la domanda: conviene davvero affidarsi a un software già pronto, adottando il tema WordPress ufficiale, oppure continuare sulla strada tracciata con Drupal, investendo più tempo e risorse in cambio di una piattaforma più flessibile e potente? Ho iniziato quindi a raccogliere esperienze, confrontarmi con colleghi di altre scuole e osservare come si stavano muovendo gli altri istituti. La questione della migrazione dei dati, della gestione degli utenti e della possibilità di personalizzazione giocavano un ruolo decisivo in questa valutazione, perché il sito non doveva solo rispondere ai criteri di legge, ma anche essere realmente utile e sostenibile nel tempo per chi lo avrebbe amministrato dopo di me.
Per verificare la decisione presa nel 2019 in maniera consapevole e con metodo, ho installato in locale il modello scolastico realizzato in WordPress e l’ho valutato attentamente per un’ultima volta. Certamente, l’uso di WordPress offriva diversi vantaggi immediati: implementazione rapida, conformità quasi certa, pochissimo lavoro da parte mia (che non guasta mai) e rischio di fallimento praticamente azzerato. Tuttavia, non mancavano le criticità: il tema grafico era basato su bootstrap-italia 1.6 (bootstrap 4), che pur rinominato in 2.0, restava comunque bootstrap 4, mentre ormai si era già diffuso bootstrap-italia 2, basato su bootstrap 5. Inoltre, la gestione dei contenuti mi è sembrata farraginosa, la gestione dei tipi di contenuto era molto arretrata rispetto a Drupal, così come permessi, ruoli e tassonomie risultavano limitati e limitanti. Non mi piaceva poi il fatto che a livello software configurazioni e dati fossero mescolati, e mancava uno strumento affidabile per la migrazione dei contenuti. Tutte queste carenze, unite ad altri dettagli che ora non ricordo, mi hanno fatto riflettere sulla reale longevità, manutenibilità e usabilità del progetto.
Spero che nessuno degli estimatori di Wordpress si offenda per questa valutazione, ma adottare un software con queste criticità mi ha posto seri dubbi, soprattutto sulla possibilità di gestire in modo efficace l’architettura dei contenuti di una scuola. Così, restando comunque nel perimetro delle linee guida, ho preso una decisione importante: riscrivere da zero, o quasi, tutta l'implementazione del modello, questa volta usando Drupal. Da questa scelta sono derivate alcune conseguenze rilevanti: il nuovo software sarebbe stato open source, comportando per me una grande responsabilità e molto lavoro in più, che però si sarebbe ampiamente ripagato negli anni successivi grazie a una gestione decisamente più semplice e sostenibile.
Il sito web delle scuole italiane
Documento che illustra la descrizione del design di un modello di siti per le scuole italiane e un riferimento a tutta la documentazione di progetto. Il sito web delle scuole italiane
Le attività per adottare il modello
La procedura e le risorse per realizzare un sito efficace per l'intera comunità scolastica.
La nascita del nome e il significato
Come primo passo, dovevo organizzare i repository pubblici scegliendo una piattaforma di code hosting adeguata. Optai per GitHub, che conoscevo bene soprattutto per quanto riguarda l'integrazione delle automazioni, le cosiddette "action" nel suo gergo. Oltre all’organizzazione tecnica, dovevo affrontare un’altra questione cruciale: dare un nome al progetto e ai vari componenti, un’operazione tutt’altro che banale.
Vedi il codice su: github.com/ouitoulia
Anche la scelta dei nomi presentava alcune difficoltà: GitHub accetta nomi macchina separati solo da -, mentre Drupal utilizza _. Per evitare problemi, decisi di usare nomi composti da una sola parola. Tuttavia, questo approccio portava con sé un altro rischio: il possibile conflitto con nomi di moduli già presenti su drupal.org. Per superare questo ostacolo, scelsi di usare una lingua morta per generare nomi univoci: il greco antico. Questa decisione fu possibile anche grazie al supporto fondamentale di mia moglie Francesca, che conosce bene la lingua e che non smetterò mai di ringraziare per il suo aiuto costante.
In realtà, in un primo momento, presi in considerazione il Grecanico (o γλώσσα γραίκα της Καλαβρία), il dialetto della mia terra d'origine in Calabria. Avrei voluto usarlo per dare un tocco ancora più personale, ma purtroppo non lo conosco. Da questa riflessione nacque il nome del progetto: Ouitoulía, che si pronuncia (v)itulía o itulía. La "v" è solo un soffio d'aria, poiché in quella lingua la lettera "v" non esiste. Questo termine veniva utilizzato nell'antichità per indicare la provincia di Reggio Calabria. Anche mio nonno, originario dell'area grecanica, usava questo nome, però si riferiva alla sola Piana di Gioia Tauro.
Un'altra montagna da scalare
Dalla progettazione dei contenuti al tema scolastico definitivo
Prima di iniziare a scrivere codice, vista la complessità del progetto e l'elevato numero di tipi di contenuto e campi previsti, realizzai un diagramma delle relazioni tra le entità (link al diagramma). Questo passaggio mi permise di razionalizzare e "normalizzare" i content type, ottimizzando il riuso dei campi e rendendo più efficiente la struttura del sito. Inoltre, mi aiutò a valutare in modo accurato quali moduli custom avrei dovuto utilizzare. Fortunatamente, riuscii a strutturare tutto sfruttando esclusivamente le funzionalità core di Drupal e un numero molto contenuto di moduli personalizzati. In questa fase l'aiuto di Maurizio fu preziosissimo, mi aiutò a revisionare e ad ottimizzare le relazioni tra i tipi di contenuto.
Dopo aver completato la progettazione, iniziai la costruzione dei primi content type. Con Drupal fu un'operazione semplice e veloce: tutto fu gestito tramite interfaccia grafica di backend, senza scrivere una sola riga di codice, solo configurazioni. Questo approccio, quando possibile, aumenta notevolmente la sicurezza e la robustezza del progetto, poiché aderisce ai principi di security by default, privacy by default e solid by design.
Luglio 2023. Decisi di rimettermi ancora una volta al lavoro sul reverse engineering, con un bagaglio più ricco: l’esperienza di due tentativi falliti, qualche file SCSS non allineato ma utile, e la disponibilità della versione 2 di Bootstrap Italia.
Dopo dieci giorni intensi: SUCCESSO!
Riuscii finalmente a completare il reverse engineering di circa 20.000 righe di CSS. Non solo individuai le variabili originali, ma ottimizzai il codice riutilizzando e semplificando le regole grazie alle utility introdotte in Bootstrap 5. Riuscii a ricompilare l’intera libreria Bootstrap Italia con lo stile delle scuole, perfettamente integrata con i componenti HTML originali, escludendo dalla build tutto ciò che non serviva. Questo approccio migliorò notevolmente le performance: niente più fogli di stile da 20.000 + 20.000 righe, ma un solo file CSS, essenziale e su misura, contenente solo ciò che davvero era necessario.
Wow! Veloce e preciso!!!
Architettura modulare, organizzazione e sviluppo del progetto
Tra l'ultimo trimestre del 2023 e l'inizio del 2024 mi sono concentrato sul consolidamento dell'architettura del progetto. In quel periodo, il paradigma dei profili Drupal stava gradualmente lasciando spazio alle nuove "recipes", concepite per facilitare la costruzione di CMS e funzionalità modulari riutilizzabili. Tuttavia, poiché queste non erano ancora del tutto mature, decisi di strutturare il progetto suddividendo le funzionalità in moduli indipendenti. In questo modo, una futura migrazione verso il nuovo paradigma delle "ricette" sarebbe risultata più semplice e lineare, potendo contare su una struttura già modulare e ben organizzata.
Diagraphè (Progetto): modulo principale che gestisce l'installazione, la configurazione e l'aggiornamento di Ouitoulía. Include anche la gestione della documentazione e delle segnalazioni (issue).
Thémethla (Fondamenta): costruisce i tipi di contenuto e le loro relazioni. Il modulo sfrutta ed estende i content type (funzionalità nativa del core Drupal), e questo rappresenta un enorme vantaggio rispetto ad altri CMS che richiedono moduli aggiuntivi o plugin esterni. Essere parte del core garantisce stabilità, coerenza, pieno supporto da parte della community e una profonda integrazione con il sistema di permessi, le viste, le tassonomie e gli strumenti di esportazione e configurazione. Questo rende la modellazione dei contenuti più sicura, sostenibile e facilmente mantenibile nel tempo.
Pròsopon (Persona): gestisce i profili utente.
Exésti (È consentito): definisce i permessi in modo granulare, stabilendo cosa ogni utente può fare sul sito. Il modulo sfrutta le funzionalità di gestione dei permessi integrate nel core di Drupal, che si distinguono per robustezza e flessibilità. Questo sistema consente di assegnare diritti specifici a ruoli diversi, garantendo un controllo dettagliato su ogni funzionalità. Tale approccio assicura elevati livelli di sicurezza e permette configurazioni personalizzate, ideali anche per contesti complessi come scuole o enti pubblici.
Bibliothéke (Biblioteca): consente il riutilizzo di media (immagini, audio, video, ecc.) in tutto il sito. Il modulo sfrutta il modulo core Media di Drupal, che fornisce una gestione avanzata e centralizzata dei file multimediali, permettendone l'organizzazione, il riutilizzo e l'integrazione in vari tipi di contenuto.
Lexikà (Vocabolari): gestisce le tassonomie e i vocabolari. Il modulo sfrutta le funzionalità core di Drupal dedicate alla gestione delle tassonomie, che permettono di strutturare e classificare i contenuti in modo flessibile e gerarchico. Questo approccio favorisce la coerenza semantica, la ricercabilità dei dati e la riusabilità delle categorie nei diversi tipi di contenuto.
Anazētēsis (Ricerca): motore di ricerca interno del sito. Il modulo sfrutta le funzionalità offerte da Search API, un modulo aggiuntivo di Drupal che consente ricerche full text avanzate, l'uso di faccette (facets) per filtrare i risultati e l'integrazione con motori di ricerca esterni. Questa configurazione rende la ricerca più potente, personalizzabile e adatta anche a progetti di grandi dimensioni con requisiti di accessibilità e prestazioni elevati.
Prósis (Vista, Prospetto): costruisce i dati destinati al front-end, come liste, aggregazioni, risultati di ricerca e dati strutturati. Il modulo sfrutta le funzionalità offerte dal modulo core Views di Drupal, che consente di creare visualizzazioni personalizzate di contenuti in modo grafico e modulare. L’integrazione con Views permette un alto grado di flessibilità nella presentazione dei dati, supporta l'accessibilità secondo le linee guida WCAG e facilita l'esportazione delle configurazioni, rendendo più semplice il riutilizzo e la manutenzione nel tempo.
Skenografia (Scenografia): il tema grafico del sito, responsabile della presentazione visiva dei contenuti. Si tratta del tema grafico dedicato alle scuole, i cui asset principali sono il risultato di un lavoro accurato di reverse engineering, seguito da un'importante fase di ottimizzazione mirata a migliorare le prestazioni e garantire la piena conformità alle linee guida sull'accessibilità. È inoltre presente un automatismo (pipeline) che si occupa della compilazione e distribuzione degli asset, assicurando coerenza, aggiornamento e semplificazione nel ciclo di rilascio.
Keryx (Banditore): estende le funzionalità offerte da Thémethla, aggiungendo il supporto per la gestione dell'albo online e della sezione di amministrazione trasparente, elementi fondamentali per i siti istituzionali scolastici.
Naûs émporos (Nave mercantile): costruisce e distribuisce automaticamente un'immagine Docker aggiornata ogni volta che viene rilasciata una nuova versione di Diagraphè. L'utilizzo dei container offre numerosi vantaggi: isolamento delle dipendenze, riproducibilità degli ambienti, facilità di distribuzione e scalabilità. Inoltre, grazie all'integrazione con Docker Hub, ogni immagine generata viene automaticamente sottoposta a una scansione di sicurezza che rileva eventuali vulnerabilità note. Questa funzionalità contribuisce a mantenere un elevato standard di sicurezza, riducendo i rischi legati a dipendenze obsolete o compromesse.
Sunchronìzo (Sincronizza): importa dati in base alle esigenze. Durante l'installazione iniziale popola il sistema con dati predefiniti (contenuti, tassonomie ecc.); successivamente si occupa di aggiornamenti e importazione di dati demo o di test. Il modulo sfrutta la funzionalità core di Drupal denominata Migration, che consente la gestione strutturata e riutilizzabile dei flussi di dati da e verso il sistema. L'uso delle migrazioni comporta numerosi vantaggi: permette una gestione tracciabile e modulare delle operazioni di import/export, facilita l'automazione delle attività di aggiornamento e garantisce maggiore coerenza e controllo sui dati importati.
Kréne (Fonte): modulo di servizio che funge da repository per dati di default e dati demo. I dati forniti da questo modulo sono salvati nel formato JSON-API, il che li rende agnostici rispetto alla piattaforma e facilmente riutilizzabili da qualsiasi software esterno, sia per scopi di integrazione che di test. L'approccio modulare e standardizzato garantisce interoperabilità, tracciabilità e coerenza con le pratiche moderne di gestione dei dati strutturati. In sinergia con Sunchronìzo, facilita il caricamento e l'importazione controllata dei dati in ambienti diversi o in fase di sviluppo.
Guardando a ritroso il percorso di sviluppo di Ouitoulía, spero che emerga con chiarezza la coerenza delle scelte tecniche compiute: ogni modulo è stato pensato per essere autonomo, riusabile e coerente con gli standard architetturali di Drupal. La progettazione modulare, l’uso consapevole delle funzionalità core (come Content Type, Views, Media, Taxonomy e Migration) e il ricorso a strumenti aggiuntivi consolidati (come le Pipeline o Docker) hanno reso il progetto non solo solido e scalabile, ma anche pronto ad adattarsi alle evoluzioni dell’ecosistema Drupal, come nel caso delle "ricette". Queste scelte non sono il frutto di intuizioni isolate, ma il risultato di anni di studio, pratica e confronto con le migliori prassi metodologiche. L’approccio è fondato su una visione orientata alla sostenibilità, alla sicurezza e alla riusabilità del software.
Un aspetto spesso sottovalutato ma determinante è la natura fortemente dichiarativa dei moduli sviluppati: oltre il 90% del codice è composto da configurazioni. Tale impostazione non nasce da un vezzo personale, ma da una consapevolezza progettuale: privilegiare la configurazione rispetto alla scrittura di codice permette di aderire naturalmente ai principi di security by default, privacy by default e solid by design; principi che vengono intrinsecamente ereditati dal core Drupal. Inoltre, garantisce maggiore trasparenza, facilità di manutenzione, coerenza nei deployment e un ciclo di vita del software più robusto e prevedibile. Questa scelta metodologica si rivela dunque efficace per costruire soluzioni affidabili, sostenibili e allineate alle esigenze delle pubbliche amministrazioni.
Nella prima metà del 2024, come già avvenuto in passato, ho ricevuto un supporto prezioso nelle attività di test e debug. In particolare da Maurizio, impegnato nello sviluppo del sito del Liceo Morgagni di Roma, e da due nuovi collaboratori: Danilo e Federico, che stavano realizzando il sito dell’Istituto Comprensivo Brigata Sassari di Cagliari. Durante il primo semestre dell’anno, il loro contributo è stato fondamentale per testare a fondo il software: un lavoro spesso invisibile, perché non tracciato dai sistemi di versionamento, ma di grandissima importanza.
Ho scalato la montagna, ora devo scendere a valle...
La migrazione dei contenuti: un puzzle da ricomporre
Nell'autunno 2024 ho iniziato una delle ultime fasi, probabilmente la più noiosa: la migrazione dei contenuti. Il vecchio sito web conteneva oltre dieci anni di materiale, tra cui l'albo online, l'amministrazione trasparente e un numero imprecisato di allegati e file. Naturalmente, non era un'operazione da svolgere manualmente: era necessario sviluppare un software ad hoc. Per fortuna, la vecchia piattaforma - Drupal 7 - organizzava i dati in entità strutturate con campi (tipi di contenuto), rendendo la migrazione non complicata, ma sicuramente laboriosa. Nella prima fase, attraverso diagrammi, schizzi e appunti, ho cercato di far combaciare la struttura dei dati esistente con quella nuova. Le differenze architetturali non erano drammatiche, ma comunque rilevanti: elementi che prima erano tassonomie ora diventavano tipi di contenuto, mentre alcuni campi erano stati spostati in entità differenti o addirittura riorganizzati come tassonomie. Un intreccio complesso di campi, tassonomie e tipi di contenuto. Un puzzle. E adoro i puzzle!
Un grazie alla nuova Dirigente, Daniela Quattrone, che mi ha confermato la fiducia su questo progetto senza alcun tentennamento.
Non potevo quindi passare direttamente i dati al modulo di migrazione che avevo predisposto per i contenuti di test: era necessario introdurre un passaggio intermedio. Ho quindi scritto alcune query SQL che trasformano i dati secondo la nuova struttura e li salvano in formato JSON-API (link al sorgente SQL del tipo Documento). A questo punto ho potuto riutilizzare il modulo Sunchronìzo, già sviluppato in precedenza, per orchestrare la fase successiva. Per l'importazione ho utilizzato la funzionalità core di Drupal chiamata "Migration", che consente di definire in modo strutturato e dichiarativo i flussi di dati da importare. I dati sorgente, salvati in JSON-API, sono stati gestiti attraverso configurazioni YML (link al sorgente YML del tipo Documento), rendendo l'intero processo tracciabile, modulare e ripetibile.
Un grazie all'animatore digitale del mio Istituto, Gianluca Versace, che in questa fase mi ha dato un grosso aiuto sia nel districarmi nei contenuti del vecchio sito web che proponendo soluzioni pragmatiche e immediate.
L’integrazione dei moduli Albo e Trasparenza
Completata la fase di migrazione, ho dedicato i primi due mesi del 2025 allo sviluppo dei moduli per l’albo online e per l’amministrazione trasparente. Dal punto di vista tecnico, la realizzazione non ha comportato particolari complessità, trattandosi principalmente di configurazioni che estendono il modulo Thémethla, già collaudato e integrato nel progetto. La vera sfida è emersa invece dal quadro normativo relativo all’amministrazione trasparente: sebbene esista una normativa di riferimento formalmente definita, le interpretazioni e i chiarimenti forniti dagli Uffici Scolastici Regionali sono spesso disomogenei, e le indicazioni relative a sezioni obbligatorie e contenuti da pubblicare mancano di coerenza e uniformità. Dopo un’attenta analisi, diverse letture incrociate e confronti con colleghi di altri istituti, sono riuscito a costruire una soluzione efficace, robusta e coerente con il resto dell'architettura. In occasione della revisione di maggio 2025, il revisore ha espresso un giudizio positivo, apprezzando in particolare la chiarezza e la completezza del software di gestione dell’amministrazione trasparente.
Bisogna preparare la rampa di lancio
Deploy e messa online
A marzo 2025 viene effettuata l'installazione e la messa online del nuovo sito scolastico. L'intera infrastruttura è basata su un'architettura modulare in Docker Compose, con volumi montati selettivamente per includere solo i file realmente necessari. La codebase non viene resa persistente, ma scaricata dinamicamente da GitHub al momento del deploy tramite pipeline, garantendo maggiore sicurezza e aderendo al paradigma "cloud-first". Questo approccio, oltre a migliorare la portabilità, riduce la superficie d'attacco e facilita aggiornamenti e rollback.
L'impiego di Redis consente di servire pagine statiche direttamente dalla RAM del container, migliorando sensibilmente le performance e la scalabilità. Drupal, da parte sua, contribuisce con un motore di rendering HTML particolarmente efficiente. I risultati sono evidenti nei test Lighthouse, che mostrano tempi di caricamento rapidi e un'elevata conformità ai criteri di accessibilità e qualità del codice.
La fase di migrazione, già descritta in precedenza, viene eseguita utilizzando lo stesso modulo e gli stessi flussi definiti nei test. Tutto è pronto: il sito viene lanciato online con successo con un anno di ritardo rispetto alle previsioni ma con una solida architettura alle spalle, pronta a sostenere l’attività scolastica negli anni a venire.
Durante i mesi di aprile e maggio 2025 si è svolta una revisione completa di tutti i contenuti pubblicati sul nuovo sito, accompagnata da un'attività di formazione rivolta al personale incaricato della gestione quotidiana della piattaforma. L'obiettivo era duplice: da un lato garantire la piena conformità normativa, dall'altro assicurare un'autonomia operativa nella gestione dei contenuti.
In parallelo è stato condotto un controllo puntuale della struttura informativa e delle sezioni obbligatorie, in modo da allinearsi pienamente alle indicazioni ministeriali e alle linee guida in vigore.
A fine maggio è stata inoltrata la richiesta di asseverazione del sito, che è stata accolta positivamente nel mese successivo, a giugno 2025, certificando ufficialmente la piena conformità del portale scolastico ai requisiti normativi vigenti.
S-U-C-C-E-S-S-O!!!
Considerazioni finali: quando l’ostacolo diventa opportunità
Guardando indietro, l’intero percorso che ha portato alla realizzazione di questo progetto è stato tutt’altro che lineare. È stato disseminato di difficoltà tecniche, normative ambigue, revisioni necessarie, scelte da rimettere in discussione. Più volte ho avuto l’impressione di dover ripartire da zero, di non avere abbastanza tempo, risorse o risposte. Eppure, proprio in quei momenti ho compreso quanto sia importante non farsi scoraggiare dalle battute d’arresto. Ogni problema, se affrontato con spirito critico, studio e un pizzico di creatività, può diventare un’occasione di crescita personale e tecnica. Le soluzioni migliori, spesso, nascono proprio nei punti di frizione, quando il contesto costringe a uscire dai percorsi già tracciati per trovare una via alternativa.
Fondamentale, in tutto questo, è stato mantenere un atteggiamento riflessivo: fermarsi a osservare, analizzare, ripensare, senza cedere alla fretta di “far funzionare tutto”. La tenacia e la resilienza sono diventate compagne di viaggio, accanto alla pazienza e alla capacità di adattarsi a una realtà tecnica e normativa in continuo mutamento. Ma non si tratta solo di resistere: si tratta di restare lucidi, continuare a studiare, farsi domande giuste, e mettersi in discussione anche quando si pensa di avere già la risposta.
In definitiva, questo progetto non è soltanto il frutto di codice ben scritto o configurazioni accurate. È l’esito di un processo che ha richiesto metodo, rigore, e al tempo stesso immaginazione e fiducia nel fatto che ogni ostacolo, prima o poi, può essere compreso, affrontato e superato.
Mi sono divertito tantissimo a risolvere tutte le problematiche che si presentavano.
Pietro Arturo Prof. Panetta
Metadata
Pubblicato: 9 Marzo 2025 - Revisione: 29 Luglio 2025
Eccetto dove diversamente specificato, questo articolo è stato rilasciato sotto Licenza Creative Commons Attribuzione 4.0 Italia.