Ho parlato giovedì dell’ultima dimostrazione di Mozilla ed Epic che, grazie a una nuova infrastruttura, hanno portato Unreal Engine 3 sul browser senza obbligare l’utente a utilizzare dei plugin. Google ha espresso un discreto interesse verso la tecnologia: asm.js implementa un sottoinsieme di istruzioni in JavaScript che eseguono le app tradotte da C/C++. Native Client (NaCl) e Portable Native Client (PNaCl) prevedono l’opposto ovvero un sottoinsieme di istruzioni in C/C++ da eseguire col browser integrando un plugin dedicato.

Qual è l’approccio migliore? Difficile a dirsi, soprattutto perché esistono pochissimi esempi di applicazioni compatibili con le due piattaforme: OdinMonkey non ha ancora raggiunto il rilascio stabile di Firefox e perciò abbiamo soltanto la dimostrazione di Epic, mentre NaCl/PNaCl sono orientati in massima parte a videogiochi o riproduzioni multimediali. Se Mozilla ha appena presentato Unreal Engine 3 su Firefox, id Tech 3 era già compatibile con Chrome. Mi domando che futuro avranno altre app, come le suite per la produttività.

Molti programmi sono scritti in C/C++. Magari, con elementi compilati in altri linguaggi come Python: se The GIMP e Inkscape fossero eseguibili da Chrome o Firefox, probabilmente non avrei più bisogno di supporto dal sistema operativo. Potrei, quanto a Google, acquistare un Chromebook senza esitazioni e scaricarli dal Chrome Web Store. Una simile transizione è possibile, ma gli sviluppatori non manifestano una particolare affezione per NaCl che è disponibile soltanto su Chrome. Eccetto quelli che realizzano videogiochi, almeno.

Tanto asm.js, quanto NaCl e PNaCl sono open source. Nulla vieterebbe ad Apple o Microsoft d’integrare una delle due infrastrutture su Safari oppure Internet Explorer: io dubito che avverrà mai. La stessa Mozilla ha rigettato l’ipotesi d’implementare NaCl in Firefox, benché sia tecnicamente possibile, e molte altre tecnologie di Google sono rimaste legate a Chrome perché i produttori di browser non le accettano. Qualcosa deve cambiare affinché la previsione di Marco Casario sia realizzabile. Altrimenti, entrambi saranno inutili.

Opera ha appena abbracciato WebKit perciò dovrebbe integrare quanto prima anche NaCl e PNaCl coi relativi servizi. Il più importante è Pepper Plugin API (PPAPI): la tecnologia che permette a Chrome d’eseguire Rich Internet Application (RIA) come Adobe Flash, mutuata da Netscape Plugin API (NPAPI) di Mozilla. Sigle astruse a parte, il “divorzio” di Google da NPAPI ha provocato un deleterio risentimento da parte degli sviluppatori di Firefox. L’interoperabilità fra le applicazioni, un aspetto fondamentale, è diventata impossibile.

Secondo me, finché l’atteggiamento dei produttori resterà questo, non ha molto senso determinare quale soluzione sia la migliore. Se Google implementasse asm.js in Chrome recupererebbe parte della stima che ho perso con la rimozione del supporto ad ActiveSync. Ma, poiché Firefox non permette NaCl e PNaCl, come sviluppatore dovrei escluderli a priori. Il senso delle applicazioni web è nell’ubiquità: obbligato a realizzarne una diversa per ogni browser, tanto varrebbe restare sulle “native” o scriverle direttamente in JavaScript.

Photo Credit: Global Gamers via Photo Pin (CC)