La nostra esperienza al Drupal Global Contribution Weekend
Wellnet ha partecipato al Drupal Global Contribution Weekend, dal 29 al 31 gennaio 2021, un evento internazionale che si svolge ogni anno, al quale tutti gli addetti ai lavori possono partecipare per accrescere la community Drupal e scambiarsi opinioni e competenze. Attraverso la creazione di gruppi di lavoro nei quali si discute e si collabora, durante il weekend si realizzano miglioramenti alla piattaforma.
Wellnet ha organizzato un gruppo che ha lavorato al modulo webprofiler. All'attività, coordinata dal nostro Luca Lusso, hanno contribuito Andrea Cividini, Luca Cracco, Chiara Fauda e Roberto Peruzzo.
Che cos’è Drupal?
Drupal è un sistema di gestione dei contenuti (CMS) molto potente, adatto a creare siti web complessi, blog ed e-commerce personalizzati. Il software è facilmente scaricabile da Drupal.org e, data la sua flessibilità e modularità, per essere configurato e utilizzato al meglio richiede esperienza e competenze specifiche.
Le funzionalità di Drupal sono appunto raggruppate in “moduli”, che possono essere utilizzati per modificare i contenuti all’interno del sito. Essendo un CMS moderno, presenta una GUI (Graphic User Interface) molto evoluta per le attività di gestione, che comprende, ad esempio:
- creazione e modifica di contenuti con strumenti di editor
- controllo dello stato della pubblicazione e dei flussi di lavoro
- creazione e gestione di URL personalizzati e voci di menù
- gestione degli utenti e dei loro privilegi di accesso ai contenuti e alle funzionalità del sito
- organizzazione dei contenuti con categorie e pagine di elenchi
- possibilità di spostare blocchi di contenuto in diverse aree della pagina
Sotto la potente interfaccia utente c'è un framework orientato agli oggetti (OOP) molto flessibile. Ciò consente agli sviluppatori di mettere a punto un sito tramite Drupal con molta più precisione e personalizzazione di quello che consentono altri CMS, ad esempio WordPress, per citarne uno molto diffuso. In Drupal è presente anche un esteso sistema di template che utilizza il linguaggio Twig, che consente di personalizzare ampiamente l'aspetto del sito.
Drupal e la sua grande community
Drupal è realizzato da una community internazionale di gruppi e singoli esperti, con competenze ed esperienza nella progettazione, sviluppo, testing, integrazioni e con migliaia di designer che contribuiscono alla libreria dei moduli per la creazione di nuovi contenuti, caricati soprattutto nelle repository di GitLab.
Esistono moduli per un'ampia varietà di funzionalità, tra cui:
- ShareThis per condivisione social
- Effetti immagine
- Plugin di calendario
- CAPTCHA
- Google Analytics e plugin di metatag
- E molto, molto altro
Ci sono decine di migliaia di moduli attualmente disponibili per quasi tutte le esigenze di siti web: Wellnet ha addirittura già realizzato moduli pronti per Drupal 9, che prenderà il posto delle versioni precedenti a fine 2021.
Per rendere l’idea della mole di lavoro e della fervente attività della community, basti sapere che nell’ultimo anno sono state lavorate oltre 30.000 “issue”, cioè segnalazioni o implementazioni di funzionalità, ad un ritmo di circa 85 al giorno, per un totale di circa 4.200 progetti di sviluppo complessivi. Oltre 8.000 sono i contributori singoli, mentre le aziende od organizzazioni impegnate e attive sono circa 1.200 in tutto il mondo.
Se vuoi approfondire questo argomento leggi anche il seguente articolo: https://www.wellnet.it/blog/news/drupal-9-tutto-cambia-niente-cambia
Il Global Contribution Weekend
Il Global Contribution Weekend è un evento internazionale che si svolge ogni anno nell'ultimo weekend di gennaio. È aperto a tutti coloro che desiderino partecipare allo sviluppo e alla manutenzione della piattaforma Drupal e scambiarsi opinioni e competenze con tutta la community.
All'attività organizzata da Wellnet erano presenti Andrea Cividini, Luca Cracco, Chiara Fauda e Roberto Peruzzo, coordinati da Luca Lusso, Head of Software Architecture.
Si è lavorato sul modulo webprofiler, un sotto-modulo del modulo "devel", tra i più utilizzati nel panorama di sviluppo Drupal già nelle versioni precedenti.
Per i non addetti ai lavori: devel è un modulo che espone diverse funzionalità di sviluppo all'interno del backend Drupal sia via browser sia più a basso livello (cli ecc. ); webprofiler (che si appoggia sull'omonima funzionalità messa a disposizione per il framework Symfony) aggrega ed espone allo sviluppatore metriche di varia natura riguardo al sistema e alle risorse impiegate per generare le pagine: si presenta, sul sito web, come una lower bar a scomparsa che espone informazioni riguardanti le più diverse statistiche (tempi di caricamento, query eseguite, …) e relativi link alle pagine di dettaglio e approfondimento.
L’obiettivo dell’attività era rendere questo modulo compatibile con le più recenti versioni di Drupal (9.x tendenzialmente) a seguito del recente cambio di versione di Symfony di appoggio al CMS (passata dalle 3.x alla 4.x).
Che cosa abbiamo fatto
Luca Lusso ha illustrato al gruppo di lavoro lo storico dell’applicazione, l’attività da svolgere e l’approccio da tenere per eseguirla. Dopo questa presentazione si è passati alla suddivisione delle attività tramite una board predisposta ad-hoc per l'occasione. A mano a mano che il lavoro dei singoli procedeva, venivano aperte nuove sessioni individuali, dove ognuno dei partecipanti staccava il proprio branch di sviluppo e introduceva le modifiche necessarie, sottoponendole poi alla review di Luca.
L'attività necessità ancora di qualche lavorazione, in quanto nel tempo a disposizione era davvero difficile riuscire a chiudere tutti i task. I back-end developer hanno lavorato principalmente sui DataCollector, ovvero i servizi che hanno il compito di raccogliere i dati durante il bootstrap di Drupal per la gestione della request e la generazione della response, mentre gli sviluppatori front-end si sono concentrati sullo styling della pagina di dettaglio dei singoli DataCollector.
La logica utilizzata per queste funzionalità si appoggia al design pattern del "service decorator": si tratta di una tecnica di sviluppo specifica per queste necessità, che consiste nel creare, appunto, dei "decoratori" di servizi, che possano arricchire la normale esecuzione dei vari metodi pubblici di queste classi con logiche proprie (in questo caso, la raccolta di dati statistici e metriche) senza alterarne il comportamento originale.
Vuoi saperne di più? Parla con il nostro esperto!