martes, 12 de noviembre de 2013

De las buenas ideas a los malos hechos

Hoy comiendo con los compañeros de trabajo en una de esas sesiones más propias de "Big Bang Theory" que de profesionales de IT, comentábamos la dificultad de saber con exactitud que tipo de navegado esta accediendo a nuestra web, por fortuna uno de los comensales recordó este artículo que os os cito.


"Al principio se creó el navegador "NCSA Mosaic", y "Mosaic" se le puso el user-agent "NCSA_Mosaic/2.0 (Windows 3.1)". Mosaic mostraba imágenes junto con el texto, y eso gustaba mucho.

He aquí que luego vino un nuevo navegador web conocido como "Mozilla", al ser la abreviatura de "Asesino de Mosaic" (Mosaic Killer), pero a Mosaic no le hizo mucha gracia, así que el nombre público fue cambiado a "Netscape", y "Netscape" se llamó "Mozilla/1.0 (Windows 3.1)", y este navegador gustaba aún más. "Netscape" soportaba frames, y los frames se hicieron populares entre la gente, pero "Mosaic" no soportaba frames, y así comenzó el sniffing del user-agent y los webmasters enviaban frames a "Mozilla", pero no a otros navegadores, que no soportaban frames.

Y Netscape dijo: "vamos a burlarnos de Microsoft" y dijeron que en Windows los "controladores de dispositivos estaban mal depurados", y Microsoft se enfadó, por lo que Microsoft hizo su propio navegador web, al que llamaron "Internet Explorer" con la esperanza de que fuera un "Asesino de Netscape". "Internet Explorer" soportaba frames, pero como no era "Mozilla", así que los webmasters no le mandaban frames. Microsoft se impacientaba y no quiso esperar a que los webmasters conocieran IE y le empezaran a mandar frames, así que dijo que "Internet Explorer" era "Mozilla compatible" y comenzó a hacerse pasar por "Netscape", cambiando su user-agent a "Mozilla/1.22 (compatible ; MSIE 2.0; Windows 95)". Así fue como Internet Explorer empezó a recibir frames, y todos en Microsoft eran felices, pero los webmasters estaban confusos.

Y Microsoft unió IE al sistema operativo Windows y lo hizo mejor que "Netscape", y así comenzó la primera guerra de los navegadores, que hizo estragos sobre la faz de la tierra. Netscape fue asesinado, y hubo mucho regocijo en Microsoft.

Pero "Netscape" renació como "Mozilla", y a "Mozilla" le pusieron un nuevo motor web llamado "Gecko". Internamente se le llamó "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.1) Gecko/20020826", Gecko fue el motor de renderizado, y Gecko fue bueno. Más tarde se convirtió en "Mozilla Firefox", llamándose "Mozilla/5.0 (Windows; U; Windows NT 5.1 sv-SE; rv: 1.7.5) Gecko/20041108 Firefox/1.0", y "Firefox" fue muy bueno. Y "Gecko" empezó a multiplicarse, y otros navegadores nacieron utilizando su código, llamándose "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O, en-US; rv: 1.7.2) Gecko/20040825 Camino/0.8.1" uno y "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv: 1.8.1.8) Gecko/20071008 SeaMonkey/1.0" otro, haciendose pasar por "Mozilla", e impulsados por "Gecko".

Y "Gecko" era bueno, e IE no lo era, y el sniffing del navegador renació, y a "Gecko" se le daba buen código web, y a otros navegadores no. Entonces los linuxeros se pusieron muy tristes, porque ellos habían construido "Konqueror", cuyo motor era "KHTML", que pensaban que era tan bueno como "Gecko", pero no era "Gecko", por lo que no se le mandaban buenas páginas, por lo que "Konqueror" empezó a hacerse pasar por "Gecko" para obtener las páginas buenas, y llamó a si mismo "Mozilla/5.0 (compatible; Konqueror/3.2, FreeBSD) (KHTML, like Gecko)" y hubo mucha confusión.

Luego vino Opera y dijo: "nosotros tenemos que permitir a nuestros usuarios a decidir por qué navegador se quieren hacer pasar", y así Opera creó una opción de menú donde seleccionar el user-agent, y a Opera se llamó "Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1) Opera 9.51", o "Mozilla/5.0 (Windows NT 6.0; U; es; rv: 1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51" o "Opera/9.51 (Windows NT 5.1; U; en)" dependiendo de la opción que seleccionara el usuario.

Y Apple construyó "Safari", que utilizaba "KHTML", pero añadía muchas características, así que hizo un fork del proyecto, y lo llamó "WebKit", pero quería las páginas escritas para "KHTML", y así se llamó "Safari Mozilla/5.0 (Macintosh; U; PPC Mac OS X, de -DE) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5", y la cosa empeoró.

Microsoft temía "Firefox" en gran medida, y actualizó "Internet Explorer", llamándolo "Mozilla/4.0 (compatible; MSIE 8.0, Windows NT 6.0)" y renderizaba buen código, pero sólo si los webmasters le pedían que lo hiciera.

Y entonces Google lanzó "Chrome", y "Chrome" utilizaba "WebKit", y fue como "Safari", y quería las páginas creadas para "Safari", por lo que se hizo pasar por "Safari". Y así, "Chrome" utilizaba "WebKit", y se hizo pasar por "Safari", y "WebKit" pretendía ser "KHTML", y "KHTML" pretendía ser "Gecko", y todos los navegadores pretendían ser "Mozilla", y a "Chrome" se llamó "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13".

Y la string para el user-agent del usuario fue un completo desastre, además de inútil, pues todo el mundo pretendía ser como los demás, llenando el mundo de confusión."

Creo que como resumen jocoso de la manera en que una buena idea de programación se prostituye hasta la inutilidad no tiene precio.

Ahora espero que algunas personas comprendan un poco mejor que lo de programas para todos los navegadores tiene más de arte que de ciencia.