La colpa è di Turing
Questi giorni ho imparato una lezione che non dimenticherò mai per tutta la vita. Ha a che fare con l'interoperabilità in sistemi complessi e su come la responsabilità possa essere inequamente distribuita. Lo faccio con due esempi.
a. Il baco dello URI handler di Firefox (e Trillian): In questo caso l'interoperabilità è tra due browser, rispettivamente IE7 e Firefox. Quest'ultimo soffre di diversi problemi tra cui il fatto che permette il passaggio di linee di comando alquanto pericolose (basta dare un'occhiata qui: http://kb.mozillazine.org/Command_line_arguments). IE7 non lo fa. Secondo qualcuno, se IE7 invoca Firefox passando una linea di comando pericolosa dovuta ad una concatenazione di stringhe non voluta, la colpa è di IE7. Lo stesso qualcuno ha proposto di disabilitare completamente gli URI handler, visto che sono pericolosi (per intenderci che brivido può essere un link ftp!). Perché non spegnere completamente Internet e andare tutti a casa? Perché in Firefox sono troppo pigri per pensare alla sicurezza (Protected Mode? Fra un anno. Forse. Revisione della command line? Che c'è da rivedere?). Almeno quegli altri hanno ammesso le loro colpe, anche se hanno dato addosso a chi ha fatto disclosure della vulnerability senza prima avvisarli (mai cominciare col mettere in pratica le elementari nozioni di sicurezza). Morale della favola: la colpa è di qualcun'altro (di IE7 che incidentalmente invoca gli URI handler in maniera identica a Firefox, di Windows, delle RFC, ecc.).
b. Il mio Network Attached Storage (d'ora in poi semplicemente NAS): il mio NAS[1] è un modello che a Settembre troverà un altro felice proprietario per diversi motivi che hanno a che fare con come il protocollo di comunicazione è stato implementato (male) su un sistema operativo non direttamente supportato. Raymond Chen fa una analisi dettagliata di una manifestazione di questo baco che non ha nessuna soluzione possibile. In pratica Windows chiede al NAS se implementa una certa interfaccia, il NAS risponde affermativamente e Windows (solo da Vista in poi) si limita ad usarla. Peccato che poi in realtà il NAS non la implementi correttamente causando non pochi grattacapi agli ignari utenti. Le soluzioni che Raymond analizza per risolvere la situazione sono le seguenti:
- Fare assolutamente niente. Il baco è nel NAS, spetta al produttore risolverlo. L'utente medio penserà che siccome non succedeva con XP il baco è di Vista.
- Windows deve cercare di capire che il NAS è bacato e avvertire l'utente. L'utente si troverà di fronte alla finestra di dialogo che dice "QUESTO NAS È BACATO: TI SCONSIGLIO DI USARLO". L'utente ovviamente penserà che è un baco di Vista (certo con XP tutto funzionava alla perfezione) mentre il produttore del NAS farà causa a Microsoft
- Vista deve dimenticarsi le nuove API e deve limitarsi ad usare le API vecchie; insomma il progresso di Windows deve essere tenuto in ostaggio da qualcuno che ha implementato (male) un protocollo Windows su una piattaforma non Windows. Come chiedere ai WebMaster di non usare HTML 3.x perché il mio browser che ho scritto in 5 minuti supporta solo HTML 1.x. I produttori di NAS veloci "ottimizzati" per Vista daranno la colpa a Vista. L'utente che ha comprato Vista per avere una rete più veloce penserà ovviamente che è un baco di Vista.
- Creare una configurazione da qualche parte che indica se usare le vecchie API. Quale valore usare di default? Se si usa "vecchie API" di default, tutti i NAS che implementano le nuove API correttamente saranno costretti ad usare le "vecchie API" più lente (si veda il punto 3.): la colpa è di Vista. Se si usa "nuova API" l'utente è costretto a capire cosa c'è che non va e come configurare il tutto correttamente quando usa il NAS. Siccome con XP tutto funzionava alla perfezione, l'utente ovviamente penserà che è un baco di Vista.
(nota: ho incorporato due opzioni proposte da Raymond in una; invito a leggere il post originale sull'argomento molto più completo del mio)
La costante di tutte queste quattro soluzioni imperfette è una sola: la "colpa" è dell'ultimo arrivato. Ovviamente una situazione del genere mette il produttore del NAS o chi arriva prima in una posizione di favore; che senso ha faticare per implementare correttamente un protocollo visto poi che l'utente medio darà la colpa a qualcos'altro? L'aveva scoperto a suo modo anche Luca. Ed infatti come volevasi dimostrare non c'è nessun aggiornamento del firmware per il mio NAS nonostante il problema sia stato correttamente risolto a monte (il NAS usa librerie software che sono state in seguito patchate per risolvere il problema, ma il produttore del NAS ovviamente se ne è disinteressato).
Un'ultima nota: questa pratica di usare librerie già pronte senza testarle a fondo (chi le scrive pensa che le testa chi le usa e viceversa) è una pratica perversa molto deleteria e porta scientificamente a diffondere i bachi molto più velocemente di quanto si diffondano le eventuali correzioni.
Anche se può sembrare così, non sto scherzando: la mia fiducia nel NAS è così bassa che ne faccio il backup periodico per evitare brutti scherzi. Per ogni file importante ho ormai tre copie: locale, NAS e backup del NAS. Ammetto che la colpa è pure un po' mia perché guardando la confezione del NAS si scopre che Vista non è neanche supportato. Alla fin fine sono rammaricato perché ho comprato un NAS per avere peace of mind, ma ironia della sorte mi sento tranquillo solo quando è idle.
La questione del NAS - a differenza della diatriba su FireFox - mi inferocisce in maniera particolare perché lavorando nel campo della backward compatibility, ho scoperto quanto ogni nuova versione di Windows tenda ad essere accomodante rispetto ad applicazioni semplicemente maleducate: figuriamoci cosa possa provare quando vedo che alcune applicazioni creano problemi totalmente irrisolvibili come quello del NAS[2] e quello che leggo in giro è totalmente approssimativo. Poi mi calmo perché penso che questo è un ciclo naturale che si ripete al rilascio di ogni nuova versione del sistema operativo più backward compatibile che c'è: neanche XP in tali occasioni così acclamato riuscì a fare di meglio, senza parlare di quello che si leggeva in giro con il rilascio del SP2.
Infine voglio fare un paio di precisazioni:
- Nessun sistema software è perfetto, meno che mai Vista. Se qualcuno leggendo quanto ho scritto è tentato di pensare ciò, consiglio immediatamente un bel giro su "I miei guai con Vista". C'è pure un post che parla di un baco nel protocollo di rete in questione che sfortunatamente non ha niente a che fare con i problemi cronici del mio NAS. Io stesso ne ho indicato un paio di bachi davvero antipatici.
- Sperare che un ipotetico SP possa risolvere un problema per sua natura irrisolvibile dimostra scarsa comprensione del problema stesso. Il baco del NAS infatti era noto ben prima del rilascio di Vista; la data del post di Raymond è 30 Marzo 2006 e il baco non ammette nessuna soluzione sul lato client che sia diversa da "la colpa è di Vista" (sempre ovviamente per l'utente medio: immagino che quello avanzato si sia già informato e stia comprando un nuovo NAS; perché il software scritto male e con intenzione presto manifesterà i suoi strali sfoderando altri bachi).
- Non è mia intenzione parlare dello specifico prodotto (che in questo post non ho neanche nominato) ma di un certo tipo di atteggiamento disdicevole che segue l'amara scoperta che il prodotto XYZ non è compatibile con il prodotto ABC
Il filo conduttore tra i due esempi è uno solo: se c'è un caprio espriatorio qualcuno ne farà uso; se non c'è qualcuno ne farà uso lo stesso da cui l'assunto che sempre secondo qualcuno è l'informatica ad essere bacata, ad aver drammaticamente fallito creando false promesse: ai buoni e volenterosi non resta che andare a casa tanto la colpa è di Turing. Ma da un post con un titolo del genere che ci si voleva aspettare?
-quack
[1] che per dirne qualcuna non supporta password più grandi di 8 caratteri, non supporta caratteri speciali nelle password e non supporta neanche file più grandi di 2GB impedendomi di fatto di fare un backup totale e tombale
[2] in la realtà la soluzione c'è: pubblicare un aggiornamento del firmware, ma per l'utente comune che ha diritto a non sapere dell'esistenza di firmware la colpa è sempre di Vista.