Wextensible

Razones para empezar con HTML-5

La especificación W3C HTML-5 está en fase WD (Working Draft) en este momento (Octubre 2011). Se trata de un "borrador" debiendo pasar por varios niveles W3C hasta alcanzar el grado de estándar W3C Recommendation (REC). El primer WD publicado es del 22 de Enero de 2008. En el momento de escribir este artículo (Octubre 2011) el más reciente WD es del 25 de Mayo de 2011. Hay una agenda de hitos planificados expuesta en la página W3C HTML-WG-charter que en este momento establece la finalización de la fase WD en este año 2011. Después de algunas fases más pasará a estándar (REC) en el 2014, aunque podrían darse modificaciones en estos plazos.

La pregunta es cuándo empezar a utilizar esta nueva especificación, ¿En el 2014?. ¿O tenía que haber empezado en el 2008 con la primera publicación del borrador?. En ese año ni siquiera tenía este sitio web. Realmente tomé la decisión de aprender todo esto del desarrollo web a finales del año 2007. A inicios del 2008 aún estaba aprendiendo como se escribe HTML en un bloc de notas y visualizándolo directamente con Internet Explorer, sin siquiera usar un servidor montado en localhost. Y mucho menos sabía nada acerca de especificaciones y estándares. El año pasado (mayo 2010) abrí este mi primer sitio web para ir probando lo que vaya aprendiendo.

Ha pasado algún tiempo y sólo sé que no sé nada. Y no es un tópico. Porqué es indudable que el tema desarrollo web es un árbol con tantas ramas que necesitaría una vida (o más) para llegar a todas ellas. Y si al mismo tiempo me van cambiando las ramas de sitio, pues la cosa se complica. Cuando uno cree que domina una materia entonces el avance tecnológico te lo echa por tierra. Y tienes que volver a reconsiderar lo que sabes. Y tienes que volver a aprender cosas nuevas. Cuando HTML-5 sea ya un estándar consolidado vendrá algo nuevo a sustituirlo, si es que acaso no existe ya.

Pero es esa vertiginosa velocidad de cambio en todo lo relacionado con Internet y con la informática en general lo que me atrae. Quizás no tenga tiempo (esto de la informática es mi afición y no mi profesión) para estar continuamente al día. Pero dado que es precisamente una afición, he topado con una que admirablemente está en constante evolución. Por lo tanto tengo con que entretenerme un buen rato. Y ahora toca ponerme al día con HTML-5 por estas razones, aunque podrían haber otras tantas:

  1. Mayor soporte HTML-5 en navegadores
  2. Incremento de la cuota de mercado de estos navegadores
  3. Actitud en la forma de afrontar los cambios de Internet

Todo esto no deja de ser más que una opinión. No soy un experto, pero aún así me veo en la necesidad de trazarme una guía o camino a seguir. Este artículo es más bien una exposición de dudas que de soluciones. Pero escribirlo me ayuda a clarificarme.

Soporte HTML-5 en navegadores

La mayoría de navegadores ya admiten HTML-5. Por ejemplo, en el sitio html5test.com a fecha de hoy (12 de Octubre de 2011) podemos ver esta clasificación de soporte de HTML-5 sobre unas versiones actuales en ese momento de navegadores:

NavegadorVersiónPuntuación% sobre 450 puntos
Google Chrome13.0.78234175,8%
Mozilla Firefox6.031369,6%
Apple Safari5.129365,1%
Opera11.5028663,6%
Microsoft Internet Explorer914131,3%

Aunque Internet Explorer 9 no aprueba (no pasa del 50%), su versión próxima 10 aún en fase de desarrollo llegaría a los 300 puntos (66,7%). La versión anterior IE8 sólo tiene 41 puntos (9,1%) que es lo mismo que decir que no soporta HTML-5. Independientemente de la fiabilidad de estos datos, se evidencia que el nivel de soporte es más que adecuado para empezar ya con HTML-5.

Cuota de mercado de los navegadores que soportan HTML-5

Por otro lado tenemos las cuotas de mercado de los navegadores. Estos datos del período Julio a Septiembre del año 2010 extraídos del sitio gs.statcounter.com dicen que Internet Explorer 8 tenía casi el 30% de cuota, seguido por Firefox 3.6 con un 23% y las versiones anteriores IE7 y IE6 con un 14% y 8% respectivamente. Sólo IE con estas tres versiones acaparaba un 51%.

Para este año 2011, en ese mismo período de Julio a Septiembre, tenemos los datos del mismo sitio gs.statcounter.com con un 34% de cuota para IE6, 7 y 8 que son las versiones que no soportan HTML-5. IE9 tiene un 8% lo que supone que globalmente IE ha perdido cuota, que por otro lado están ganando navegadores como Firefox y Chrome que si soportan una gran parte de HTML-5.

IE8 mantiene aún una elevada cuota de mercado (un 25,7%) seguramente debido a que Microsoft no permite instalar IE9 en Windows XP. Aunque no sabría explicar si es por razones técnicas o estratégicas de mercado. Sea como fuere hay que tener presente este detalle si vamos a realizar cambios a HTML-5 en nuestro sitio y pudiera afectar de forma grave en el comportamiento de nuestras páginas. Lo que se evidencia claramente entre esos dos conjuntos de datos es la clara intención de todos los navegadores por adaptarse a HTML-5.

Una actitud en la forma de afrontar los cambios de Internet

Cuando a finales del año 2007 tomé la decisión de estudiar por primera vez el lenguaje de marcado de hipertexto HTML tuve que decidir entre HTML-4.01 y XHTML-1.0. Estas eran las especificaciones ya consolidadas como estándares en ese momento. Como dije antes, dada mi inexperiencia poco más podía hacer que consultar algunos "consejos" como este que aparece en la página del W3C sobre las ventajas de usar XHTML en lugar de HTML:

Si su documento es un XHTML 1.0 puro (sin incluir otros lenguajes de marcas) entonces no notará mucha diferencia. Sin embargo cuantas más herramientas XML estén disponibles, tales como XSLT para transformar documentos, empezará a darse cuenta de las ventajas de XHTML. XForms por ejemplo le permitirá editar documentos XHTML (o cualquier clase de documentos XML) en una forma simple y controlable. Las aplicaciones de la Web Semántica se beneficiarán más de los documentos XHTML. Si su documento es más que XHTML 1.0, por ejemplo incluyendo MathML, XMIL o SVG, entonces las ventajas son inmediatas: sería imposible hacer esas cosas con HTML. [W3C]

Además XHTML-1.0 venía a ser HTML-4.01 con XML-1.0. Tenía ya la ventaja de que sabía algunas cosas de XML. Por otro lado también se decía que XHTML vendría a ser un pilar importante para la web semántica con una nueva versión XHTML-2.0. Todo esto y algunas otras opiniones conformaron mi decisión para estudiar XHTML-1.0. Empecé a escribir mis documentos en XHTML pero servidos como HTML. Esto lo explico en el artículo Aprender HTML o XHTML que confeccioné en Febrero de este mismo año 2011. En resumen, la razón de ello es principalmente que Internet Explorer 8 o anteriores no soportaban XHTML, aunque la versión IE9 que estaba apareciendo en ese momento si lo iba a soportar. Sólo "tendría que esperar"! a la versión IE9 y la consolidación de su cuota de mercado. Pero no fue tan sencillo.

Por otro lado en el año 2009 se anunció por el W3C que abandonaría el desarrollo de XHTML-2.0 para centrar sus esfuerzos en lanzar HTML-5 [Noticia del W3C], aunque incorporaría también XHTML [W3C: El futuro de XHTML]. En ese momento me quedé tranquilo: "¡mi claro, preciso, impecable y bonito XHTML estaba a salvo!. Pero estos últimos meses me he estado planteando mi forma de afrontar todo esto haciéndome preguntas cómo:

  1. ¿Hay que esperar la consolidación como estándar de una especificación para empezar a usarla?
  2. ¿Es estrictamente necesario seguir los estándares en Internet?
  3. ¿Es realmente XHTML un estándar adecuado para Internet?
  4. ¿Hemos de esperar a que todos los navegadores estén preparados para empezar a usar esas cosas nuevas?
  5. ¿Qué es más importante: el contenido de una web o la implementación (navegador + estándares + HTML + CSS + script + ...)?
  6. ¿Que caracteriza Internet y en general todas las tecnologías informáticas?

El cambio constante es una de las características más importantes de Internet. La sociedad cambia e Internet es una de sus herramientas principales de comunicación. Evidentemente tiene que cambiar tan rápido (al menos) como se lo exige la sociedad. Y a veces es la propia tecnología la que cambia a la sociedad: las redes sociales por ejemplo. Una prueba evidente de este vertiginoso cambio es el número de usuarios de Internet: 16 millones en el año 1995 hasta 2.110 millones en Junio de 2011 [internetworldstats.com]. Esto quiere decir que más de 2 mil millones de personas usan Internet, un 30% de la población mundial.

O si se quiere ver de otra forma. El 29 de Octubre de 1969, a las 10:30 de la mañana se enviaba la palabra "login" entre dos ordenadores, uno en la Universidad de UCLA y el Stanford Research Institute (California). Hubo un problema y sólo se recibió "lo". Una hora más tarde lo solucionaron y se produjo la primera comunicación completa con el protocolo denominado entonces ARPANET. En diciembre de ese mismo año 1969 ya había una conexión permanente con 4 nodos. En 1983 el protocolo TCP/IP sustituye a ARPANET, lo que daría lugar a la naciente Internet tras los hitos de las especificaciones HTML-1.0 y los primeros navegadores [wikipedia.org]. En una estadística reciente con datos de Julio 2011 se estima que hay unos 840 millones de dominios de Internet [isc.org]. Y cada dominio puede a su vez interconectar muchos usuarios. En definitiva, la sociedad hace cambiar la tecnología y viceversa. He de estar necesariamente mentalizado para los constantes cambios tecnológicos.

Una página web es principalmente un contenido que se pretende comunicar. Independientemente de dónde sea presentada: ordenador de sobremesa, portátil, teléfonos móviles,... Independientemente de cómo sea presentada: HTML, XHTML, CSS, Javascript, JQuery, JSON,... Tengo que pensar en el contenido, no en el "dónde" y "cómo". Mi objetivo es comunicar algo a mis usuarios, no que se vea bien en tal o cual navegador o con tal o cual tecnología. Por lo tanto no puedo esperar por la consolidación de las tecnologías. Si los usuarios piden una característica en Internet para cubrir sus necesidades, el desarrollador web debe dárselo con la primera tecnología que tenga a su alcance. Y si no inventarla. Es lo que hacen aquellos que innovan, que buscan soluciones (como modernizr.com por ejemplo) para adelantarse a la a veces exasperante pasividad de los "intermediarios" de Internet. En definitiva, la implementación debería adaptarse a la necesidad de los contenidos y no al revés.

¿Y qué pasa con los estándares? ¿Qué hago con XHTML?. Sé que esta es una discusión muy antigua y muchos ya lo tienen claro. Pero no para mí que estoy empezando con todo esto. Tim Berners-Lee fue el que puso en marcha el primer protocolo HTML en 1990. Por lo tanto parece ser que sus opiniones son tenidas en cuenta. En el año 2006 escribió lo siguiente: (traducción personal)

Algunas cosas están claras si miramos atrás. Es necesario evolucionar el HTML incrementalmente. El intento de usar XML (es decir, el XHTML), con sus comillas encerrando los valores de los atributos y las barras de los elementos vacíos y los nombres de espacios no ha funcionado. En gran parte debido a que los navegadores no se quejan (es decir, deciden que es mejor presentar un HTML mal formado que ninguno)... [Reinventing HTML]

En definitiva, posiblemente no estuviésemos preparados aún para XHTML. Y por tanto todavía la concepción inicial del HTML está plenamente vigente. Pero HTML-5 puede presentar XHTML, esté o no bien formado. Usar XHTML-5 es una aventura arriesgada. Quizás los tiros no vayan por ahí en el futuro. Escribir documentos para que puedan ser a la vez HTML-5 y XHTML-5 me parece una locura. Hay algo llamado lenguaje de marcado políglota. La verdad, no me gusta ni como suena. Se trata de escribir de forma compatible para HTML-5 y XHTML-5, tal como se especifica en la página del W3C llamada Polyglot Markup: HTML-Compatible XHTML Documents. WHATWG es un grupo alternativo a W3C que luego comentaré, pero que expone todas las diferencias que hay entre ambos lenguajes de marcas en la página html-vs-xhtml. Por ejemplo, para aislar el Javascript del documento hay que poner esta ristra:

<script><!--//--><![CDATA[//><!--
       ...
   //--><!]]></script>

La verdad, no me veo atendiendo a todas esas diferencias expuestas con el único objeto de que un documento pueda ser servido como text/html y a la vez como application/xhtml+xml. Al final deduzco que podremos seguir escribiendo HTML como XHTML, es decir, seguir usando esa sintaxis enviada como text/html pues los navegadores "no se quejaran". Realmente será un HTML-5 con algo de la sintaxis XHTML. Por el momento no veo la justificación de porqué no debo cerrar los elementos vacíos como <br /> o poner comillas en todos los valores de los atributos o especificar un atributo booleano como checked="cheked". No es HTML-5, es sintaxis XHTML, pero si lo envío con la cabecera de HTML-5 ningún navegador se va a "quejar". Pero cada uno tendrá que buscar su propio estilo, tal como lo explica este artículo html5-syntax-style. Y si mañana decido otra cosa debido a cambios en el entorno tecnológico, pues dejaré de cerrar los elementos vacíos, o de poner comillas en los atributos, o lo que sea.

Y eso es precisamente lo que me atrae de la filosofía de HTML-5 tal como lo concibe el grupo WHATWG Web Hypertext Application Technology Working Group, creado en el año 2004 como alternativa a W3C. Este grupo realmente apareció al no estar de acuerdo en que Internet debería basarse en estándares consolidados tal como el XHTML. En su página de preguntas frecuentes expone:

¿Qué significa un "estándar vivo"?
Las especificaciones WHATWG se definen como estándares vivos. Significa que están en continua actualización mientras vayan recibiéndose propuestas de los diseñadores Web, fabricantes de navegadores, de herramientas o de cualquier parte interesada. Significa que nuevas características serán añadidas en cualquier momento, con un ritmo apropiado para mantener la especificación un poco por delante de las implementaciones, pero no tanto como para que éstas renuncien a usarla. [WHATWG: FAQ]

Esa última frase encierra una gran verdad. Pues un estándar define una forma de hacer las cosas. Y puede ser un bonito propósito, pero si la implementación no está preparada para acogerlo no tendrá ninguna utilidad. Eso es un poco lo que pasó con XHTML. Ahora la idea es evolucionar las características individuales de HTML. No se trata de hacer un estándar como quién fabrica un producto terminado, como algo que se hace y se fija de forma inamovible. La idea que observo es que se intenta trabajar sobre las partes y evolucionarlas de forma independiente, implementarlas, recibir sugerencias, modificarlas, suprimirlas si no reciben acogida por los implementadores. En definitiva, lo que llaman un estándar vivo.

Quién sabe si en el futuro (no tan lejano) ya no se hablará de estándares o de lenguajes de marcado de hipertexto. Quizás las páginas se confeccionen sólo con algo como JSON [jsong.org] y exista un nuevo lenguaje de programación exactamente concebido para manipular contenidos en Internet. Será entonces y de nuevo el programador el que dirija las innovaciones y no los redactores de estándares como hasta ahora. Quizás habrá una nueva capa de software que extraerá la semántica del contenido, no importándole la tecnología usada para presentar ese contenido. En cualquier caso hemos de tener una mentalidad abierta hacia el cambio. Y HTML-5 tal como lo concibe WHATWG puede ser el primer paso.