Non è moltissimo che mi occupo di Web, ma devo dire che questa tecnologia ultimamente mi sta creando molti dubbi. Finché uso il Web, ovvero HTML e browser, per leggere il giornale, aggiornare il mio blog, ed in genere per accedere a contenuti testuali o scaricabili va tutto bene, anzi, è uno strumento magnifico. Le mie perplessità iniziano quando voglio utilizzare questa tecnologia per realizzare delle applicazioni.
Quando, ai tempi della scoperta della ruota, realizzavo applicazioni, il sistema di sviluppo ed il sistema di produzione erano esattamente gli stessi. Anzi, vi dirò era proprio la stessa macchina. Parliamo dei tempi dei terminali stupidi, CICS, TSO per intenderci con una semplice (non la definirei “usabile”), ma efficace interfaccia carattere.
Con l’avvento di Unix sui mini server si passò al C e la sua variante ad oggetti. Stesso OS e stessa interfaccia “grafica” sugli ambienti sviluppo e produzione, ma con il problema di dover ricompilare e riverificare il tutto ogni volta che si doveva installare l’applicativo, specie su macchine differenti e/o con differenti UNIXlike.
Poi fu Java.
Java, alla sua uscita, sembrava promettere bene. Finalmente un linguaggio in cui un intero era un intero, senza preoccuparmi di sapere di quanti byte parliamo, con stringhe in unicode, ecc, ecc ma sopratutto con una bella macchina virtuale che mi toglieva di mezzo il problema di adattare l’applicazione all’ambiente (eccetto per l’esecuzione della macchina virtuale).
Durò poco però. In effetti, ad ogni modifica del software occorreva come per ogni client – server la modifica dell’applicazione con tutto quello che ne comportava. E quando si parlava di migliaia d’installazioni da gestire è chiaro che la cosa non era più proponibile.
E finalmente arrivò il Web. La mia applicazione a portata di click. Che bello!
Nessuna installazione, il software gira lato server. A ri-che bello!
Un’interfaccia grafica, tutta colorata. Ma che bello, che bello, che bello!
Ma dov’è la fregatura?
I limiti del web li vedi non appena inizi ad usarlo sul serio per applicazioni complesse.
Non c’è uno status dell’applicazione garantito. L’interfaccia lato client realizzata con Javascript crea un bel po’ di problemi di stabilità e di compatibilità; non parliamo poi del modo di gestire la garbage collection quando si usa AJAX che ti divora memoria come un coccodrillo a digiuno (se non gestita a dovere).
Ed infine, lo sappiamo tutti, la visualizzazione dei contenuti dipende dal browser che si sta utilizzando (quando funziona, perché spesso non funziona affatto!).
Come si può ovviare a questo? Con il solito vecchio metodo: investendo tempo e soldi.
Dopo qualche progetto in cui si è iniziato ad usare il Web, le aziende hanno capito che trasformare (ma è meglio dire forzare) il Web per avere quello che si era “perso” con il client server costa molto tempo e soldi ed il risultato può essere deludente, specie se si è scelto un fornitore scadente per cercare di risparmiare qualche soldino, oppure scelta una strada sbagliata per colpa della solita legge dell’IT per cui “chi lo comanda non lo capisce e chi lo capisce non lo governa”.
Dopo essere state scottate da vari progetti abortiti (leggi soldi spesi senza averne un ROI) le aziende hanno da prima preso decisioni drastiche (aboliamo javascript, aboliamo i css, ecc), e poi hanno preso una decisione finale, efficace ma più conservativa per ovviare ai problemi di compatibilità, è cosi nata l’iniziativa: “adotta un browser”. In pratica, poiché di testare e ritestare tutto con tutti i browser e con tutte le versioni dello stesso può diventare un lavoro oneroso (anche se qualcuno lo fa fare a terzi utilizzando librerie “certificate” che ti garantisco una certa stabilità di comportamento), si è pensato bene di imporre in azienda l’utilizzo di un solo browser con una ben determinata versione. Stessa cosa per i filmati, si vedono con quel plug-in e basta.
Sembrerebbe un’ottima soluzione, peccato che così si stiano creando dei veri e propri ghetti in cui chi è dentro è dentro e chi è fuori è fuori. La cosa incredibile è che la stessa ghettizzazione le aziende la trasportano anche sui loro siti ufficiali con la conclusione che o si “azzecca” la versione ed il giusto browser od il loro sito è inutilizzabile.
Altre aziende ancora hanno tagliato la testa al toro e realizzano tutto in flash: la stessa filosofia usata dalle care vecchie Java applet, con gli stessi limiti di allora.
Per non farsi tagliare fuori è scattata allora la contromossa dei browser concorrenti. Il ragionamento è più o meno questo: “Il mio browser non può entrare in quella riserva , quindi facciamo in modo che tutti i browser siano equivalenti , ovvero che offrano tutti la medesima interpretazione della mia bella pagina per ottenere il medesimo risultato e comportamento”. È la famosa “standardizzazione del web” di cui si sta tanto parlando ultimamente. Ma se questo diventerà realtà in che cosa saranno differenti i nuovi “Standard Browser”? In due sole cose, IMHO : velocità d’esecuzione e risorse necessarie.
Io però che sono “vecchio” questo scenario l’ho già vissuto. In pratica si è ritornati a quello che era l’informatica di 20 anni fa, quando vi era la guerra tra compilatori Borland e compilatori Microsoft, su quanto era compatto il codice e quanto era veloce la sua compilazione ed esecuzione.
E se cosi sarà quelli a rimetterci saremo noi: addio innovazione ed addio all’idea originaria d’Internet. Perché? Perché se io vorrò innovare dovrò farlo con l’accettazione di tutti quelli che aderiscono allo standard, che se saranno pronti con i loro prodotti allora accetteranno, altrimenti mi fermeranno fino a che non lo saranno (e lo saranno mai?). A quel punto l’interesse si sposterà, ma è già cominciato a spostarsi, sulle piattaforme di sviluppo, esattamente come ai tempi dei vari compilatori C.
Affinché poi il risultato sia perfetto la stessa cosa si farà a livello di Application Service.
Tutti dovranno offrire le stesse funzioni standard, la cosa poi si ripercuoterà a cascata sui database e sulle funzioni dell’OS. E senza nuovi browser (e tecnologia associata), non ci sarà possibile offrire nuovi tipi di contenuti, nuovi modi di veicolare le informazioni, nuovi modi di fare Business.
Alla fine quello che succederà sarà quello che attualmente abbiamo a livello HW. Sarà prima definito uno standard e solo successivamente si avrà (forse) il rilascio di nuovi browser, inoltre non potranno essere rilasciati nuovi browser che non supportano lo standard.
È il giochino della coperta corta, maggiore affidabilità di comportamento, minori features.
Ovviamente mi potrei completamente sbagliare e potrebbe avverarsi il sogno di tutti gli sviluppatori e gestori. Sappiamo già che esiste la tecnologia (sperimentale) per trasferire un DVD in un paio di secondi da una parte all’altra del pianeta, sappiamo che la ricerca sta creando i presupposti per avere memorie immense e velocissime, CPU straordinarie e quindi teoricamente tutto quello che noi conosciamo potrebbe convertirsi da: “Sto caricando la pagina” in “Sto collegandola all’ambiente virtuale (ovvero ti sto creando a run-time un client sul mio sistema, realizzato come meglio credo) dove sarà gestita la sua richiesta”. Ovviamente poi occorrerà un comune protocollo per far comunicare vari servizi su varie piattaforme, se ancora poi esisteranno varie piattaforme diverse e non saranno tutte comprese in unico “panta-sistema”, ma questo al momento è fantascienza.
Ed infine le cose potrebbero rimanere le stesse per molto tempo ancora, bloccate dalla logica degli interessi contrapposti. Insomma, chi può dire quale sarà il futuro?
L’unica cosa certa è che lavorare con il web costa fatica, occorre imparare molte più tecnologie di prima ed essere sempre aggiornati all’ultima novità, ma di questo il nostro utente/cliente/committente non si renderà mai conto fino a che il prezzo da pagare lo assorbiremo sempre noi.
I precedenti interventi di G.C. sono disponibili a questo indirizzo