Stefano Mainardi CEO SparkFabrik

Drupal 8, cosa ci sarà da aspettarsi

Drupal8Tablet

Per chi lavora nel settore, ma sopratutto chi usa questo strumento, sta aspettando con ansia il rilascio della nuova versione di Drupal, che a tutti gli effetti sarà una vera rivoluzione sotto molti aspetti.

Negli anni mi è capitato molte volte di imbattermi con colleghi che hanno sempre denigrato e visto con sospetto Drupal, a volte a ragione, molte volte a torto. L’evoluzione è un processo complicato, sopratutto quando da micro sistemi si diventa “macro”, quando le decisioni devono passare attraverso molti canali prima di essere prese, quando tecnicamente la codebase diventa onerosa e quando si decide negli anni di avere una retro-compatibilità.
Allo stato attuale Drupal è uno strumento molto potente, ma soffre di lacune lato architetturale tanto da rendere molto difficile avere delle strette best-practices di sviluppo, ad esempio il TDD. In Twinbit siamo riusciti ad avere un workflow completo che ci riesce a garantire affidabilità e testing, ma in molte occasioni ci siamo dovuti piegare allo strumento piuttosto che piegare lo strumento alle nostre esigenze.

Con il nuovo rilascio previsto per la fine del 2014, le cose cambieranno in meglio, o almeno si spera. Molto del codice core legacy è diventato Object Oriented, molte funzioni custom sono state sostituite con componenti di terze parti, vedi l’introduzione di

Symfony, Twig per il templating, Backbone e Undercore.js per il frontend, e per finire l’integrazione di PHPUnit. Molti i miglioramenti anche per i site builder, ad esempio l’introduzione di temi responsive per il backend, e l’integrazione nativa di un editor WYSIWYG. Direi che finalmente abbiamo iniziato a giocare sul serio in diversi ambiti, portando lo strumento ad un nuovo livello.

Mi piacerebbe, senza entrare troppo nel dettaglio, fare una carrellata di quelle che ritengo le migliorie degne di nota, determinati per iniziare a progettare gli upgrade dei nostri applicativi, o di proporre nuove soluzioni ai nostri clienti.

Accessibilità

Uno dei punti cruciali su cui si è dibattuto negli anni per quanto riguarda Drupal, è la ripida curva di apprendimento per gli editors e il backend non propriamente user friendly se confrontato con altri CMS Open Source, uno su tutti WordPress.

Per questo una delle iniziative prima della partenza dello sviluppo di questa nuova release, era quella di migliorare sensibilmente l’esperienza d’uso, fornire nuovi strumenti più accessibili, ed essere finalmente compatibile con dispositivi mobile.

L’inziativa che ne è nata è stata chiamata “Spark“, coordinata e sponsorizzata da Acquia, azienda a cui fa capo il fondatore di Drupal

Dai test che ho effettuato, direi che il risultato è ottimo e praticamente raggiunto, l’esperienza backend inizia a livellarsi finalmente verso standard alti di usabilità, mettendo delle solide fondazioni per il futuro.

Le caratteristiche promesse inizialmente e ad oggi attive sono:

  • Toolbar di amministrazione responsive
  • Editor WYSWYG integrato nel core, con integrazione nativa ai formati del testo. Finalmente dopo anni, anche Drupal si fornisce di uno strumento indispensabile senza dover ricorrere a integrazioni esterne
  • In-Place content editing. Questa funzionalità è in realtà molto controversa, direi che è utile in pochi casi, sicuramente aiuta l’esperienza utente dell’editor nel momento in cui le modifiche da fare ai contenuti siano di piccola entità 

in_place_editing

Drupal 8 In place content editing. Da frontend sarà possibile editare gli elementi presenti all’interno del contenuto

  • Mobile preview tool. Un tool che permette attraverso una serie di configurazioni predefinite, ed altre configurabili, di testare in modalità preview il contenuto su diverse risoluzioni

Drupal 8 - Mobile preview tool

 Mobile preview tool

  • A responsive page layout editor. Un tool integrato con Panels per la generazione di layout responsive. Personalmente non sono un fanatico di Panels, ma a ad un primo test mi sembra un ottimo strumento per i site builders
  • Un nuovo tema di amministrazione responsive Ember
  • Possibilità finalmente di avere delle “preview” reali dei contenuti
  • Eliminazione degli orribili “overlay” di amministrazione introdotti in Drupal 7
  • Integrazione in core di alcune utili funzionalità, ad esempio il module filtering 

Moltissime sono le novità, oltre le più rilevanti che ho indicato. Vi consiglio di seguire direttamente le iniziative collegate e se ne avete le capacità e la voglia di contribuire per migliorare il progetto o portare nuove idee, la community Drupal è piuttosto accogliente e ricettiva

Site builders

Anche per i site builders le novità sono diverse ed interessanti. Devo dire che su questo fronte Drupal è stato sempre un gradino più in alto rispetto ad altri CMS, tante volte anche a soluzioni più blasonate o soluzioni commerciali closed.

L’estrema flessibilità è stata da sempre una caratteristica che ho apprezzato, nonostante quest’ultima ha sempre un grande prezzo da pagare in favore della curva di apprendimento per chi si accinge le prime volte a lavorare con questo strumento.

Le novità che ritengo più interessanti sono le seguenti.

  • Nuovi “Field types”. La modellazione dei nostri dati, quindi in gergo Drupal, dei nostri Content Type si arricchisce ulteriormente portando nel core nuovi oggetti senza dover più ricorrere a moduli esterni, ad esempio i nuovi fields: Data, Entity Reference, Link, Phone, Email. Un enorme passo avanti, rendendo sempre più ampio e configurabile lo strumento alla prima installazione. Ottimo lavoro!
  • Nuovi “Entity Types”. Se sui sistemi Unix tutto è un file, su Drupal tutto è un nodo, o meglio una Entity. Finalmente anche i blocchi potranno essere “fieldable”, ovvero avremo la possibilità di aggiungere “fields” ai blocchi, rendendoli adatti alle nostre esigenze senza dover essere limitati dal titolo e un body. Anche la “contact form” di default eredita questa possibilità.
  • Possibilità di customizzare da backend la visualizzazione delle form. Per intenderci, ad esempio potrò configurarmi il numero di rows da mostrare nella textarea della form commenti

Screen Shot 2014-01-12 at 18.40.44 pm

Possibilità di customizzare da backend le caratteristiche delle form

  • Views in core. Views è lo strumento per eccellenza che alza l’asticella di Drupal rispetto la concorrenza, per chi non lo conoscesse è un visual query builder che ci permette quindi di interrogare il DB attraverso un interfaccia ad-hoc, da query molto semplici fino a query molto complesse che possono coinvolgere più particelle del sistema. Ad esempio possiamo generare feed, o fornire output REST senza dover scrivere nessuna linea di codice.
    Si tratta di uno di quei moduli che viene installato di default, averlo nel core ci farà risparmiare tempo e offrirà uno strumento nativo per l’estrazione dei contenuti

Anche qui le novità sono moltissime e quelle indicate sono solamente un subset delle più interessanti, anche qui vi invito a partecipare ad uno dei progetti attualmente aperti

Gestione multilingua

La gestione multilingua su Drupal è stata sempre un po’ croce e delizia. Su Drupal 7 gli strumenti a disposizione sono moltissimi, e anche molto  avanzati e completi. In Twinbit abbiamo sviluppato un ottimo know-how nella gestione e nella creazione di siti multilingua complessi, ad esempio Antinori, e Tim International, abbiamo avuto modo quindi di testarne in modo molto approfondito gli aspetti positivi e negativi, e migliorando in molti casi ai moduli stessi inviando patch o nuove funzionalità. Posso affermare con certezza che Drupal è uno dei CMS open source più avanzati riguardo la gestione del multilingua.

I punti dolenti della gestione multilingua è trovarsi di fronte a situazioni in cui alcune parti del core hanno bisogno di workaround per essere tradotti correttamente, ad esempio i blocchi di sistema, o molte volte moduli contrib. Se è vero che ad ogni problema si può ricorrere ad una soluzione fatta in-house, o attraverso moduli contrib, molte volte la situazione è frustrante. L’altro grande problema storico è l’impossibilità attualmente di rimuovere la lingua base Inglese, anche qui costringendo il site builder a ricorrere a soluzioni poco ortodosse per impostare una lingua base diversa dall’inglese. A livello di usabilità ci sono diversi moduli contrib che possono aiutare l’editor ad orientarsi, ma sicuramente il lavoro da fare di razionalizzazione è molto alto e da un sistema così avanzato ci si aspetterebbe un interfaccia di sistema che esponga le potenzialità espresse dal sistema.

Tutte queste problematiche sono state** identificate e raccolte** nell’iniziativa Drupal 8 Multilangual, dai miei test attuali il livello raggiunto** è davvero stupefacente**, ogni pezzo del sistema è traducibile ed esportabile. Inutile che vi scriva quali sono le novità, mi limito a linkarvi la documentazione scritta dal coordinatore dell’iniziativa multilngua per rendervi conto della mole di lavoro che c’è stata dietro.

Sono davvero entusiasta, e il mio spirito nerd non vede l’ora di poter lavorare ad un progetto multilingua con D8.

Designers & Themers

Drupal oggi offre infinite possibilità per i themers, anche se attualmente il core soffre di alcune lacune che possono essere colmate attraverso moduli contrib. Ad esempio D7 non offre supporto nativo ad elementi HTML5, oppure fornisce di default una versione vecchia di Jquery. Lacune colmabili in pochissimo tempo, ma sono cose che non ci si aspetterebbe da un software in linea con i tempi.

Allo scorso DrupalDay, Andrea il nostro Senior Frontend developer in Twinbit ha tenuto un interessante sessione per fare fotografia di quale sia lo stato dei “base theme” Drupal, confrontando pregi e difetti delle varie soluzioni e portando il suo punto di vista sullo sviluppo frontend con Drupal, visto che si è trovato molte volte a dover integrare design molti spinti su Drupal spingendolo quasi al limite delle sue potenzialità, vi consiglio di perdere qualche minuto per ascoltare la sessione.

Anche in questo campo Drupal 8 porterà una ventata di freschezza. Avremo finalmente disponibili gli elementi HTML5 di default, ad esempio su tutte le form di sistema e non, e nuove librerie di frontend: Backbone.js, Modernizr, Twig come template engine, Normalize.css come alternativa ai classici css reset. Insomma ora anche i frontend developer avranno un sistema all’altezza delle lore aspettative.

Probabilmente uno degli aspetti più interessanti, ma più impegnativi, sarà il passaggio a Twig. Chi lavora con Symfony lo conosce molto bene, per Drupal è un assoluta novità. Oggi la separazione tra presentazione e business logic è molto a discrezione delle capacità dello sviluppatore, con Twig scrivere codice più consono e meno spaghetti-code sarà nettamente più semplice.

Un piccolo esempio di come sarà strutturato il classico template del nodo per mostrarvene la leggibilità che è praticamente autoesplicativa se confrontata con i vecchi modelli. Il codice mostrato è il template “node” del tema Bartik fornito con Drupal 8:

Chi si è trovato a lavorare con template Drupal, sono certo che migliorerà profondamente il workflow lavorativo.
Dedicherò un post ad-hoc su Twig nei prossimi giorni per mostrarvene le potenzialità, credo ne valga assolutamente la pena.

Altro punto interessante è l’abbandono del supporto completo per IE 6/7, e gran parte anche per l’ultimo baluardo da sconfiggere per i web developer il vetusto IE8. Sarà un motivo in più per convincere i clienti ad abbandonare nei loro piani il supporto a tale pezzo d’antiquariato.

Developers

Qui davvero c’è moltissimo di cui parlare, le novità introdotte sono moltissime ed interessanti e di sicuro avrò modo di parlarne in maniera più approfondita e con esempi d’uso nei prossimi post dedicati a Drupal, ma voglio riportare alcuni degli aspetti salienti.

Le novità più interessanti sono sicuramente il Configuration management per spostare e sincronizzare le configurazioni da un ambiente all’altro, pensate al problema di dover gestire più ambienti di sviluppo, o dover gestire il deploy da un ambiente di staging ad un ambiente di produzione. Ad oggi l’unica soluzione era quella di utilizzare l’ottimo modulo Features per portare su file system tutto quello che risiede su DB, ma non tutte la configurazioni di sistema erano esportabili, anche qui costringendo lo sviluppatore a workaround per poter tener sincronizzati gli ambienti senza dover toccare il DB. Un enorme passo avanti che pochi CMS open e commerciali possono vantare.

L’integrazione nativa con Drush, il tool da CLI per automatizzare e velocizzare tutte le attività di sviluppo e di manutenzione del sistema. Nato inizialmente come utility di gestione, divenuto nel tempo uno strumento fondamentale per chi sviluppa codice.

Un altro aspetto molto interessante di Drupal 8 sarà l’aspetto Web Services. L’iniziativa recita “The Web Services and Context Core Initiative (WSCCI) aims to transform Drupal from a first-class CMS to a first-class REST server with a first-class CMS on top of it“. Da un sistema moderno ci si aspetta che che l’HTML è solamente uno dei possibili output che il sistema debba restituire, è ora questo succederà nativamente, senza dover ricorrere a moduli contrib esterni, ad esempio Services. Ad esempio è uon scenario davvero molto interessante nel caso decidessimo di utilizzare Drupal come backend per applicazioni mobile, vi linko una sessione che abbiamo tenuto io e Paolo allo scorso Phpday in cui abbiamo parlato dell’argomento.

Sulle componenti Symfony e del testing ci torneremo invece con post di dettaglio corredati di esempi.

Conclusioni finali

Le aspettative sono molte, e sono certo che poche saranno tradite. Direi che questo è il salto più radicale da una major release all’altra che Drupal abbia mai fatto, trasformando molto del codice vecchio e legacy in codice first-class, portandolo in linea con quelle che sono le tecnologie moderne e le best practice di sviluppo.

Si esce finalmente dalla cosiddetta sindrome del Not invented here per passare ad un più sano e corretto “Proudly Found Elsewhere“. Personalmente ho apprezzato molto l’apertura verso progetti esterni e l’apertura alla contaminazione di mondi diversi e con altre regole rispetto a quelli a cui si è abituati. Questo approccio sta migliorando la sensibilità della community di sviluppatori, e la qualità del prodotto, non solo di Drupal ma anche dei progetti che sono stati abbracciati. La vera espressione del modello Open Source.

Proprio oggi mi è stato chiesto un parere sulla comunità Drupal, in generale sul progetto. Ci ho riflettuto un attimo e poi senza pensarci troppo mi è venuto da dire che è uno degli esempi migliori di progetto Open Source, direi paragonabile al kernel Linux in termini di governance e qualità.  Per chi mi ha chiesto come mai utilizzo WordPress e non Drupal su questo blog, risponderò anche a questo quesito :-)

comments powered by Disqus