Este documento es una traducción del documento "Web Style Sheets" propiedad de Bert Bos publicado en el sitio de W3C.
La versión en inglés de esta especificación es la única con valor normativo y puede encontrarse en: http://www.w3.org/Style/LieBos2e/history/
Este es el capítulo 20 del libro Cascading Style Sheets, designing for the Web, escrito por HÃ¥kon Wium Lie y Bert Bos (2da edición, 1999, Addison Wesley, ISBN 0-201-59625-3)
La saga de las CSS comienza en 1994. Uno de los autores de este libro trabaja en CERN - la cuna de la Web - y comenzaba entonces a utilizarse la Web como plataforma para la publicidad electrónica. Sin embargo, aún faltaba una parte fundamental para una plataforma publicitaria: no había forma de darles estilo a los documentos: Por ejemplo, no había manera de describir una diagramación similar a la de un periódico en una página Web. Después de haber trabajado en presentaciones personalizadas para periódicos en el Laboratorio de Medios MIT, Håkon advirtió la necesidad de contar con un lenguaje de hojas de estilo para la Web.
Las hojas de estilo de los exploradores no eran una idea totalmente nueva. La separación de la estructura del documento de la diagramación del documento había sido un objetivo de HTML desde su concepción en 1990. Tim Berners-Lee diseñó su explorador/editor NeXT de manera tal que podía determinar el estilo con una simple hoja de estilo. Sin embargo, no publicó la sintaxis para las hojas de estilo, ya que consideraba que cada explorador debía decidir la forma de mostrar mejor las páginas a sus usuarios. Otros exploradores, incluido Viola de Pei Wei (1992) y el explorador Harmony (1993) ( el sistema Hyper-G fue uno de los primeros competidores de la Web) para el sistema Hyper-G contaban con lenguajes de estilo similares.
Sin embargo, en lugar de las hojas de estilo más avanzadas, los exploradores ofrecían a sus usuarios cada vez menos opciones para personalizar el estilo. En 1993, apareció NCSA Mosaic, el explorador que hizo popular a la Web. No obstante, desde el punto de vista del estilo, fue un paso hacia atrás, ya que sólo les permitía a los usuarios modificar determinados colores y fuentes.
Mientras tanto, los diseñadores de páginas Web se quejaban de que no podían incidir demasiado en el aspecto que tenían sus páginas. Una de las primeras preguntas de un autor principiante para la Web fue cómo cambiar las fuentes y los colores de los elementos. En aquel entonces, HTML no brindaba esta funcionalidad, y con toda razón. El siguiente extracto de un mensaje enviado a la lista de correo www-talk a principios del año 1994 brinda una noción de las tensiones que existían entre los autores y los implementadores:
(Este mensaje está disponible en www-talk archive.)
De hecho, ha sido una fuente constante de satisfacción para mí durante el último año decirles a miles (literalmente) de personas que desean -- sujétense bien, aquí viene -- controlar el aspecto de sus documentos de maneras que parecerían triviales en TeX, Microsoft Word, y en cualquier otro entorno común de procesamiento de texto: "Lo lamento, no hay nada que hacer."
El autor del mensaje era Marc Andreessen, uno de los programadores detrás de NCSA Mosaic. Más tarde, se convirtió en el cofundador de Netscape y, para ese entonces, sus opiniones -si es que en algún momento fueron sus opiniones- acerca del formato habían cambiado. El 13 de octubre de 1994, Marc Andreessen anunció a www-talk que el primer lanzamiento beta de Mozilla (que posteriormente se convirtió en Netscape Navigator) estaba disponible para su evaluación. Entre las nuevas etiquetas que el nuevo explorador admitía se encontraba centrar y al poco tiempo aparecieron más etiquetas.
Tres días antes de que Netscape anunciara la disponibilidad de su nuevo explorador, HÃ¥kon publicó el primer borrador de las Hojas de estilo en cascada HTML. Detrás de bastidores, Dave Raggett (el principal arquitecto de HTML 3.0) había sugerido que el lanzamiento del borrador se realizara antes que la conferencia que se llevaría a cabo próximamente "Mosaic and the Web" (la conferencia "Mosaic and the Web" tuvo lugar del 17 al 20 de octubre de 1995. Fue la segunda conferencia de lo que más tarde se convertiría en la Serie de Conferencias WWW ) en Chicago. Dave había advertido que HTML iba a convertirse en un lenguaje de descripción de páginas, y nunca debería hacerlo, y que se necesitaba un mecanismo más específico para satisfacer los requerimientos de los autores. Si bien a la primera versión del documento le faltaba terminar de madurar, sirvió como base para el análisis.
Entre las personas que respondieron al primer borrador de CSS se encontraba Bert Bos, el coautor de este libro. En ese momento, estaba diseñando Argo (el explorador Argo formaba parte de un proyecto para lograr que Internet fuera accesible para los estudiosos de Humanidades. Incluía complementos ("plug-ins", también denominados "applets") antes de que Netscape los agregara ) y un explorador que podía personalizarse en gran medida con hojas de estilo, y decidió unirse a la iniciativa de HÃ¥kon. Las dos propuestas eran distintas a la actual CSS, pero no es difícil identificar los conceptos originales.
Una de las características del lenguaje de estilo Argo era que era lo suficientemente general como para aplicarse a otros lenguajes de etiquetas además de HTML. Este también se convirtió en un objetivo de diseño en CSS y, al poco tiempo, se eliminó "HTML" del título de la especificación. Argo poseía también otras funciones avanzadas que no lo convertían en CSS nivel 1, particularmente, selectores de atributos y texto generado. Ambas funciones debían esperar a CSS2.
El lenguaje de estilo "Hojas de estilo en cascada" (CSS) no era el único lenguaje propuesto en ese momento. También estaba el lenguaje de Pei Wei del explorador Viola y Robert Raisch de la editorial O'Reilly había escrito otro, ya en junio de 1993. Además, estaba también DSSSL, un lenguaje de estilo y transformación complejo que se estaba desarrollando en ISO para la impresión de documentos SGML. Era concebible que DSSSL se aplicara a HTML también. Sin embargo, CSS tenía una función que lo distinguía del resto de los otros lenguajes: tenía en cuenta que, en la Web, ni el autor ni el lector podían diseñar por sí solos el estilo de un documento, sino que sus deseos debían combinarse o "caer en cascada" de algún modo; y, de hecho, no solo los deseos del lector y del autor debían hacerlo, sino también las capacidades del dispositivo de visualización y del explorador.
Tal como estaba previsto, se presentó la propuesta inicial de CSS en la conferencia de la Web en Chicago en noviembre de 1994. La presentación en el Día del Desarrollador originó un gran debate. En primer lugar, el concepto de un equilibrio entre las preferencias del autor y del usuario era novedoso. Una captura de pantalla ficticia mostraba un deslizador con la etiqueta "usuario" de un lado y la etiqueta "autor" del otro. Al ajustar el deslizador, el usuario podría cambiar la combinación de sus propias preferencias y las del autor. En segundo lugar, algunos consideraron que las CSS eran demasiado simples para la tarea para las que fueron diseñadas. Sostenían que para poder dar estilo a los documentos, se necesitaba la potencia de un lenguaje de programación completo. Las CSS iban exactamente en el sentido contrario, haciendo hincapié en que constituían un formato simple, declarativo.
En la siguiente conferencia WWW, realizada en abril de 1995, se presentaron nuevamente las CSS (WWW3, la tercera conferencia de la serie WWW, se llevó a cabo del 10 al 14 de abril de 1995, en Darmstadt, Alemania). Tanto Bert como HÃ¥kon estuvieron presentes (de hecho, esta era la primera vez que se reunían personalmente) y esta vez también pudimos mostrar implementaciones. Bert presentó el soporte para las hojas de estilo en Argo y HÃ¥kon mostró una versión del explorador Arena que había sido modificado para admitir las CSS. Arena había sido descrita por Dave Raggett como un banco de pruebas para nuevas ideas, y una de ellas eran las hojas de estilo. Lo que comenzó como presentaciones técnicas, terminó en debates políticos acerca del equilibrio entre el autor y el lector. Los representantes que apoyaban al "autor" sostenían que correspondía al autor decidir en última instancia cómo se presentaban los documentos. Por ejemplo -se argumentó- que podrían existir requisitos legales sobre cómo debían imprimirse las etiquetas de advertencia y que el usuario no debería poder reducir el tamaño de fuente para tales advertencias. Del otro lado, en el que se encuentran los autores de este libro, se argumentó que el usuario, cuyos ojos y oídos tienen que decodificar en última instancia la presentación, debería tener la última palabra en caso de surgir conflictos.
Al margen de las batallas políticas, el trabajo técnico siguió su curso. En mayo de 1995, se creó la lista de correo www-style , y los debates que surgieron allí, a menudo, influenciaron el desarrollo de las especificaciones de CSS. Tres años más tarde, ya había más de 4.000 mensajes en los archivos de la lista de correo.
En 1995, el Consorcio de la World Wide Web (W3C) también se volvió operativo. Las compañías se unían al Consorcio a gran velocidad y se creó la organización. Se consideraba que los talleres sobre varios temas eran una manera exitosa para que los miembros y el personal de W3C se reunieran y analizaran el desarrollo técnico futuro. Por lo tanto, se decidió que debía organizarse otro taller y esta vez las Hojas de estilo serían el tema. El personal técnico de W3C que trabajaba en las hojas de estilo (a saber, los dos autores de este libro) se encontraba ahora en Sophia-Antipolis en el sur de Francia, donde W3C había establecido su sitio europeo. El sur de Francia no es el peor lugar para atraer a participantes a talleres, pero dado que muchos de los posibles participantes se encontraban en los EE. UU., se decidió realizar el taller en París, ya que allí llegaban más vuelos internacionales. El taller también era un experimento para determinar si era posible para W3C organizar eventos fuera de los EE. UU. Efectivamente, resultó posible, y el taller fue decisivo para asegurarles a las hojas de estilo un lugar legítimo en la Web. Entre los participantes, se encontraba Thomas Reardon de Microsoft, quien prometió incorporar soporte CSS en las próximas versiones de Internet Explorer.
A fines del año 1995, W3C estableció la Junta de Revisión Editorial de HTML (HTML ERB) para ratificar las futuras especificaciones de HTML. Dado que las hojas de estilo se encontraban dentro de la esfera de interés de los miembros del nuevo grupo, la especificación de CSS se tomó como un elemento de trabajo con el objetivo de transformarla en una Recomendación. Entre los miembros de la HTML ERB, se encontraba Lou Montulli de Netscape. Una vez que Microsoft indicó que agregaría soporte CSS en su explorador, era importante también lograr que Netscape se sumara. De lo contrario, podría suceder que la Web tomara distintos caminos con exploradores que admitieran distintas especificaciones. Aunque las batallas dentro de la HTML ERB fueron largas y duras, CSS nivel 1 finalmente surgió como una Recomendación de W3C en diciembre de 1996.
En febrero de 1997, CSS obtuvo su propio grupo de trabajo dentro de W3C y el nuevo grupo se dispuso a trabajar en las funciones que CSS1 no incluía. El grupo estaba dirigido por Chris Lilley, un escocés reclutado por W3C de la Universidad de Manchester. CSS nivel 2 se convirtió en una Recomendación en mayo de 1998, y probablemente le seguirá el nivel 3 a fines de 1999. Mientras tanto, no sólo HTML depende de CSS para su presentación. Muchos formatos basados en XML también necesitan CSS, y los exploradores que aparecen a fines de 1998 muestran los primeros pasos, aunque aún son algo limitados, hacia la presentación de datos XML.
El grupo de trabajo de W3C, cuyo nombre oficial es "Grupo de trabajo sobre hojas de estilo en cascada y propiedades de formato" ("Cascading Style Sheets and Formatting Properties Working Group), ya que se ocupa de mucho más que de las CSS, cuenta con alrededor de 15 miembros, delegados por las compañías y las organizaciones que son miembros de W3C. Proceden de todas partes del mundo, por lo que las "reuniones" generalmente se realizan telefónicamente, y duran aproximadamente una hora todas las semanas. Aproximadamente cuatro veces por año, se reúnen en alguna parte del mundo. Las sedes más recientes fueron Provo, Redmond, San Francisco y París. En París, la reunión se realizó en las oficinas de EDF-GDF, la compañía francesa de gas y electricidad. En esa reunión, se le ofreció al grupo una cena fabulosa: Cocina francesa con vista a la ciudad de París y al río Sena -uno de los pocos momentos glamorosos en la historia de un grupo de trabajo técnico muy trabajador. Todos los franceses deben haberse sentido celosos; normalmente no reciben nada gratis de su proveedor de gas y electricidad.
La saga de las CSS no está completa si no se incluye una sección sobre los exploradores. Si no hubiera sido por los exploradores, las CSS hubieran quedado como una noble propuesta de interés académico únicamente. El primer explorador comercial que admitió a las CSS fue Internet Explorer 3 de Microsoft, que fue lanzado en agosto de 1996. En ese momento, la especificación de CSS1 aún no se había convertido en una Recomendación de W3C, y los debates dentro de la HTML ERB darían como resultado cambios que los desarrolladores de Microsoft, liderados por Chris Wilson, no podrían anticipar. IE3 admite de manera confiable la mayoría de las propiedades de color, fondo, fuente y texto, pero no implementa mucho del modelo de caja.
El siguiente explorador que anunció que admitía a las CSS fue Netscape Navigator, versión 4.0. Desde el principio, Netscape se había mantenido escéptico con respecto a las hojas de estilo y la primera implementación que realizó la compañía resultó ser un intento poco entusiasta para evitar que Microsoft reclamara que cumplía más que ellos con los estándares. La implementación de Netscape admite una amplia gama de funciones: por ejemplo, los elementos flotantes; sin embargo, los desarrolladores de Netscape no tuvieron suficiente tiempo para evaluar todas las funciones supuestamente admitidas. El resultado es que muchas propiedades de las CSS no pueden utilizarse en Navigator 4.
Netscape implementó las CSS internamente al traducir las reglas de las CSS a recortes de Javascript, que luego se ejecutaban junto con otros sistemas de escritura. Asimismo, la compañía decidió permitir que los desarrolladores escribieran con hojas de estilo basadas en Javascript (JSSS), pasando así por encima de las CSS por completo. Si las JSSS hubieran sido exitosas, la Web tendría una hoja de estilo más de lo necesario. Afortunadamente para las CSS, esto no sucedió.
Mientras tanto, Microsoft continuaba sus esfuerzos por desplazar a Netscape del trono de los exploradores reinantes. En Internet Explorer 4, el motor de visualización del explorador -que entre otras cosas es responsable de representar CSS- fue reemplazado por un módulo cuyo nombre de código era "Trident". Si bien Trident eliminó muchas de las limitaciones de IE3, también trajo consigo su propio conjunto de errores y limitaciones. IE4 no admite por completo CSS1, algo que el Proyecto de Estándares de la Web (WaSP) señaló en noviembre de 1998 al publicar "Los 10 problemas principales con CSS de IE" (IE's Top 10 CSS Problems) (Figura 20.1).
Figura 20.1 El proyecto WaSP evalúa si los exploradores cumplen con las Recomendaciones de W3C. Una de sus primeras revisiones fue determinar la admisión de CSS en Microsoft Internet Explorer.
Además de presentar documentos estáticos, Trident también es capaz de cambiar de forma dinámica las propiedades estilísticas. Por ejemplo, los elementos pueden aparecer con animación en la pantalla, si se cambian de manera continua sus propiedades en la parte superior e izquierda, creando de este modo el "HTML dinámico" (DHTML). En principio, el DHTML es muy similar a JSSS (ambos utilizan lenguajes de escritura para establecer propiedades estilísticas); sin embargo, el DHTML nunca se comercializó como un lenguaje de hojas de estilo alternativo. De hecho, el lenguaje CSS es una parte integral de DHTML.
El tercer explorador que se aventuró al lenguaje CSS fue Opera. El explorador de la pequeña compañía noruega fue noticia en 1998 por ser pequeño (cabe en un diskette) y poder ser modificado por el usuario, al mismo tiempo que admite la mayoría de las funciones incluidas en ofertas de mayor tamaño de Microsoft y Netscape. Opera 3.5 fue lanzado en noviembre de 1998 y admite la mayor parte de CSS1. Los desarrolladores de Opera (a saber, Geir Ivarsøy) también tuvieron tiempo para evaluar su implementación antes de enviarla. El conjunto de pruebas de CSS1, desarrollado por Eric Meyer con la colaboración de otros tantos voluntarios, logró que fuera mucho más fácil para los implementadores evaluar y mejorar sus productos.
Al momento de escribir el presente texto, tanto Netscape como Microsoft se encuentran también trabajando arduamente para presentar rápidamente sus próximos exploradores. Netscape ha decidido reemplazar el motor de visualización de Navigator por "nglayout", que fue escrito desde el principio con CSS como una de sus bases. Su nuevo explorador lleva el nombre de código "Gecko" y se pueden descargar versiones beta desde http://www.mozilla.org. Microsoft ha estado lanzando versiones en vista previa de Internet Explorer 5. Ya cuenta con algunas mejoras en las CSS, y se prevé que la iniciativa WaSP le recordará a la compañía que aún queda trabajo por hacer antes de que CSS1 sea admitido por completo.
El sitio Web de este libro incluirá punteros para los últimos exploradores con CSS.