Une nouvelle sorte d’individus pollue actuellement les forums de discussion de la planète ; on ne connaît pas le nom de leurs chefs mais, par une forme étonnante de génération spontanée, ils se sont répandus partout et passent leur temps à en faire perdre à tous ceux qui s’intéressent à ce vieux monument qu’est le HTML. Pire : ils pourraient bien dégoûter tout ceux qui voudraient aujourd’hui « s’y mettre ».
Cette secte nouvelle porte plusieurs noms : les adorateurs du W3C Validator, les ayatollahs du XHTML ou, plus communément : « les ceusses qui sont pas foutus de monter un site Web potable alors ils font chier les autres »...
Leur arme : le W3C Validator, un outil qui devrait permettre aux webmestres de progresser à leur rythme dans l’apprentissage du HTML, mais que ses adorateurs extrémistes brandissent comme le diktat suprême d’une cause sacrée.
Leur bible : les « recommandations » du même W3C. Là où tout être normalement constitué sait ce qu’est une « recommandation », eux comprennent « exhortation sauvage au strict respect d’une norme absolue ».
Cette page n’est pas W3C compliant
Si l’on voulait bien les croire, le HTML à papa serait déjà mort, supplanté par une nouvelle race de langage, le XHTML, qui lui-même devrait bientôt muter vers sa forme ultime, quittant la gangue de sa chrysalide obsolète dans un processus dénommé « Modularisation du XHTML ». Hosanna, mes frères, il n’y a de Dieu que Dieu, et XML est son nom, et son fils est modulaire.
L’affreux HTML n’avait pas que des défauts
On voudrait donc totalement tuer l’ancêtre HTML, au motif qu’il serait, comment dire... à chier. Pourtant notre antique langage n’avait pas que des défauts...
Le HTML était, avant tout, un langage simple ; simplifié, même.
Il a été conçu pour être utilisé, sur le Web, à la place d’un autre ancêtre, le SGML (Standard Generalized Markup Language). Le principe du SGML est de décrire la structure d’un document selon une DTD (Document Type Definition) qui définit les éléments logiques autorisés (on obtient ainsi des fichiers documentaires dotés d’une structure logique) ; ensuite, on passe dans une moulinette pour, à partir de règles de description de mise en pages, créer le résultat final, tel que distribué au lecteur. En SGML on a indiqué que telle partie du texte était un intertitre (la DTD autorise l’existence d’éléments logiques définis comme étant des intertitres), on a indiqué dans une définition de style que les intertitres sont présentés avec un certain espacement avant et après, centré au milieu de la colonne de texte, dans telle police de caractère ; le document final présente donc le texte des intertitres, extrait du document SGML, dans cette police et à cette position. Le SGML, pourtant extrêmement puissant et complet, n’est pas si generalized que ça, puisque quasiment personne ne l’utilise pour produire des documents destinés au grand public (à part quelques secteurs de l’édition très spécifiques, tels que la production de dictionnaires). Pourquoi ? Parce que c’est imbitable. La documentation de l’outil de PAO FrameMaker SGML doit faire dans les cinq kilos et plus de mille pages ; au point qu’elle ne comporte pas de numéros de pages pour ne pas effrayer l’utilisateur. Il s’agit pourtant d’un logiciel Wysiwyg...
Dans les cabarets de Berlin, un couple d’hacktivistes hermaphrodites milite pour un retour au HTML prolétarien.
Donc, à l’origine, on rompt avec le SGML, on en extrait quelques balises rudimentaires, la façon dont chaque balise est interprétée est elle-même rudimentaire et directement intégrée dans les logiciels clients (navigateurs Web). Résultat : c’est facile (et plutôt amusant) à apprendre, on fait des progrès très rapidement, on n’a pas besoin d’un treuil hydraulique pour soulever la documentation, et ça tourne sur des machines peu puissantes.
Nous verrons que le XHTML devrait évoluer, sous l’impulsion du W3C, vers un retour aux sources, non du HTML, mais du SGML. On lui souhaite plus de succès auprès des millions de gens qui font déjà leur site à leur sauce HTML, que FrameMaker SGML n’en a rencontré auprès des utilisateurs de la PAO.
Le HTML est un langage tolérant, qui accepte les erreurs.
Dès ses origines, le HTML tolère les erreurs de ceux qui le codent. Cela pour deux raisons fondamentales, objectives, qui ont défini ses principes de base.
Compatibilités ascendante et descendante
Un document HTML réalisé à une certaine époque pour une certaine génération de butineurs reste consultable plusieurs années plus tard avec les butineurs plus récents. C’est la compatibilité ascendante : vous pouvez visiter un site conçu en 1995 pour être affiché par Mosaïc avec la toute dernière version de Mozilla.
À l’inverse, un document HTML récent doit pouvoir être lu avec un logiciel plus ancien. Cela est vrai dans une large mesure (nous reviendrons sur les points particuliers). Si vous développez un site en vérifiant votre résultat avec Mozilla, il sera, du point de vue du HTML, consultable avec Lynx (client Web en mode texte). Pour imaginer l’exploit que cela représente, essayez simplement d’ouvrir un document produit par Word 2002 avec Word 97.
Interopérabilité
Un document HTML ne doit pas être lié à un logiciel ou à une machine, mais consultable sur toutes les machines avec tous les logiciels remplissant un certain nombre de conditions minimales. Par exemple, la présente page s’affiche de manière très graphique sous Mozilla ou Microsoft Explorer, mais peut être consultée en mode texte (Lynx) sur une vieille machine.
Ces deux exigences (qui font partie de la définition initiale du HTML) sont atteintes grâce à une règle simple : le navigateur se contente d’ignorer ce qu’il ne comprend pas. Si l’on utilise des balises dernier cri dans une page Web, elles seront purement et simplement ignorées par les logiciels qui ne les comprennent pas ; de cette façon l’information contenue dans la page est tout de même parfaitement disponible.
De fait, le HTML est un langage extrêmement tolérant, puisque si le webmestre commet une erreur, s’il expérimente une nouvelle balise qui n’est pas comprise par le butineur, rien de catastrophique ne se produit : la page s’affiche tout de même et son ordinateur ne l’insulte pas.
Cela, par exemple, à l’inverse d’une imprimante PostScript qui s’arrête en indiquant « erreur PostScript » ; ou la compilation d’un fichier TEX qui signale toutes les erreurs une par une.
Cette tolérance est sans aucun doute l’une des raisons du succès du HTML : elle permet d’apprendre sans se faire insulter par sa machine (ce qui rebute normalement tout non-informaticien), en autorisant la diffusion de documents contenant des erreurs de codage, sans que personne n’en souffre. En HTML, on peut « coder comme un porc » (parce qu’on apprend, parce qu’on veut produire très vite...), la page reste consultable et l’information accessible
Elle favorise l’apprentissage par patchs successifs : on enrichit progressivement ses pages en fonction de ses nouveaux progrès, sans jamais être arrêté dans sa courbe de progression par une erreur qui bloquerait l’affichage (comme, par exemple, l’oubli de déclarer une variable dans un langage de programmation interrompt la compilation).
Le HTML est une norme d’usage.
Le HTML n’a pas attendu la création d’un organisme de normalisation comme le W3C pour exister et se développer. Il est nettement plus ancien.
Est-il donc possible que le HTML ait rencontré un succès mondial auprès de millions de webmestres, alors qu’aucune autorité supérieure n’en assurait la définition et la normalisation préalable ? Comment qu’on faisait ?
On faisait simplement : on essayait les nouvelles balises, et on regardait sur quelques butineurs différents ce que ça donnait, et on choisissait les solutions qui, à la fois, rendaient service (page plus jolie) et restaient consultables sans trop de restrictions visuelles sur un butineur qui ne les comprenaient pas. Sachant que, longtemps, Netscape a été le seul butineur utilisé par les usagers du Web, cela consistait à tester les nouvelles balises introduites à chaque version, et à attendre un peu avant que cette version soit suffisamment répandue pour faire un usage intensif des nouvelles balises. Puis est venu Microsoft Explorer, mais le principe est resté le même. : on teste les bidules, on échange des trucs, et on regarde comment ça marche avec différents butineurs.
Aujourd’hui, malgré les « recommandations », la situation n’a pas changé : on ne peut exploiter ces « recommandations » qu’à partir du moment où elles sont utilisées par les principaux butineurs, ceux qui sont réellement utilisés par les utilisateurs (comprendre : MSIE à plus de 90%...). Il a fallu attendre la disparition quasi complète de Netscape 4 du paysage avant d’utiliser intensivement les feuilles de style, car l’implémentation des CSS dans ce logiciel (encore très répandu dans sa dernière version avant Mozilla) était totalement buguée ; utiliser les premières recommandations avec plein de feuilles de style était le meilleur moyen de présenter des pages immondes aux utilisateurs. Aujourd’hui, il faut composer avec MSIE (nettement moins irrespectueux des normes qu’on veut bien le dire, mais qui, tout de même, bloque l’utilisation réelle de plusieurs recommandations importantes).
Cette caractéristique de norme d’usage n’a pas produit que des catastrophes (elle n’a, en particulier, pas produit la catastrophe des catastrophes, mille fois annoncée, qui aurait mené à l’existence d’un HTML « ouvert » et d’un HTML privatisé par Microsoft). Elle a, mine de rien, conduit chaque webmestre à systématiquement intégrer dans son apprentissage du HTML les notions de compatibilités ascendante et descendante et d’interopérabilité. Si l’application des recommandations facilite, techniquement, l’application de ces notions, à l’inverse une approche extrêmement restrictive revient à priver les webmestres bidouilleurs de l’acquisition de réflexes indispensables (vérifier systématiquement la compatibilité et l’interopérabilité à son propre niveau).
Les défauts « scandaleux » du HTML
La courte histoire du HTML a eu son lot de difficultés, qui ont énormément fait hurler les puristes successifs (parce qu’avant les normes du HTML 1.1 méga-strict, il y avait déjà des puristes). Ces difficultés semblent l’une des principales motivations à la création du W3C et à une vision extrêmement obtuse de l’application des normes.
Les balises exotiques du HTML
La guéguerre entre Netscape et Microsoft, à l’époque où les deux logiciels coexistaient réellement (MSIE n’avait pas totalement écrasé le marché), a conduit à l’émergence de quelques balises HTML propres à chaque logiciel. Ces balises ont fait couler beaucoup d’encre. Pourtant, rétrospectivement, on cherche encore où est la catastrophe annoncée.
<blink>
La fameuse balise
À part la faute de goût (c’est tarte et laid), elle ne provoque pourtant rigoureusement aucune incompatibilité. Au pire, le texte ne clignote pas... La belle affaire.
<bgsound>
Cette balise made in Microsoft Explorer permettait de faire jouer du son lors de la visite d’une page Web. Là encore, ça n’est pas catastrophique : si elle n’est pas comprise, le son n’est tout bonnement pas joué ; le son n’étant jamais indispensable à la visite d’une page Web, son absence n’est pas désastreuse. Supplantée immédiatement, de toute façon, par d’autres méthodes.
<marquee>
La balise <marquee>
, également une création Microsoft, permettait de créer des bandeaux de texte défilant horizontalement. Balise aujourd’hui totalement oubliée, alors que, curieusement, elle fonctionne toujours sur les dernières versions de Microsoft Explorer et même sous Mozilla.
Au pire, le texte s’affiche mais ne se déplace pas. Encore un scandale inutile.
<multicol>
Cette balise Netscape a totalement disparu. C’est amusant, parce qu’il n’en existe pas d’alternative simple aujourd’hui alors qu’elle pouvait avoir quelques usages pratiques. Il s’agissait simplement d’afficher du texte sur plusieurs colonnes, très simplement.
Utilisée sur un long texte, il s’agit évidemment d’une faute impardonnable nuisant directement à la lisibilité d’une page (le multicolonnage d’un texte sur le Web est catastrophique : le bas des colonnes n’est pas forcément sur le même écran, verticalement, que le haut de la colonne où il faut reprendre la suite de la lecture). Mais à petites doses, c’était très pratique (par exemple pour présenter des listes <li>
équilibrées).
Et toujours rien de catastrophique : sans l’affichage en plusieurs colonnes, le texte s’affiche tout de même, dans une seule colonne. On peut imaginer pire en matière de rupture sauvage avec l’interopérabilité du HTML.
et al.
Il y a eu quelques autres balises très spécifiques, mais elles ont fait couler peu d’encre. Notons que la pire (
Ainsi, du côté des balises exotiques, qui ont justifié de très nombreux discours sur l’explosion du Web, la perte de la compatibilité, la disparition de l’interopérabilité, il s’agissait essentiellement de détails sans réelle gravité. Soit parce qu’elle ne nuisait pas directement à l’interopérabilité, soit parce que, lorsqu’elles le faisaient, elles n’étaient tout bonnement pas utilisées (l’aspect norme d’usage du HTML utilisé par des gens qui échangent entre eux des conseils d’utilisation).
Les véritables problèmes du webmestre
Certaines grosses innovations du HTML ont cependant provoqué des difficultés plus importantes.
Les tables de mise en page
Netscape 3, en affinant les possibilités de Netscape 2, a introduit la possibilité de créer des tableaux (