Time: 00:00:00 / still to go: 20
Date: 0000-00-00
Slide: 00/00
HTML5 represented by a mix of oldtimer car and formular 1 racing car
Previous Slide Button Table of contents Button Next Slide Button

HTML5 Critiques' Corner

Klaus Birkenbihl
ict-Media GmbH
the critic

Quod est demonstrandum ...

HTML5 if it was a car

Disclaimer

I did these slides in XHTML5 from scratch...

... it did not hurt too much.

Example: editable Content

What does the spec say?

Quiz (question 1)

Consider this innocent Javascript statement:
p.contentEditable = false;

Quiz (answer 1)

Consider this innocent Javascript statement:
p.contentEditable = false;

Sets p.contentEditable to boolean false?
Nope it sets it to the string "false" . At least it achieves the intended effect.
But the only values allowed for contentEditable are ASCII case-insensitive matches of the strings "true", "false" or "inherit".
So you better never use in this way: if(p.contentEditable) ...
p.isContentEditable will be set to boolean false as side effect.
So you might want to use this for tests.

Quiz (question 2)

What about:
p.contentEditable = !p.contentEditable;?

Quiz (answer 2)

What about:
p.contentEditable = !p.contentEditable;?

Toggles p.contentEditable? Nope!
Sets p.contentEditable to "false". Always!!! Why???
To toggle you might use
p.contentEditable = !p.isContentEditable;

Quiz (question 3)

Now you are smart - I cannot fool you any more:
document.designMode = "true";?

Quiz (answer 3)

Now you are smart - I cannot fool you any more:
document.designMode = "true";?
Switching design mode on? Nope: it will simply be ignored.
To switch design mode on you may use ASCII case-insensitive matches of the string "on".

Good systems design is just NOT about following the principle of biggest surprise!

... ASCII case-insensitive matches of ...

One of the character sequences used most in the spec is ASCII case-insensitive matches of because we live in an environment where sometimes ASCII case matters ... sometimes it doesn't.

Ha??? Don't take this too serious. I'm confused, probably wrong, and its all even much more complex.

Why all these annoying little oddities ...?

New functionality: Multi-threading
Web Workers are great

Simulation using Web workers

Multi-threading but no shared storage

Managing Change: Vendor prefixes (in CSS3)

Different from most of HTML5, CSS3 comes in modules. Each has its own rec process at its own speed.

Managing Change: Vendor prefixes (in CSS3)

Who has the say?

Is there a schism between WHATWG and W3C?

Implementors of HTML5 implement quickly new features

Developers' situation before HTML5

A reasonable development strategy:

Developers' situation in the age of HTML5

Best available strategy (if you don't abstain):

Being at the leading edge has a price

HTML.next just an extension of HTML5?

HTML.next just an extension of HTML5?

3 challenges

Thank you!

HTML5 handed over to W3C by WhatWG
http://www.ict-media.de/ --- copyright © 2012 - ict-Media GmbH