La storia della tecnologia è fatta anche dall’enorme quantità di standard che si sono succeduti nel corso del tempo. Eppure non tutti questi standard, a dispetto dello sforzo notevole normalmente profuso per produrli e ratificarli, hanno poi il successo sperato.
Ciò tende a verificarsi spesso quando sono promossi da big vendor, bramosi tanto di controllarli col guinzaglio, quanto di trarne beneficio commerciale massimo: non è insolito che un vendor tenti di far passare per standard qualcosa che ha già prodotto o che sta per immettere a breve sul mercato.
Si arriva ben presto alla legge di Sowa sugli standard.
Ogni volta che un’importante organizzazione sviluppa un nuovo sistema come standard per X, il risultato primario è l’adozione estesa di un qualche sistema più semplice come standard de facto per X.
Uno degli esempi canonici citati in questi casi è il protocollo DAP dello standard X.500 ideato da CCITT per i servizi di directory: troppo complicato, per cui ne è stata sviluppata una versione computazionalmente più leggera, LDAP.
Si potrebbero citare altri casi celebri, ma è importante soffermarsi su un aspetto. La legge di Sowa, citando Wikipedia, “è essenzialmente un ragionamento a favore di un minor livello di specifica“. D’altra parte è normale che più si ragiona su qualcosa includendo anche le sottigliezze più inutili, più si spreca tempo e più è facile ritrovarsi con qualcosa di così iperdettagliato e sovraingegnerizzato da risultare praticamente inusabile.
Chiaramente ciò lascia la porta aperta a qualcosa di più semplice, più facile da usare, modificare, espandere: uno standard preciso e rigorosamente definito, scalzato dall’ultimo arrivato.
Si potrebbe perfino citare, estremizzando volutamente il discorso, il caso del C++ e di Java, due linguaggi di programmazione che hanno da poco ricevuto i loro standard update (C++11 e Java7) dopo anni e anni di discussioni nei rispettivi comitati (ISO e JCP, rispettivamente). Per quanto siano tuttora molto usati, nel mentre si dibatteva del loro futuro, molti altri linguaggi decisamente meno formalizzati hanno cominciato a farsi avanti e a guadagnare spazio (Python, Ruby, Lua, …).
La virtù al solito sta nel mezzo: non si può lasciare tutto “al caso” come per il Perl, il cui codice dell’interprete funge da standard (argh!), ma neppure produrre mattoni accademici da migliaia di pagine come è lo standard attuale del C++ (argc e argv!). Delle due situazioni la seconda riesce ad essere perfino peggiore: niente di peggio che trovarsi a dover leggere e comprendere qualcosa redatto con lo stile di un libro di matematica.
Se qualcosa è o appare complicato da usare, la gente ne farà volentieri a meno. Se quella cosa svolge però una funzione importante, allora verrà probabilmente sostituita con qualcosa di più facile, anche inferiore come numero di feature.