Team Digital Transformation

Development Ruby, Rails, Open source, CMS

logo Team Digital Transformation

Il Team per la Trasformazione Digitale è una struttura commissariale istituita dalla Presidenza del Consiglio dei Ministri, capitanata da Diego Piacentini (Vice President International di Amazon). Nasce per avviare la costruzione del “sistema operativo” del Paese, una serie di componenti fondamentali sui quali costruire servizi più semplici ed efficaci per i cittadini, la Pubblica Amministrazione e le imprese, attraverso prodotti digitali innovativi.

Il Team Digitale ha pubblicato e gestisce la piattaforma Developers Italia, all’interno della quale vengono progressivamente iniziati e condotti gli sviluppi di software open source e documentazione tecnica a supporto dello sviluppo dei servizi pubblici digitali italiani.

Open Source + Open Government, con Ruby!

Cantiere Creativo si è aggiudicato un appalto per la realizzazione software in linguaggio Ruby per il Team Digitale.

Il lavoro, che ha coinvolto molti dei nostri sviluppatori, è durato alcuni mesi e ci ha permesso di contribuire alla realizzazione di Gemme (librerie Ruby) per l'interazione con alcuni dei più ambiziosi progetti del Team Digitale, come SPID e PagoPA.

Inoltre sono stati realizzati applicativi stand-alone come l'editor per lo standard publiccode.yml ed il generatore di siti statici Agave CMS.

Tutto il software realizzato è stato rilasciato sull'account Github di Developers Italia rigorosamente con licenze open source.

Cos'è SPID

SPID, il Sistema Pubblico di Identità Digitale, è il sistema che permette di accedere a tutti i servizi online della Pubblica Amministrazione con un'unica Identità Digitale.

Cantiere Creativo ha realizzato la gemma spid-ruby, un middleware Rack che astrae la comunicazione con un Service Provider SPID, fornendo un'interfaccia semplificata per la gestione dell'autenticazione SPID con gli Identity Provider certificati.

Per semplificarne l'integrazione e l'utilizzo all'interno del framework Ruby on Rails, è stata inoltre riscritta la gemma spid-rails che funziona come un wrapper attorno a spid-ruby.

Allo stesso modo è stata realizzata la gemma spid-sinatra da utilizzare col framework Sinatra.

Cos'è pagoPA

pagoPA é un sistema di pagamenti elettronici realizzato per rendere più semplice, sicuro e trasparente qualsiasi pagamento verso la Pubblica Amministrazione.

Secondo le linee guida emesse dall’Agenzia per l’Italia Digitale, esso diventerà il sistema comune implementato da ogni Ente Pubblico per accettare pagamenti da cittadini ed imprese.

Il lavoro svolto da Cantiere Creativo ha riguardato l'implementazione di un wrapper Ruby attorno alle API SOAP, sotto forma di una gemma che semplifica la gestione delle chiamate e relative risposte tra Ente Creditore e sistema pagoPA: pagopa-soap-ruby.

Cos'è publiccode.yml

Secondo l'art. 69 del Codice dell’Amministrazione Digitale, quando una Pubblica Amministrazione italiana sviluppa o commissiona software, è tenuta a pubblicarlo su un repository con licenza open source al fine di consentirne il riuso da parte di altre amministrazioni.

Questi software risultano spesso male indicizzati e raramente catalogati: publiccode.yml, assieme ad altri strumenti, punta a risolvere questi problemi.

publiccode.yml è infatti uno standard di metadati il cui scopo è raccogliere e strutturare le caratteristiche di un software, generando un file da aggiungere al repository, che può essere interpretato da un crawler per permetterne la catalogazione, piuttosto che essere letto da un dipendente di un Ente Pubblico per capirne le potenzialità.

Cantiere Creativo ha realizzato l'editor che consente di compilare il file publiccode.yml, un pratico form interattivo tramite il quale inserire facilmente tutti i dati ed importare/esportare il file generato. Il codice è ovviamente disponibile su Github.

Contestualmente è stato realizzato anche un software Ruby per la definizione dello standard (oggi deprecato) ed un tool che si integra col crawler di Developers Italia e si occupa di aprire automaticamente issues su Github quando viene rilevato un file publiccode.yml non valido.

Cos'è Agave

Il progetto più imponente realizzato durante l'appalto è stato sicuramente Agave CMS.

Agave è un Content Management System (CMS) per siti statici, pensato per consentire ad una Pubblica Amministrazione di realizzare e mantenere un sito web velocissimo e super sicuro.

Il backend amministrativo è completamente separato dal frontend, il quale viene generato e pubblicato sotto forma di files html statici. Gli admin possono sia definire da zero la struttura di un sito, sia importare (ed esportare) la struttura "tipo" di un sito web, come ad esempio quello di una scuola o di un comune. In tal proposito, il Team Digitale sta definendo il design e la struttura di siti per scuole e comuni, in base alle le linee guida del design per i servizi digitali della PA.

Agave CMS genera il frontend del sito sfruttando il sistema di templating Jekyll. Come tutti i software PA, anche i temi e i template Jekyll realizzati da altri Enti Pubblici possono essere condivisi e riutilizzati open source.

La pubblicazione avviene tramite un sistema di build che genera le pagine statiche del sito web unendo i dati con il template: il risultato è un sito che può essere ospitato su un qualsiasi web server, senza limitazioni dovute al supporto di linguaggi di programmazione, versioni delle librerie, sistema operativo, ecc.

Agave CMS offre comunque un web server integrato, capace di hostare il sito autonomamente; in alternativa la build del sito può essere automaticamente pushata via ftp o sftp.

Tutti i componenti di Agave sono racchiusi in container Docker, orchestrati con Docker Compose: ciò consente ad una Pubblica Amministrazione di installare ed eseguire on-premises il CMS su un qualsiasi server in modo estremamente rapido e senza la necessità di complicate configurazioni.

Agave è disponibile su Github, ulteriori dettagli sul suo funzionamento sono descritti nella documentazione.

Il team di Cantiere del progetto

Joe Yates

Joe Yates

CTO, Area Manager
David Librera

David Librera

Software Engineer
Lorenzo Ponticelli

Lorenzo Ponticelli

Mobile & Web Developer
Silvio Relli

Silvio Relli

Responsabile di produzione, Developer
Damiano Giacomello

Damiano Giacomello

Developer
Matteo Manzo

Matteo Manzo

Developer
Domenico Garofoli

Domenico Garofoli

Developer
Matteo Papadopoulos

Matteo Papadopoulos

COO, Responsabile Operativo
Stefano Verna

Stefano Verna

Head of DatoCMS
I nostri progetti ti convincono?Contattaci