Thursday, July 8, 2010

Yes, you've read that headline correctly. There are so many websites that measure HTML5
readiness in one way or another,
and so many marketing pitches that claim HTML5 support for browser X, Y or Z. But the crux of the matter is this. Supporting HTML 5,
regardless of definition, is not a boolean proposition. I.e. It's not something you do or do not, it is something you do
more or less.

This discussion will consist of two posts. The first is an anti-webkit fan boy rant, probably only useful as self-therapy for me.
The second part is my technical discussion about the subject matter at hand.

Rant begins here

Whenever a major browser vendor releases a new version, or preview version, you can bet a month's salary on the fact that comments will
appear on forums, Twitter or blog posts that asks does
it support HTML5 (it used to be CSS 3).
Some other browser is then hailed as if it does, usually Safari or Chrome, since they have either
the most obnoxious marketing
or the dumbest fan boys(?) And sometimes the comment is made complete in its stupidity by an argument that vendor X should just
“use Webkit”.

I do not intend to throw cheap jabs at Webkit, in any incarnation, be it Chrome, Safari, Froyo, S60, Web OS,
Nokia WRT, QTWebkit or WebkitGtk. Webkit is a really good
rendering engine, or perhaps nowadays more aptly described as the core of a rendering engine. OK, maybe I'd like to throw a jab at
Froyo and Adobe AIR for the dumb ass decision not to enable SVG, but that's beside my point, and not Webkit's fault at all.

Other comments like Mozilla is lazy or have stopped inventing are
not hard to find
either. But it's hard to claim that Opera is not inventing, so non Opera fan boys just tend to ignore them. After all,
that makes it much easier to claim originality, even though one has just copied Opera.

I am not saying that Firefox is without it's gang of fan boys. Perhaps they are equally loud and obnoxious, but it's been a
long time that they've been in my vicinity. (Or perhaps I am that fan boy?)

Source of confusion number one: Browser vendors

It is reasonable to expect the upstarts to be more aggressive in their marketing, but marketing tends to turn into blatant lies when exaggeration
is becoming the norm. Consider this support chart for Safari 5 from Apple:

Problem is, once someone has started to claim support for a feature, even though that support is half baked and incomplete,
everyone else has to answer in kind, and claim support even when their implementations are equally half-baked. Or even worse,
rush out such half baked implementations to the market to show everyone that they are also a leader.

(I'll explain why Apple's claims are false in part 2 of this discussion.)

Source of confusion number two: Well intended web developers

Why is this a source of confusion? Because we tend to put up demos of new cool technologies that are not really examples of best practice, e.g. even
though transformations and transitions work in the latest versions of Firefox and
Opera, many demos use the webkit prefix only. Heck, I've even seen
demos of rounded corners, something that's been in Firefox since 2004 (3 years ahead of Webkit) that used the only the -webkit- prefix!
(Yes, I know there are good examples as well.)

I am not surprised that Apple browser sniffs for Safari in their HTML5 demos –
even though I am annoyed at such blatant disregard for best practice.
After all, that's not technology, that's marketing.
(And yes, I know there are a few things that one can do in Webkit based browsers only, such as CSS Animations (not transformations) – a
technology still in need of a valid use case, BTW – and CSS perspectives, but that's also beside my point.)

When the WebGL Quake demo originally worked in Chrome only, thanks to flaws
in the demo code, not in Firefox itself, it was claimed that Firefox was
”too slow”, even before such a claim could be tested.
That was not marketing (I hope), that was developers not doing their job. And when someone is demoing
reflections in Webkit, without at least discussing
that Firefox can do the same thing, albeit
with a different technique, which is more powerful,
BTW, it might be lack of knowledge. But the lasting impression on readers, equally lacking in knowledge, is that Webkit
based browsers are soo far ahead, when in reality they are not.

Another example is gradients. They first appeared
in Safari and for a while they could not be demoed in any other browser. But since 3.6
Firefox supports gradients as well.
Doing an gradient demo today using the webkit syntax only is not only bad practice because it is limiting
the demo to a few browsers. It is also cheating oneself and one's audience of the syntax that is much more likely to be
the upcoming final W3C standard. I.e. If you are limiting your demo to one syntax only,
the Firefox version is the more future proof one, the one web developers really should be looking at in earnest.

Where innovation happens = everywhere

Even Internet Explorer, that I've cursed so many times, did tons
of stuff already in the 90's that's only recently have been picked up by others. Yes, there is one big difference.
The filters in IE were not being put forward for standardization, but was an
attempt to embrace and extend,
Microsoft of the 90's primary way of competing in unjust ways. But from a pure innovation standpoint, IE was first in doing many things.

And for all Webkit fan boys I have a home assignment.
Please investigate where the following technologies were invented:

WebGL

HTML5 video and audio

Using any element as CSS backgrounds

Applying SVG effects on non SVG content

Full page zoom

Canvas text

Compiled JavaScript

Hardware accelerated SVG and Canvas

Audio Data API

Hint: The answer is not one and the same, but never Safari or Chrome.

I am not saying this to diminish the considerable achievements by Webkit browsers, but wishing for a Webkit monoculture is plain stupid. Just like
it was plain stupid to wish for a Gecko based monoculture five years ago – when Webkit hardly was a blip on the radar and had
tons of bugs (JavaScript in Safari 2 anyone?). And what if KHTML never had been developed? It could hjave happened since lots of people thought it
would be better for Konqueror to switch to Gecko. Well, Webkit is based on KHTML, so if that advice had been heeded, we would not have had Webkit
today.

End of rant – sort of

All of the above is not me saying Chrome is a bad browser. It is not. In some ways it's the best browser – but not in every way!
My primary reason for not using Chrome in my daily work? I think monoculture is bad and even though I sympathize with Google using Chrome to push
the competition into being faster, I do not want to see a world where one company is the dominant player at every tier of the web
experience. Such power will inevitably corrupt, no matter how hard the company in question tries to avoid being evil. Add to that
a leader that is absolutely clueless
about integrity and that by far outweighs the fact that Firefox currently is a few milliseconds behind Chrome in some JavaScript benchmarks.

Oh, yes, I use Linux, so Safari is not an option at all.
And Apple is every bit as evil today as Microsoft was in the 90's.

My primary reason for supporting non Webkit based mobile browsers like Opera or Fennec (Firefox) is not that they are clearly superior.
In many ways they are not – and again in some ways they are! (At least they do SVG, Froyo!) But once again it comes back to this.
Monoculture benefits no one in the long run. For a moment the idea might seem to be appealing – as when developing
a specific web app – but holding on to such an idea in the long run is just showing lack of vision and lack of historical knowledge.

To round things off, here is a video (HTML5 video was an Opera idea) of WebGL in Firefox 4 – a
technology invented mostly by Mozilla.
(Oops! I just gave away two answers in my home work assignment.)

OK, therapy session is over. Glad to have gotten that off my chest. Tomorrow I promise to be productive!

5 comments:

One statement I would add: no browser will actualy support HTML5 ever, like no browser supports HTML4 yet (even given that HTML4 is true Hyper Text Markup Language, unlike HTML5 which is everything HTML+CSS+DOM+WebGL+99*APIs).

It explains how Webkit is far behind Gecko and Presto on scrolling pages that contain box-shadow.

(Yeah. There are scrolling issues in Firefox too. My point is that Webkit is not super, duper awesome and better than the rest in every regard. BTW, once retained layers are landed in Firefox 4, you will see some amazing scroll speed!)