Pourquoi le W3C va perdre le contrôle du web

Alors certes, j’écris désormais très rarement dans ces pages. Mais là, je ne me vois pas rester sans réaction. En effet, la récente rupture entre le W3C et le WHATWG au sujet de HTML5 est un événement majeur pour le web. Or, les quelques billets que j’ai lus jusqu’à présent sur le sujet ne prennent pas tout le recul nécessaire à son analyse.

Pour avoir été de ceux qui ont suivi HTML5 bien avant que cela soit le « hype » qu’il est devenu depuis 2 ans (cf. cet article de 2007), voir le torchon brûler entre le W3C et le WHATWG a quelque chose de désolant… mais pourtant devenu aussi nécessaire qu’inévitable. Alors qui a raison et qui a tort dans cette histoire ? Quelles vont être les conséquences pour l’avenir de la norme et les possibilités offertes par les navigateurs ? Autant de questions qui valent la peine qu’on reprenne le sujet depuis le début.

1990-1996 : HMTL sans le W3C

On l’oublie souvent mais le HTML s’est développé dans ses jeunes années sans le W3C : sous l’impulsion du Tim Berners-Lee et du CERN (son employeur jusqu’en 1994) dans un premier temps et via l’IETF (dont la mission est le développement et la promotion des standard pour améliorer Internet) ensuite. Lorsque Berners-Lee quitte le CERN, il fonde le W3C au MIT avec l’aide de la commission européenne et de l’incontournable DARPA (l’armée américaine étant un peu la grand-mère d’Internet).

Néanmoins, en novembre 1995, c’est encore l’IETF qui publie la version 2.0 de HTML et qui maintiendra cette version jusqu’à la fermeture de son groupe de travail sur le sujet en 1996. En effet, le processus de standardisation prôné par l’IETF, faisant appel à un consensus trop large, ne lui permet plus d’avancer à un rythme raisonnable alors que la première guerre des navigateurs (IE vs Netscape) commence.

1996-2000 : Microsoft, Netscape et le W3C

La prise en main de la standardisation par le W3C va aboutir à un drôle de paradoxe : l’innovation n’aura jamais été aussi rapide sur le web, les normes aussi approximativement respectées… mais aussi nécessaires ! En effet, la guerre des navigateurs déclenche l’apparition de Javascript en décembre 1995 (qui sera standardisé par la suite par l’ECMA), mais aussi de nouvelles technologies (ActiveX utilisables au sein d’IE, VBScript, JSSS) et balises spécifiques (marquee et blink !).

Malgré cela, le W3C parvient à produire des normes (« recommandations » dans le langage W3C) à un rythme soutenu dans ses jeunes années :

– CSS 1.0 en décembre 1996 : une performance d’autant plus appréciable que le W3C partait quasiment d’une feuille blanche et qu’il a étouffé dans l’oeuf les tentatives propriétaires d’alors

– HTML 3.2 en janvier 1997… en y incluant notamment, les balises non-sémantiques (les affreuses b, i ou u pour faire de la mise en forme, faute de css) introduites par Netscape.

– HTML 4.0 en décembre 1997

– CSS 2.0 en mai 1998

– HTML 4.01 en décembre 1999, qui est toujours en 2012 la recommandation officielle du W3C pour HTML…

– XHTML 1.0 en janvier 2000

2000-2007 : stabilité ou immobilisme ?

Dans cette période archi-dominée par IE6, la notion de standard du web a un écho important dans la communauté libre qui tente de pousser Mozilla face à la domination sans partage de Microsoft. Pourtant dans l’intervalle, les 2 principaux groupes de travail du W3C tournent en rond, qu’il s’agisse du HTML ou de CSS (il y aura, fort heureusement, de belles avancées dans d’autres groupes de travail) : les nouvelles recommandations se limiteront à XHTML 1.1 en 2001 qui n’apportera cependant que des modifications très mineures. Cette absence d’évolution aura néanmoins une conséquence bénéfique en permettant aux éditeurs de navigateur de combler le retard assez important qui avait été accumulé dans le respect de la norme.

A cette époque, pour le W3C, le successeur d’HMTL 4.01 et de XHTML 1.1 sera XHTML 2.0 : un langage qui nettoiera définitivement HTML de ses errances passées et qui permettra d’aller vers un vrai web sémantique. Mais, les drafts (brouillons de la norme) s’enchaînent sans que l’on ne s’oriente vers un début de standard : de 2002 à 2008, ce sont pas moins de 8 drafts qui vont être publiés… sans suite ! Quant à CSS, on arrive à une situation incompréhensible où CSS 2.1 n’arrive pas à être validée (ça n’arrivera qu’en juin 2011, soit 13 ans d’attente pour une révision mineure…) et où CSS 3 est divisé en multiples modules qui évoluent à des rythmes très divers sans jamais atteindre le statut de recommandation (aujourd’hui 4 modules, sur plus de 50, ont ce statut).

2007-2012 : WHATWG et HTML5

Pendant que le W3C travaille sur des standards qui n’aboutissent pas, quelques éditeurs de navigateur web trépignent et voient d’un mauvais oeil les travaux du W3C sur le XHTML 2.0 pour au moins deux raisons :

– ça n’avance pas et la présence de certains lobbies (je pense à Microsoft par exemple) au W3C fait que ça avancera de toute façon difficilement quelque soient les propositions ou le mode de travail

– l’orientation de XHMTL 2.0 W3C est très web sémantique et pas du tout technique. Pour le W3C, le web n’a pas été initialement pensé pour faire des applications, mais des documents structurés reliés les uns aux autres… et peu importe que l’histoire de l’informatique ait fait du web la nouvelle plate-forme de référence pour le développement d’application !

En 2004, Opera et Mozilla donnent leur vision de ce que devrait proposer une norme web pouvant satisfaire les besoins des applications. Le groupe de travail sur les applications web vote contre (8 voix contre 14). 2 jours plus tard, Opera, Mozilla et Apple lancent le WHATWG. Google, en embauchant Ian Hickson, les rejoindra par la suite. Une invitation à participer aux débats sera également soumise à Chris Wilson de Microsoft qui la déclinera.

Le WHATWG construit alors une spécification particulièrement ambitieuse pour répondre aux objectifs formulés lors de cette fameuse réunion de 2004 : Web Application 1.0 qui deviendra HTML5. Si bien qu’en 2007, le WHATWG demande officiellement au W3C d’adopter leur travail en tant que brouillon de spécification. Quelques mois plus tard, le W3C craignant probablement de perdre la main sur « sa » norme et ne pouvant qu’admettre l’échec de XHTML 2.0 accepte la proposition : HTML5 est officiellement sur les rails…

Pendant 4 ans, la norme progresse à petits pas : un premier draft sort en 2008 mais l’étape « Last Call » (dernier appel à contributions) qui devait intervenir fin 2008 n’interviendra qu’en 2011. Le W3C vise alors le statut de recommandation pour 2014. Parallèlement, le W3C a découpé en petits morceaux des tas de nouveautés d’HTML5 pour en faire des groupes de travail distincts : géolocalisation, base de données embarquée, API de gestion des fichiers, API de dessin canvas… Une méthode censée accélérer le process de standardisation mais qui fut un échec dans le cas de CSS3.

2012 : le W3C perd la main

Durant ces nouveaux atermoiements, HTML5 a vu son adoption progresser de manière inattendue pour plusieurs raisons :

– les membres du WHATWG (c’est à dire les principaux navigateurs sauf IE) n’attendent pas pour rendre les fonctionnalités disponibles

– le web mobile encourage fortement à son adoption

– une communauté de développeurs s’enthousiasme pour ce mouvement et crée des outils (tels HTML5 shiv, Modernizr ou HTML5 boiler plate) pour encourager le basculement vers HTML5

Et pendant ce temps, Microsoft (avec IE) et le W3C (avec ses normes) courent après les apports des membres du WHATWG pour les intégrer plus ou moins vite à leurs propres productions… En avril 2012, on apprend ainsi que le Last Call de 2011 a suscité trop de problèmes et qu’il faudra un « Last Call 2 » pour avancer : le W3C parle alors d’un plan de stabilisation de HTML5 et d’introduire HTML.next pour traiter les aspects qui seront repoussés dans le cadre de ce plan.

Ces nouvelles hésitations finissent par lasser le WHATWG qui décide de prendre acte de la situation : le WHATWG avance donc avec sa norme de son côté (HTML living standard) et essaiera de soumettre ses évolutions au W3C afin que celui-ci les intègre à HTML5. Ian Hickson qui était à la fois éditeur des versions W3C et WHATWG de la norme se retire du W3C (et d’après certains de ses posts Google+, on peut voir qu’il en avait assez depuis quelques temps).

La seule question qui compte : que fera Microsoft ?

Les arguments de Ian Hickson emportent définitivement mon adhésion : une norme vivante (c’est bel et bien ce qu’est HTML5 depuis maintenant 7 ans) est plus adaptée au web qu’un standard figé. L’organisation du W3C, minée par les mêmes problèmes qu’a connu l’IETF en 1995-1996, et la position pour le moins ambiguë de Microsoft au sein de celui-ci tout au long de son histoire laissent aussi penser que le WHATWG est un meilleur lieu pour le développement de cette norme.

La seule question qui vaille est donc : sur quelle norme va travailler Microsoft ? Depuis le début, les architectes d’IE rejettent le WHATWG sous des prétextes assez fallacieux et il paraît peu probable qu’ils s’y joignent rapidement. Nul doute que dans un premier temps, Microsoft se targuera d’être du côté de la « vraie » norme, celle proposée par le W3C. Parallèlement, Opera, Google, Apple et Mozilla mettront en place de nouvelles fonctionnalités : les 3 premiers cités régnant en maîtres sur le mobile, on a du mal à imaginer qu’IE mobile ne cherche pas à s’aligner à terme… et qu’il en soit ensuite de même pour IE sur le desktop qui n’est désormais plus majoritaire.

Conclusions personnelles

– Ma référence en matière de HTML sera désormais le HTML living standard, parce que c’est une approche cohérente, qui dans les faits fonctionne, et parce que j’ai envie que le web avance vraiment.

– Pour mes projets web mobile et Phonegap : pas de problème d’IE en perspective.

– Pour mes autres projets, il faut déjà de toute façon gérer les retards d’IE sur le reste du monde, on continuera donc à s’adapter comme on le fait depuis de trop longues années. Heureusement, depuis la fin du support d’IE6, on sait que les pires choses ont une fin : IE finira donc pas rentrer dans le rang ou disparaîtra, le tout est de savoir quand !