FYI, Chris Wilson, de chef Internet Explorer bij Microsoft zegmaar, is enkele dagen geleden vice-voorzitter van de HTML WG geworden. En maar goed ook, ik ben dan géén fan van IE, maar zonder medewerking van Microsoft en zonder input van IE devvers heb je volgens mij echt een loze specificatie. Ik ben
blij dat de ontwikkeling van de opvolger van HTML 4.01 vanaf het begin meteen door zo'n breed platform ontwikkeld wordt.
Natuurlijk leidt een en ander nu al tot uitgebreide discussie over hoe zaken aangepakt moeten worden. Zo is Chris Wilson
voorstander van versioning: versienummers voor elke nieuwe HTML-specificatie, zodat een web author per document aan kan geven op welke wijze de browser dat moet behandelen. Het voorgestelde <!DOCTYPE html> voor HTML5, zonder versienummer, lijkt hem dus niks.
Wilson betoogt, dat versioning nodig is voor IE, om compatible te blijven met alles wat er nu aan webcontent bestaat. Wilson geeft aan dat ze er bij de ontwikkeling van IE constant tegen aan lopen/liepen, dat ze het gedrag van de browser niet zonder meer kunnen verbeteren naar standards conformant gedrag, omdat ze anders miljoenen bestaande websites vernielen die gebouwd zijn, uitgaande van de manier waarop IE het *fout* (gezien de spec) deed.
In IE6 en IE7 wordt op basis van het doctype geswitcht tussen quirks mode en standards mode: de webdeveloper moet min of meer zelf kiezen voor een behandeling volgens de standaard, door gebruik van het juiste doctype. De default rendering is dus echter: lelijk en met fouten... om het huidige web niet te breken (want alle oude websites hebben natuurlijk ook geen HTML 4.01 doctype en die worden vandaag de dag net zo gerenderd met de debiele bugs zoals die vijf jaar geleden ook al in IE zaten).
Wilson wil dit switchen (en dus anders behandelen) per HTML-versie kunnen blijven doen, ook bij de toekomstige HTML-versies. Eén van de participanten uit de HTML WG zegt het volgende:
"We should be willing (when provided good reasons to do so) to define things that would require even the market leader to break compatibility."
Wilson zegt: we zijn wel marktleider en het merendeel van de bestaande websites is op ons als marktleider geoptimaliseerd. Daarbij is veelvuldig rekening gehouden mét onze bugs."
Als voor een nieuwe HTML-spec die bugs opgelost worden omdat er naar aanleiding van goede testcases een correcte implementatie volgens die nieuwe spec komt, dan kun je die implementatie niet zonder meer op oude sites toepassen, want die webdevvers gingen er vanuit dat IE juist géén implementatie van een goeie specificatie zou hebben. Dus zelfs al is je nieuwe HTML specificatie backwards compatible met de vorige versie van HTML: het feit dat er zoveel websites stuk gaan als IE (met 80 procent marktaandeel) die juiste implementatie op oude sites toepast, zorgt ervoor dat ze dat niet zullen doen.
Kortom: Microsoft wil bést een standards compliant rendering en ze willen heel graag een bugvrije implementatie van een nieuwe HTML-specificatie, maar ze kunnen die niet zomaar op alle bestaande content toepassen (zelfs dus als de HTML-spec volledig backwards compatible is), omdat de meeste (?) websites gebouwd zijn voor oudere versies van IE die het niet nauw namen met standaarden. De enige oplossing daarvoor lijkt voor Wilson dus versioning: elke content kunnen blijven behandelen volgens de rendermethode die gebruikt werd ten tijde dat de website gemaakt werd.
Chris Wilson maakt wel een sterk punt in zijn essay waar ik net naar linkte. De HTML WG heeft als uitgangspunten onder meer: 'Don't Reinvent The Wheel', 'Pave The Cowpaths' en 'Evolution Not Revolution'. Anders gezegd: bestaande implementaties of veel gebruikte praktijken moeten in beginsel op die wijze gespecificeerd en gestandaardiseerd worden, in plaats van ze te verbieden en te menen een beter alternatief te moeten introduceren. Daar is de ontwikkeling van XHTML2 juist misgelopen: bestaande praktijken worden 'verboden' en er wordt een zogenaamd 'beter' alternatief voor in de plaats gezet. Zo kun je de webdevelopers community dus
niet sturen, zo blijkt na zoveel jaar. Standaarden moeten (goede) bestaande praktijken
beschrijven om tot een eenheid te komen. Door het verbieden van een veelgebruikte praktijk en het bieden van een kunstmatig alternatief bevorder je geen eenheid.
Met dat in het achterhoofd zegt Wilson:
"This DOES NOT (in my opinion) give us (the WG) the license to break compatibility with current standards like HTML 4.01 - like XHTML 2 did, or even like XHTML 1.1 - unless that standard does not represent current practice in browsers, in which case we have a decision to make."
Met zoveel marktaandeel (hoe weinig fan ik ook ben van IE) moet je toch zo eerlijk zijn om toe te geven dat IE de de facto standaarden bepaalt op dit moment: IE
is de current practice over de afgelopen tien jaar geweest. Voor de toekomst kan dat natuurlijk allemaal veel mooier en beter, als IE ook een standards compliant implementatie heeft... maar dat moet dan alleen op nieuwe documenten toegepast worden, die onder de nieuwe specificatie gemaakt zijn. Een vorm van versioning lijkt dan inderdaad onontbeerlijk om het dilemma van Microsoft op te lossen. Wat alleen dramatisch wordt, is dat je dan voor elke HTML-periode een gelockte rendermethode krijgt... waarin de op dat moment bestaande bugs of implementatiefouten van IE bevroren worden en de komende honderd jaar in die browser ingebakken moeten worden voor documenten uit die periode, omdat die documenten anders lelijk weergegeven worden.
Juist echter vanwege dit soort buitengewoon belangrijke praktijkkwesties is het dus onontkomelijk en juist alleen maar goed dat ook Microsoft meewerkt aan de specificatie. Een specificatie die zonder de medewerking van een vertegenwoordiger van het IE-team door een stel uiterst theoretische standards advocates wordt geschreven en daarbij niet de praktische implicaties in het oog houdt, zou door Microsoft (terecht) meteen ter zijde geschoven worden. Dan heb je een hoop werk verzet en helemaal geen resultaat (of net zo weinig als met XHTML... dus verwaarloosbaar). Ik ben juist blij dat de ontwikkeling zo breed gedragen wordt in de industrie.