Anoche me llamó un colega a las tantas. Su perfil de MySpace se había roto por completo. Literalmente, la tabla principal del diseño se había desparramado por media pantalla y su reproductor de música incrustado flotaba extrañamente encima de la lista de "Top 8" amigos. Nos pasamos un buen rato intentando descifrar el amasijo de etiquetas y estilos que había copiado y pegado de vete a saber qué foro oscuro. Al final conseguimos arreglarlo borrando la mitad de las cosas, pero todo este proceso me hizo reflexionar sobre la locura técnica que hemos llegado a normalizar en el diseño web.

Cualquiera que haya intentado hacer una página medianamente decente sabe que separar el contenido de la presentación es una regla básica y sagrada. Hace poco comentaba por aquí lo limpio que resulta trabajar con el sistema de plantillas en WordPress. Mantienes tus archivos PHP por un lado y tu hoja de estilo centralizada por otro. MySpace, para desgracia de nuestras retinas, hace exactamente lo contrario. Permite a los usuarios meter código HTML y CSS a lo bruto directamente en las cajas de texto de los perfiles, como por ejemplo en la sección "Acerca de mí".

Piensa un segundo en la tremenda barbaridad que supone esto. Para cambiar el fondo de pantalla o esconder los bloques de anuncios, la gente está inyectando bloques completos de <style> en medio del <body> de la página. El motor de renderizado de Internet Explorer 6 sufre un colapso silencioso cada vez que tiene que interpretar eso, y Firefox hace literalmente lo que puede para que no salten chispas del monitor.

El truco que todo el mundo usa consiste en adivinar o inspeccionar las clases que los propios desarrolladores de MySpace han definido en sus tablas, y luego forzar la sobrescritura de las reglas a martillazos usando el atributo !important. Tiras un montón de reglas en línea y rezas para que el navegador haga caso a las tuyas en lugar de a las originales.

<style type="text/css">
/* Esconder la tabla principal por defecto de MySpace */
table, tr, td {
    background-color: transparent !important;
    border: none !important;
}

/* Cambiar el fondo del perfil a una imagen pesada que asfixia mi ADSL de 1 Mega */
body {
    background-image: url("http://ejemplo.com/fondo-gotico.jpg");
    background-attachment: fixed;
    background-position: center center;
    background-repeat: no-repeat;
    background-color: #000000;
}

/* Modificar la caja de comentarios y esconder la publicidad */
.contactTable { width: 300px !important; padding: 0px !important; }
div.google-ad { display: none !important; }
</style>

Lo que ocurre al hacer esto es que terminas con un código horrible monumental y un mantenimiento completamente nulo. Un perfil normal de un adolescente puede llegar a tener decenas de bloques de código distintos chocando entre sí. Si mañana los programadores de MySpace deciden cambiar el atributo class de su sistema interno o reorganizan la jerarquía de las tablas, millones de perfiles personalizados se irán al garete de la noche a la mañana. Es un castillo de naipes sostenido únicamente por cinta americana y desesperación.

Desde un punto de vista puramente técnico, abrir las puertas de par en par a que el usuario meta HTML sin filtrar me parece una bomba de relojería. Ya no solo por el desastre visual sangrante que todos conocemos, sino porque estás invitando activamente a que alguien te cuele un script malicioso cruzado (Cross-Site Scripting). He visto perfiles que ejecutan pequeños reproductores ocultos en Flash o que alteran el comportamiento del ratón usando filtros propietarios espantosos de Microsoft. Todo esto pasa simplemente porque la plataforma prefiere dar una falsa sensación de libertad de personalización por encima de la seguridad básica.

Viendo cómo avanza la web, con la explosión de la Web 2.0, el uso intensivo de AJAX y la fiebre de compartir absolutamente todo, me pregunto si este modelo de inyectar código sin control será la norma en las redes del futuro. Personalmente, ruego para que la cordura impere. La web necesita urgentemente estándares claros, hojas de estilo externas ordenadas y código limpio. Mientras esa utopía llega, seguiré usando la extensión Web Developer en mi navegador para desactivar el CSS cada vez que entre al perfil de un colega. Al menos así me ahorro el dolor de cabeza y el sufrimiento visual.