Il futuro di Scala è colorato!

La quarta edizione dello Scala Italy si è confermata, seppure con luci ed ombre, come uno degli appuntamenti importanti nel circuito delle conferenze europee, nonostante il calendario ormai affollato costringa a sgomitare un po’ per assicurarsi la presenza degli autori più in vista. L’attrattiva del viaggio in Italia, però, è per molti di gran fascino e così il programma delle due giornate fiorentine ha potuto offrire dei veri pezzi da novanta. Filo rosso di molti degli interventi il futuro immediato e non; le innovazioni più imminenti e la prospettiva a medio e lungo termine che l’ecosistema Scala si può aspettare.

La sala dello Scala Italy si riempie per l’apertura

Venerdì

La conferenza è stata aperta dal keynote di Heather Miller, uno dei veri motori della comunità Scala negli ultimi anni non solo dal punto di vista tecnico ma soprattutto dal punto di vista organizzativo: l’impronta che Miller ha dato allo Scala Center presso l’EPFL è stata di fondamentale importanza per dare una guida ed una direzione alla comunità Scala negli ultimi due anni. E la comunità, intesa come pilastro del modello di sviluppo dell’Open Source è stata l’argomento della keynote: mantenere una comunità sana ed attiva, lavorare per espanderla e garantire la possibilità di tutti a contribuire è fondamentale per la sopravvivenza di un progetto Open Source. Gestire la salute della comunità è quindi un impegno altrettanto importante rispetto alla produzione tecnica. Le iniziative divulgative, poi, sono l’indispensabile mezzo per mantenere la rilevanza della tecnologia ed espandere la comunità stessa, incrementando quindi la sua potenzialità ad innovare.

I problemi non sono pochi: l’emergere della conflittualità nella gestione dei progetti (nonostante la recente e clamorosa ammissione di Torvalds), le problematiche di inclusione e diversità, e soprattutto lo sbilanciamento tra importanza e diffusione dei progetti e risorse a disposizione dello sviluppo mina alla base quello che è ormai diventato il modello con cui viene sviluppata la parte più importante ed utilizzata del software. La ricerca sul Bus Factor che evidenzia come molti progetti di altissimo profilo dipendano in realtà dall’impegno, spesso gratuito, di pochissime persone è un campanello d’allarme visto che in 5 anni (2010-2015) quegli stessi progetti sono passati da innovazione di frontiera ad infrastruttura comune della maggior parte dei sistemi software al mondo.

Lo Scala Center (annuncio in anteprima allo Scala Italy! ) passa ora in mano a Sébastien Doeraene, l’autore di Scala.JS fresco di dottorato, mentre la Miller prende una posizione di assistente alla prestigiosa Carnegie Mellon. Un compito non facile sia per l’importanza dell’incarico che per l’eredità da raccogliere.

Le due tracce in cui si è divisa la conferenza dopo il keynote hanno permesso di fare pratica con due workshop su ScalaMeta e SBT (quest’ultimo è stato recensito da Daniela Sfregola come estremamente convincente), mentre nella sala plenaria si presentavano altri strumenti importanti per i progetti correnti e di prossimo sviluppo: il problema della velocità della compilazione affrontato dalla TripleQuote di Mirco Dotta, Scala e Akka per la realizzazione di time-series distribuite con Veltri e Mascetti di Radicalbit, l’integrazione nella piattaforma Akka dei concetti di elasticità forniti da Kubernetes presentati da Tiriticco, ed infine la libreria Spire, una delle prime librerie in ordine di tempo a comporre l’ecosistema Scala, che Lars Hupel ci ha spiegato essere stata incidentalmente all’origine delle implementazioni delle Algebre.

L’intervento di Marcin Rzeźnicki sulle possibilità di mutuare da Idris alcune delle caratteristiche più avanzate di gestione dei kind ha colto tutti un po’ di sorpresa per il livello teorico estremamente elevato: il fatto che solo Miles Sabin fra tutti i presenti sia riuscito a discutere con il relatore ha fatto serpeggiare il sospetto che non molti, oltre a lui, erano riusciti a cogliere appieno il contenuto del talk.

Il panel conclusivo della prima giornata.

Per concludere in leggerezza, la grande simpatia di John Pretty ha moderato un interessante panel composto da Ólafur Páll Geirsson (Scalafmt, Scalameta), Mirco Dotta (Eclipse Ide, Triplequote), Heather Miller (Scala Center), Miles Sabin (Shapeless), Luka Jacobowitz (Cats), dove sono stati discussi alcuni dei temi riguardanti il futuro di Scala: le implicazioni di Dotty e Scala 3 sull’attuale panorama delle librerie, la partecipazione diretta di Sabin allo sviluppo di Scala 3 e i riflessi sull’ecosistema dei tool delle novità che via via vengono annunciate come incluse nella prossima versione.

Sabato

Con qualche faccia che tradiva la partecipazione alla serata community offerta da Avanscoperta, la seconda giornata di conferenza si è aperta con l’apparizione in carne e Future[_], di Viktor Klang in persona, che ha portato le sue riflessioni sulla convergenza fra Eventi e Servizi. Partendo dalla storia dell’elaborazione dei dati, dai processi batch agli ETL per arrivare allo stream processing, Klang ha spiegato come un approccio ad Eventi può soddisfare le attuali richieste di dati veloci, continui e resilienti, e come l’architettura Reactive implementata da Akka e dal supporto di Scala permette questa convergenza fra l’approccio a servizi e quello asincrono.

Mentre nella saletta dei workshop veniva presentato Spark, nella sala plenaria John Pretty ha presentato alcune delle novità in sviluppo per Scala 3: Enumerations, Type Lambdas, metaprogrammazione più semplice e sicura possono semplificare molti delle aree dove oggi ci sono delle soluzioni ad hoc, spesso fragili e poco sicure. Ovviamente, questo porterà alla necessità di aggiornare il codice esistente, o sostituire completamente tutte le parti che si basano su meccanismi che verranno rimossi, come le macro. Un periodo di coesistenza fra Scala 2 e 3 sarà probabilmente inevitabile, anche se si cercherà di mantenerlo il più breve possibile. Anche per gestire questo tipo di problematiche Pretty ha dimostrato il funzionamento di Fury, un nuovo tool di build con cui esprimere processi di costruzione del software particolarmente articolati in termini di configurazione, compilatori usati e gestione delle dipendenze. Fury supporta anche la dipendenza direttamente dai sorgenti, ritenendola necessaria durante il periodo di coesistenza, per permettere ai mantainer delle librerie di rilasciare aggiornamenti senza generare dei rilasci binari. Considerando l’esperienza di altri ambienti (come per esempio Go, dove la gestione delle dipendenze è esclusivamente attraverso i sorgenti, ma con problemi di coordinamento e riproducibilità delle build estremamente elevati) sarà un argomento di certo molto dibattuto e dalla cui corretta soluzione dipenderà molta dell’ergonomia dell’ecosistema di Scala 3.

Il futuro di Scala è colorato!

Di seguito a Pretty, ha preso il palco Miles Sabin che ha presentato, non senza qualche difficoltà tecnica, il superamento dell’attuale implementazione delle macro a cui potrà lavorare durante la sua prossima collaborazione con lo Scala Center. Sabin ha spiegato di essersi fatto un’ottima opinione delle possibilità fornite da Dotty e dal nuovo sistema dei tipi, e ha illustrato come sta collaborando per portare le innovazioni teoriche necessarie per rendere la metaprogrammazione in Scala più efficace e soprattutto più robusta e sicura.

Dopo il pranzo, nell’aula workshop si è lavorato sullo stack Typelevel con Luka Jacobowitz, mentre in sala plenaria sono state presentate le efficienze che Uber ha realizzato introducendo Scala e Spark nel mix tecnologico della sua catena di calcolo dei modelli Machine Learning. Johan Andren ha poi presentato lo stato dello sviluppo di Akka Typed, che risolve l’annoso problema della non-tipizzazione dei messaggi Akka. Ovviamente, la soluzione ha un costo: si devono abbandonare quei metodi che permettono di riferire ad un attore in modo non controllabile in sede di compilazione (come la ricerca dell’ActorRef per path) a favore di una suddivisione dell’ActorSystem in aree omogenee dal punto di vista del protocollo. Il risultato è molto elegante e permette finalmente di controllare il tipo dei messaggi ricevuti dall’attore; tuttavia la soluzione è ancora (molto) sperimentale e soprattutto non copre alcune aree estremamente attraenti nella pratica (Akka Persistance prima fra tutte) che sono quelle che maggiormente beneficerebbero dalla disponibilità di questo sistema.

La conferenza si è chiusa con gli ultimi due interventi in sala plenaria: Fabio Labella ha spiegato i vantaggi della monade IO implementata da Cats. A concludere, Daniela Sfregola ha coperto l’indisponibilità di un relatore con una revisione del suo talk sulla generazione di dati casuali per i test, aggiornata alle ultime novità di Magnolia per la riduzione della dipendenza dalle macro e del tempo di compilazione.

Luci ed Ombre

Scala Italy 2018 non può essere definita se non come una conferenza di luci e ombre.

Quello che è in realtà in ombra è il pubblico: si ha la sensazione che la comunità non stia crescendo, anzi sia ferma sempre sulle stesse facce; non è così difficile conoscere (se non addirittura aver lavorato o collaborato con) molti dei partecipanti. Sembra che la partecipazione a questo evento, che dovrebbe essere il raduno della comunità che in Italia lavora con Scala tutti i giorni, sia di anno in anno sempre più limitato ad una cerchia che si stringe, senza un reale ricambio. Probabilmente è necessario riprendere una nuova spinta divulgativa nelle conferenze più “generaliste” (ovviamente il CodeMotion è il primo nome che viene in mente), organizzando qualche Scala Spree o partecipando a simili eventi comunitari, contattando le università per invitare all’uso di Scala nei curricula più avanzati di programmazione funzionale e concorrente.

Non mancano comunque le luci, perché l’Italia si conferma una destinazione attraente per i principali nomi della comunità: gli organizzatori riescono sempre a portare nel Belpaese grandi personaggi e, con alchimie di calendario, riuscire ad avere qualche annuncio importante in tempo per la conferenza. Fra le presentazioni dei relatori c’è sicuramente un argomento di interesse per chiunque, e l’organizzazione sempre impeccabile e le ottime location la rendono una conferenza piacevole a cui partecipare. Anche la scelta di organizzare due sole track, di cui una di workshop, dà la possibilità di partecipare alla conferenza con soddisfazione senza rischiare che due talk interessanti condividano lo stesso posto in agenda.

Non c’è più bisogno di dimostrare la validità tecnica di Scala o il suo ruolo in progetti di grande successo (Kafka, Spark e molti altri); c’è bisogno di apertura, di attirare nuove energie e fare divulgazione, di raggiungere un pubblico più ampio per riprendere l’energia e lo spunto di qualche anno fa.

2 Posts

Programmo da un sacco di tempo ed ho attraversato molti linguaggi (per Perl è rimasto un posto speciale), ma da un po' mi occupo sopratutto di Java e Scala. Ho fatto il developer e l'architect per Visionest e Warda, dove ora sono Sw Dev leader & Scientist; vale a dire, qualcosa di molto simile a Mr. Wolf. Studio cose, vedo gente, risolvo problemi.