Polymer e i componenti web sono argomenti molto attuali e, poiché questo ecosistema è in rapida evoluzione, spesso può essere difficile per gli sviluppatori stare al passo con tutte le ultime modifiche.
Nel suo intervento al Chrome Dev Summit, Matt McNulty, Engineering Manager del team Polymer, ha spiegato che cos'è Polymer e ha anche delineato la roadmap per Polymer 1.0.
Che cos'è Polymer?
Innanzitutto, che cos'è esattamente Polymer?
Polymer è una libreria che ti aiuta a creare elementi e app da componenti web. I componenti web sono un insieme all'avanguardia di nuovi standard che consentono agli sviluppatori di estendere il vocabolario HTML con i propri elementi personalizzati.

Poiché i componenti web sono progettati per essere un nuovo elemento primitivo per il browser, significa che sono molto potenti, ma anche di basso livello e il loro utilizzo richiede un bel po' di codice.

Polymer semplifica il lavoro con i componenti web semplificando la sintassi. Riduce la quantità di codice boilerplate che devi scrivere e aggiunge uno stile dichiarativo, quindi creare componenti web è facile come scrivere HTML.
The Polymer Experiment
Polymer è nato come esperimento per verificare se era possibile eseguire il polyfill degli standard dei componenti web e ricevere feedback dagli sviluppatori prima che queste tecnologie fossero implementate in tutti i browser. Man mano che un numero maggiore di sviluppatori ha iniziato a utilizzare Polymer, questo è passato da essere solo polyfill a una vera e propria libreria ricca di funzionalità di produttività (associazione dati, osservatori delle modifiche degli attributi, ricerca automatica dei nodi e così via). Ma tutti gli esperimenti hanno risultati, quindi come è andata?

Sebbene molti sviluppatori abbiano dichiarato di apprezzare l'espressività e i vantaggi in termini di produttività del lavoro con i componenti web in Polymer, hanno anche espresso dubbi sul rendimento e sulla complessità complessiva.
Mette in evidenza una tensione naturale che Polymer ha sempre avuto: essere un esperimento per far avanzare la piattaforma web, ma anche creare qualcosa di adatto alla produzione su cui gli sviluppatori possono fare affidamento.
Prossime modifiche
Il team di Polymer ha esaminato attentamente ogni funzionalità della libreria con l'obiettivo di creare una versione più snella e pronta per la produzione che gli sviluppatori possano utilizzare in tutta sicurezza.
Livelli
Polymer è stato sottoposto a refactoring in una serie di livelli. Le funzionalità di base sono veloci ed essenziali, mentre quelle più avanzate saranno attivabili. Per la maggior parte dei casi d'uso, le funzionalità di base dovrebbero soddisfare le esigenze degli sviluppatori.

Association of Data semplificata
Anche il sistema di associazione dei dati di Polymer è stato ottimizzato in modo significativo per le prestazioni. Seguendo l'approccio a più livelli, l'associazione bidirezionale è ora attivabile, mentre per impostazione predefinita sono attive le associazioni unidirezionali. Inoltre, i tipi di proprietà pubblicati sono stati esplicitati e una modifica della proprietà ora attiva un evento per consentire agli elementi di librerie diverse di comunicare più facilmente.

DOM shadow più snello
Il polyfill Shadow DOM è un'incredibile impresa di ingegneria. È stato progettato per essere completo e conforme alle specifiche, il che è importante per testare a fondo le primitive della piattaforma, ma purtroppo introduce una serie di colli di bottiglia del rendimento per le funzionalità non utilizzate da Polymer.
La prossima release di Polymer adotterà un approccio diverso, utilizzando un livello in stile shim che esegue il polyfill solo di ciò che è necessario per Polymer.

Il polyfill esistente continuerà a essere disponibile per i componenti web generici non Polymer.
Passaggio a webcomponents.org
A proposito di polyfill, anche questi avranno una nuova casa. Al momento, molti sviluppatori sono confusi sulla relazione tra Polymer e componenti web. Alcuni pensano che per utilizzare i componenti web sia necessario utilizzare tutto Polymer, quando in realtà sono necessari solo i polyfill.
Per chiarire ulteriormente questa distinzione, i polyfill vengono spostati su webcomponents.org e ora sono stati rinominati in webcomponents.js
.

Questo passaggio è progettato per aiutare altri autori di librerie a sfruttare i polyfill senza alcuna confusione. Il team di Polymer continuerà a contribuire ai polyfill, ma ci auguriamo che questa modifica li renda una risorsa più condivisa per la community.
Risultati
Quali sono i risultati di tutte queste modifiche?
Velocità
Su Chrome, Polymer ora è 5 volte più veloce, mentre su Safari è stata registrata un'accelerazione di 8 volte.

Dimensioni file
Le dimensioni del file sono state ridotte anche dell'87%, da 123 KB a 15 KB (6 KB con compressione gzip).

Roadmap
Nella prossima release ci saranno alcune modifiche che comportano un errore nell'API, indicate dal nuovo numero di versione (0.8), ma il team vuole chiarire che non si tratta di una riscrittura. Il passaggio del progetto corrente da Polymer 0.5 a 0.8 dovrebbe essere abbastanza semplice.
Il team di Polymer ha anche delineato una roadmap per fornire agli sviluppatori maggiori informazioni sulle release imminenti.

L'anteprima 0.8 è ora disponibile come ramo su GitHub (anche se è ancora in fase di sviluppo molto attivo e manca di documentazione). La versione beta ufficiale 0.9 è prevista per il primo trimestre del 2015, mentre la 1.0 dovrebbe essere disponibile nel secondo trimestre.
L'esperimento è terminato
Con tutte le recenti modifiche a Polymer, il team che si occupa del progetto sta gettando le basi per fare in modo che i componenti web diventino parte integrante dello stack di ogni sviluppatore. Se non hai dimestichezza con i componenti web, è il momento giusto per dare un'occhiata e familiarizzare con queste tecnologie trasformative. Se utilizzi già i componenti (e Polymer), il futuro è davvero roseo. Tieni d'occhio il blog di Polymer per tutti gli aggiornamenti più recenti e iscriviti alla mailing list di Polymer per eventuali domande o commenti. Buon hacking!