Da pochi anni ci si riempie la bocca della onnipotente parola "standard". Suona bene, zittisce chiunque, ha persino vincolato le scelte delle tecnologie e dei prodotti del grande gigante Microsoft (e non solo) che sembrava poter vivere di sole tecnologie proprietarie. Sembra tutto bello ma ... (c'è sempre un ma) ... spesso gli standard sono una vera schifezza.
Uno dei difetti maggiori di molti standard è quello di definire delle casistiche che poi però non vengono implementate da nessuno in quanto inutili o eccessivamente complesse. SMTP così come tantissimi standard definiti nelle RFC cadono pienamente in questo caso (SMTP cade in una lista infinita di casistiche negative, ma lascio perdere perché andrei OT).
Poi si passa allo standard scritto male, come le prime (solo?) versioni di HTML e CSS, che hanno provocato interpretazioni opposte da parte degli implementatori, con risultati disastrosi. Rimanendo nel mondo dei conformi allo standard ed allo stesso tempo incompatibili tra loro non si può non citare il protocollo FAX o il distrubuito secondo CORBA con le sue enne differenti implementazioni.
Andiamo avanti e scopriamo che ID3, lo standard per il tagging dell'audio presente nei file MP3, nell'anno del signore 2006 usa ancora campi a bit ed un formato binario.
Perché biasimo il formato binario, proprio io che mi sono guadagnato la pagnotta con assembler e C++ dagli anni '80? Semplice perché un formato XML consente la validazione e la lettura del formato in 30 secondi, mentre l'implementazione dell'algoritmo necessita almeno un paio di giorni di lavoro.
Per la cronaca a questo link si dice che XML per ID3 non viene usato per non rompere la compatibilità con le versioni precedenti, ma allo stesso tempo la versione 4.0 di ID3V2 è incompatibile con la versione 3.0 ... pazzesco.
Poteva poi mancare SQL? Un linguaggio la cui versione standard è di fatto inutilizzabile in progetti che abbiano una certa dignità.
RTF è un esempio di standard che ha funzionato, ormai obsoleto ma poco diffuso solo per il fatto che è nato in casa Microsoft, e allora tutti a snobbarlo. Altro esempio di partigianeria è quello di Ajax, basato sul componente XmlHttp di Microsoft... abbiamo dovuto però aspettare che lo usasse Google perché venisse implementato in tutti i browser ... vergogna.
PDF è una giungla e ho già espresso qui perché ne sono contrariato.
E XML allora, non è un buon esempio di standard? Si, certo ma guardiamo alle sue spalle e troviamo SGML che molto più di 20 anni gli ha aperto la strada e testato nella pratica le sue caratteristiche. Inoltre XML è semplice ed anche questo è dovuto all'esperienza su SGML.
La colpa è di chi scrive cattivi standard, di chi permette all'implementatore di nascondersi dietro le ambiguità, di chi non segue uno standard solo perché è scritto da Microsoft o Sun, di chi non provvede ai dati per poter eseguire unit testing ed assicurare una corretta implementazione, di chi se li fa pagare (ma che standard è allora?), etc. etc.
Certamente XML non è l'unico esempio di standard che funzionano. Prendo a caso png e zlib che guarda caso sono proprio quelli in cui ci sono implementazioni reali, scritti non solo nei whitepaper ma anche nel codice e per tutti gli OS.
Allora forse il punto è che è troppo facile fare gli architetti della torre di babele. I bravi architetti sono anche ingegneri e muratori.