Nel mese di ottobre, si è svolta a Francoforte il Liferay European Symposium, giunto alla sua terza edizione. In questa occasione, è stata presentata ufficialmente Liferay 6 EE. Pubblichiamo un resoconto su questa importante conventio, che ha visto tra l‘altro piccola ma agguerrita partecipazione italiana.
Francoforte ha ospitato la terza edizione del Liferay European Symposium, evento caratterizzato dalla presentazione ufficiale di Liferay 6 EE. Due giorni di sessioni tecniche, sessioni business e workshop per apprendere al meglio le potenzialità del portale, analizzare casi di studio e approfittare della collaborazione degli sviluppatori che, in prima persona, mettono a disposizione la loro conoscenza ai partecipanti.
Grande eterogeneità di provenienza tra gli oltre 300 partecipanti, con una piccola ma importante percentuale di pubblico italiano.
What’s new?
L’apertura dell’evento è stata affidata a Bryan Cheung (CEO Liferay USA) e a Jorge Ferrer (Liferay Spain).
Le prime sessioni generali hanno evidenziato l’intenzione del board di dare al prodotto un forte imprinting sul concetto di social network: diventano protagonisti la condivisione dei contenuti e gli strumenti per la fruizione degli stessi in un contesto di community.
Figura 1 – La due giorni a Francoforte ha fornito un quadro sulle novità di Liferay.
Gli obiettivi principali della nuova release sono
- il miglioramento globale dell’usabilità e dell’interfaccia
- l’introduzione di migliorie e implementazioni ispirate a casi reali e richieste da parte della community
- la ricerca di una massima conformità agli standard
Dal punto di vista prettamente tecnico è importante segnalare la presenza e il supporto di nuovi e potenti framework e la semplificazione per le procedure di installazione in contesti cluster e comunque di dimensioni elevate.
Vediamo nel dettaglio che cosa e in che termini è migliorato in Liferay 6 EE.
Migliorie funzionali
Viene introdotto per la prima volta out of the box il concetto di wokflow, applicabile a tutti i portlet di contenuto (WebContents, Forum, Blogs, …) e configurabile a livello di community o organization. Per velocizzare il processo produttivo è prevista la possibilità di utilizzare flussi di lavoro predefiniti per i casi d’uso più comuni. L’implementazione di default è basata su Kaleo e gode del vantaggio di offrire il supporto per il disegno grafico dei processi all’interno di Liferay IDE, ma è alternativamente possibile utilizzare diversi workflow engine quali JBPM e Intalio BPM.
La condivisione dei contenuti viene estesa a livello di portale: di conseguenza i repository di contenuti globali possono essere pubblicati in tutte le community e organization.
Strutture e contenuti degli asset di portale possono essere modificati mediante campi personalizzati che consentono di estendere il dominio dati dei componenti senza modifiche alla base dati; tutti i custom field aggiunti sono tipizzabili e vengono automaticamente gestiti dalla interfaccia utente, validati e indicizzati al fine di estendere ulteriormente le funzionalità di ricerca.
Completamente nuova è la funzionalità di creazione dei modelli: è possibile creare un modello di pagina o un modello di un intero sito e applicarlo a una pagina o a una community, il che risulta fondamentale per velocizzare i tempi di publishing ed è sicuramente una novità di grande valore per l’utilizzo da parte di utenti principianti.
Usabilità e accessibilità
Il portale è stato adeguato agli standard WCAG 2.0 di W3C e ai requisiti di accessibilità richiesti dalla pubblica amministrazione. Sempre in un’ottica di accessibilità, il nuovo rich text editor è basato su CKEditor e il nuovo tema di default è stato ingegnerizzato senza l’utilizzo di tabelle, ed è già pronto per le novità di HTML5 e CSS3.
Il motore JavaScript del portale è ora implementato con AlloyUI [1], un framework costruito su base YUI3 di Yahoo!. Tutte le funzionalità del framework sono accessibili attraverso un set di API JavaScript e integrate in una libreria di tag per lo sviluppo di portlet custom.
Il dock e i comandi di amministrazione sono stati riorganizzati in una toolbar e in generale sono stati rivisti e migliorati in termini di usabilità diversi portlet quali Image Gallery e Document Library per quanto riguarda l’upload di file, Forum, Blog e Wiki nell’ottica di facilitare i collegamenti tra pagine e contenuti multimediali.
Migliorie della piattaforma
Gli interventi per migliorare le prestazioni di Liferay 6 hanno permesso di velocizzare la renderizzazione delle pagine, di ridurre il consumo di memoria e nel complesso il risultato è una eccellente user experience. L’intero portale e i componenti di cui è costituito sono monitorabili via JMX, così da poter identificare colli di bottiglia o più semplicemente criticità sulle personalizzazioni e/o nuove implementazioni introdotte.
A un primo test effettuato sulle nostre workstation di sviluppo, la versione distribuita su Tomcat con database Hypersonic embedded ha restituito risultati notevoli in termini di reattività: rispetto alla versione 5.2.3, il miglioramento è netto e percepibile già a occhio nudo e nell’esperienza diretta dell’utente, senza la necessità di dover scomodare sofisticati strumenti di profilazione.
Nell’ottica di monitorare il portale, è possibile fare uso di strumenti di audit e di generazione di report personalizzati: l’evoluzione e la crescita di una community, una classifica dei documenti più scaricati, e così via.
Estensibilità e integrazione
Liferay IDE [2] è disponibile come plugin di Eclipse, consente il pieno controllo del portale e facilita sviluppo e deploy di portlet, hook, layout template, temi ed ext environment, che in questa nuova versione è stato rivisto e alleggerito; l’IDE consente inoltre di importare progetti già esistenti, facilita la generazione di servizi di business con pieno supporto del Service Builder e velocizza l’installazione di portlet “hot deploy”.
L’implementazione dello standard OpenSocial container consente a Liferay 6 di erogare e fruire di servizi OpenSocial compliant: è possibile, ad esempio, sviluppare un portlet e pubblicalo in un ambiente Open Social come LinkedIn, MySpace, Netlog, Yahoo!; oppure, in maniera speculare, il portale può essere popolato da gadget forniti da terze parti (un Google Gadget ad esempio).
Figura 2 – La grande attenzione da parte dei creatori di Liferay anche agli aspetti sociali si è concretizzata nell’accoglimento di molte indicazioni e suggerimenti da parte della community.
Grande attenzione è stata posta nell’introduzione di un motore di SocialEquity il cui compito è quello di “sorvegliare” le applicazioni “social” disponibili nella distribuzione: Blog, Wiki, Message Board, ad esempio, sono soggetti a una supervisione da parte del motore, che permette di costruire automaticamente un ranking sui membri della community e ottenere un feedback sulla qualità delle contribuzioni.
Web marketing out of the box: è possibile dotare i portlet di intelligenza artificiale per proporre contenuti e suggerimenti in base al profilo dell’utente.
Nell’ottica di erogare contenuti multimediali, sono state introdotte alcune migliorie in termini di integrazione di asset multimediali e gestione di streaming server.
Sul piano del content management e della gestione documentale è stato aggiunto il supporto verso CMIS e Atom Publishing Protocol e il supporto nativo multi repository: Alfresco CMS, EMC Documentum, Microsoft SharePoint possono essere usati come sistemi di storage a supporto del Document Library.
Tra le funzionalità di amministrazione del server, viene offerta la possibilità di migrare a costo zero tra diversi database, nonche’ il supporto di diverse tipologie di document repository (FileSystem, CMIS, JCR, etc.).
Vaadin framework
L’ultima sessione del primo giorno è stata dedicata a Vaadin [3], un framework per la costruzione di web application “that look great, perform well and make you and your users happy“.
“Il web è morto” dicono molti: seguendo il mutamento di paradigma in atto, cioè il passaggio da “sito” ad “applicazione”, Vaadin si propone di offrire allo sviluppatore la possibilità di costruire applicazioni che vivono dentro un browser, concentrando i propri sforzi sulla business logic, senza dover investire tempo e denaro nell’implementazione delle cosiddette tecnologie web (HTML, JavaScript).
È importante sottolineare come questo prodotto sia orientato proprio alla creazione di web application o, come è più corretto dire, di Rich Internet Application: Vaadin nasce non con l’intento di fornire uno strumento per creare siti web, ma con l’obiettivo di consentire un processo produttivo per il quale i limiti derivanti dalle restrizioni di una user interface non possano interferire con quelli che sono i requirement dei processi di business.
Costruito sulla base di Google Web Toolkit, si compone di una libreria di widget costituiti da un componente server side e da una controparte client side, con al quale l’utente interagisce. Il protocollo di comunicazione tra i due layer è UIDL (User Interface Definition Language), un linguaggio basato su JSON; le interazioni avvengono in maniera asincrona su HTTP o HTTPS.
La personalizzazione dell’interfaccia utente avviene per mezzo di temi costituiti da collezioni di CSS e template HTML: ogni elemento che compone il widget ha la possibilità di essere personalizzato mediante un comune foglio di stile.
La costruzione dell’interfaccia e la gestione degli eventi avvengono mediante una sintassi estremamente familiare agli sviluppatori che abbiano avuto modo di costruire interfacce grafiche utilizzando tecnologie quali Swing, AWT o SWT: la gestione degli eventi segue il pattern Observer e, a differenza della classica programmazione di applicazioni web, l’interazione tra componente client e server avviene in maniera del tutto trasparente. L’evento, infatti, viene prima processato client-side, poi trasferito alla controparte server-side del widget in modo asincrono su HTTP/S e infine inviato agli eventuali listener associati.
Quanto descritto finora è ovviamente applicabile al concetto di portale, in quanto Liferay supporta l’esecuzione di applicazione Vaadin come portlet.
Liferay Foundation
La sessione di chiusura del secondo giorno ci ha raccontato la nascita di Liferay e il “chi siamo” della Liferay Foundation.
La filosofia Open Source e una forte propensione alla condivisione delle conoscenze è il punto di partenza delle decisioni dell’intero team di sviluppo: noi stessi ci siamo resi conto durante le sessioni tecniche di come la maggior parte delle novità di Liferay 6 siano frutto di richieste della community o semplicemente si tratti di implementazioni di terze parti integrate nella distribuzione.
Al di là dell’aspetto “di facciata” del team, è evidente la forte coesione tra tutti i membri e come il risultato ad oggi ottenuto sia frutto di decisioni svincolate da partnership e business investors.
Durante le pause tra una sessione e l’altra tutto lo staff si è rivelato sempre estremamente disponibile al dialogo e al confronto, su tematiche commerciali piuttosto che tecniche.
Conclusioni
Personalmente ritengo l’esperienza estremamente formativa: la quantità di informazioni fagocitata in due giornate è stata veramente notevole tanto che probabilmente, per la troppa carne al fuoco, da un punto di vista strettamente tecnico non è questa la sede per accrescere le proprie conoscenze sul prodotto; invece, dal punto di vista commerciale e sociale, ritengo che il Liferay Symposium di Francoforte sia stata un’occasione estremamente importante per comprendere come Liferay interagisce con i propri partner e per dare un volto agli avatar con i quali abitualmente scambiamo informazioni su forum e blog.
Riferimenti
[Liferay] Il sito, con la nuova versione
[1] AlloyUI
[2] Liferay IDE
[3] Vaadin framework
Classe 1981, tradisce lo studio dell‘elettronica per dedicarsi alla grande passione di sempre: l‘informatica. Dal 2002 inizia una carriera professionale in ambito bancario, acquisendo nozioni sullo sviluppo di applicazioni web su piattaforma J2EE con interfacciamento a sistemi mainframe. La specializzazione nel settore prosegue con la progettazione ed estensione di architetture SOA e l‘integrazione di applicazioni banking, insurance e financial services in ambiente portal, familiarizzando con le specifiche JSR 168 e 286. Dal 2009 si occupa della direzione tecnica dei team di sviluppo presso D‘vel s.n.c. conciliando l‘attività di coordinatore alla sempre e inesauribile voglia di scoprire nuove teconolgie e "giocare con il codice".