Elm Europe 2017
La prima conferenza in Europa su Elm
Dopo essere stato l’anno scorso a Brussels per DDD Europe e aver fatto shopping di cioccolata nella capitale belga, avevo bisogno di rimpinguare le mie scorte di tavolette fondenti. Non vedevo quindi l’ora di trovare una scusa per visitare Parigi e il suo quartiere di Saint Germain des Pres.
Quale occasione migliore quindi della prima edizione di Elm Europe, la prima conferenza in Europa su Elm, un linguaggio funzionale per creare applicazioni web che ci ha da sempre incuriosito in MV Labs e che non vediamo l’ora di utilizzare in qualche progetto complesso – l’abbiamo già sperimentato con ottimi risultati per relizzare la parte client di php-middleworld.
La conferenza è iniziata con il keynote di Evan Czapliki, il creatore di Elm, che ha parlato di come evolvere un’applicazione Elm man mano che la complessità aumenta. Infatti Elm ha ormai raggiunto il punto in cui diverse aziende hanno in produzione codebase di decine di migliaia di righe di codice Elm, e l’organizzazione del codice è fondamentale per garantirne la mantenibilità. Il punto focale da cui è partito Evan è stato scoprire le strutture dati più adatte allo specifico caso d’uso, senza lasciarsi necessariamente influenzare dal loro aspetto grafico. Per esempio una lista di checkboxes potrebbe essere modellata con strutture dati diverse a seconda delle regole che devono essere applicate a quella lista: deve essere possibile aggiungere elementi? Ogni elemento è indipendente dall’altro o può capitare che la selezione di un checkbox influisca su un altro checkbox? C’è un limite massimo sul numero di checkboxes selezionati? Le risposte a queste domande possono indirizzare la scelta verso la struttura dati più adatta al caso d’uso. Inoltre, una corretta modellazione dei dati diventa fondamentale anche per documentare la correlazione tra varie componenti di un’applicazione. Altro punto importante è stato ridurre le API pubbliche che ogni componente espone, in modo da avere modo di mantenere all’interno delle strutture dati gli invarianti di dominio che non possono essere completamente specificati a livello dei tipi.
Sulla modellazione delle strutture dati si è soffermato anche Greg Ziegan nel suo talk Building reordable UI in Elm, suggerendo di costruire le nostre API come se fossero dei veri e propri prodotti, passando attraverso ricerche di mercato, determinando cos’è effettivamente riutilizzabile, proponendo alla community delle API prima effettivamente di implementarle.
Altro talk molto interessante è stato Rethinking Style di Matthew Griffith in cui ha presentato la sua libreria style-elements che affronta il problema di definire il layout dei componenti di un’applicazione da un nuovo punto di vista. L’idea di fondo è, come i tipi forniscono garanzie per il codice, fornire un meccanismo che garantisca che il layout di un’applicazione sia completamente definito una volta che il codice compila. In questo modo diventa possibile pensare ad un refactoring dello stile similmente a come un compilatore in un linguaggio tipato ci guida nel refactoring del codice.
Il secondo giorno della conferenza si è aperto con il keynote di Richard Feldman che ha affrontato a suo volta il tema di scalare un’applicazione Elm. Similmente al tipico ciclo utilizzato in TDD, Richard ha proposto di procedere nello sviluppo seguendo il ciclo Build -> Discover -> Refactor. Un’approccio del genere è facilmente utilizzabile in Elm dove refactoring anche massicci non comportano eccessivi problemi grazie all’ottima assistenza fornita dal compilatore. Altro punto molto interessante del discorso è stato la sottolineatura della differenza tra l’architettura delle applicazioni secondo una prospettiva object oriented (in cui è compreso per esempio anche il modello a componenti tipico di React), in cui è necessaria avere una comunicazione padre/figlio per passare messaggi tra i vari componenti, e dall’altro lato applicazioni puramente funzionali dove invece la sorgente della verità non è distribuita ma centralizzata.
Molto energico ed interessante il talk Elm from a business prospective di Amitai Burstein, il quale è partito dalla definizione di successo di un progetto, che deve essere realizato nel tempo previsto, con il bubget concordato e rendendo felice il cliente. La sua ricetta per ottenere ciò è sviluppare solo l’essenziale stimando le singole issue in box temporali ristretti (più si allungano più è facile sbagliare le stime). Elm aiuta sicuramente in questo processo in quanto l’architettura ben definita e poter contare sull’aiuto del compilatore permettono di avere un’idea più chiara dello sforzo richiesto e, cosa non da poco, mantenere gli sviluppatori felici!
In generale è stata una conferenza interessante in cui è stato possibile fare il punto della situazione dello sviluppo di Elm e conoscere varie persone che stanno sviluppando con Elm progetti molto interessanti. Il formato della conferena si è rivelato un po’ particolare, con una pausa dopo ogni talk per favorire la socializzazione tra i partecipanti. Il cibo francese come da aspettative non ha deluso, quindi direi che ci sono tutti i presupposti per pensare già al prossimo viaggio a Parigi!
Alla prossima conferenza!
Alberto
14 giugno 2017 at 19:02Complimenti: sfornate sempre articoli di qualità!
Questo Elm mi intriga sempre di più dato che mentalmente ragiono spesso in termini functional pur essendo cresciuto a pane e OOP.