ActiveX o non ActiveX? nativeclient!


Ogni tanto accade. E` una sensazione di deja-vu, di quelle di cui non ti liberi subito e che ti fanno persino saltare con la mente ad anni prima. Mi è capitato così con nativeclient, una nuova tecnologia messa a punto da Google e la cui descrizione è in questo denso articolo tecnico, invero di non facilissima lettura per i non addentro ai lavori.

Ricordo quando è stata pubblicizzata la tecnologia ActiveX di Microsoft, anche se in seguito hanno battezzato con “Active” qualsiasi cosa (la tendenza del giorno è simile con la parola “Live”). In pratica, essa consente di scrivere componenti software in svariati linguaggi, che sono poi istanziabili secondo le regole del Component Object Model (COM). I programmatori la adorano quando funziona, poiché si scrive relativamente poco codice per acquisire funzionalità anche molto complesse. La odiano in presenza di bug, in quanto è opaca per progetto.

L’idea di Microsoft dell’epoca era quella in vigore ancora oggi: il browser è troppo lento! Perché non inviare allora del codice Intel x86 nativo, da eseguire in un ambiente protetto, sandbox, per ottenere dentro a un browser prestazioni da applicazione installata in locale? Fantastico sulla carta, soprattutto perché consentiva di mettere un freno alle nascenti ambizioni degli applet Java (circa 1997). La sicurezza era demandata (scaricata) all’utente, come nella maggior parte dei prodotti Microsoft ancora oggi (UAC, dove sei?). Gli oggetti ActiveX sono “marchiati” con un sistema di firma digitale, l’utente sceglie se utilizzarli o meno.

Fu così che pochi giorni dopo che fu svelato il novello Internet Explorer che li utilizzava, un ActiveX dimostrativo realizzato da ricercatori nel campo della sicurezza era in grado di spegnere il vostro computer a distanza, invocando semplicemente le funzionalità di shutdown di Windows. A quanto pare, mettersi uno sconosciuto in casa non è quasi mai una buona idea, potrebbe trafficare con qualsiasi parte del vostro appartamento o fare brutte cose alla vostra persona.

Google si trova in una posizione interlocutoria dopo il rilascio di Chrome. C’è un testa a testa con Mozilla Firefox, basato sul proprio motore Gecko, e gli altri browser basati su WebKit per la supremazia sul rendering veloce di siti e sull’esecuzione di codice dinamico in essi contenuto. C’è un limite a quanto veloci si può diventare, senza passare al compilato. E Google è la prima a passare il limite.

Abbracciando ed estendendo i concetti visti per Chrome, in cui un sito può essere ospitato in un sandbox per motivi di sicurezza (un processo separato) e comunicare con l’ambiente ospite (il browser stesso) mediante un opportuno protocollo, Big G propone ora qualcosa che neanche lontanamente è assimilabile a ActiveX, se non per il fatto di essere realizzato in codice nativo Intel.

L’idea è abbastanza seducente: prendi un qualsiasi progetto, fai un paio di cambiamenti ai Makefile e forse anche al codice (sembrerebbero molto ridotti) e ricompila il tutto con una versione modificata di gcc. Se non si ricorre a chiamate di sistema che non siano fra le 46 previste e non si usano file (e un tot di altre ragionevoli limitazioni), è davvero possibile ottenere velocità da applicazioni native all’interno di una finestra del browser, almeno entro qualche percento dalle applicazioni originali. Qualche piccola modifica a Quake lo dimostra, come è possibile apprezzare sul sito.

Gli accorgimenti utilizzati per impedire che un’eventuale creatura malvagia, o anche un bug di implementazione, fuoriesca dalla gabbia (o dalle gabbie, visto che ce ne sono due – una interna e una esterna) sono davvero tanti e raffinati. E l’approccio è legato a filo doppio con l’architettura dei processori Intel, visto che utilizza la gestione segmentata della memoria al posto della convenzionale “flat” a 32 bit, roba che non si vedeva dai primi anni ’90. Sebbene sviluppato con Linux in mente, alla fine la parte che sarebbe da portare per i vari sistemi operativi non è il binario che si scarica, ma la parte di sandbox: invero molto piccola.

Solo il tempo ci dirà se tale tecnologia è valida come sembra. A me la differenza tra applicazioni web e applicazioni da installare su un sistema operativo sembra diventare sempre più sfumata: il terrore di Microsoft…