IE10 PP2, ‘site-ready’, and Positioned Floats

The second platform preview of IE10 was released yesterday. Apparently it is the same version of Trident that powered the recent Windows 8 demos, so there you go.

First impression is it continues the rapid pace of recent IE development. There’s a lots of really cool additions, although no single, striking visual feature, like gradients or transforms, this time. Instead, mostly this release seems to be focused on a spread of new APIs and more subtle features, although it’s no less impressive for that. As usual, Hachamovitch writes the announcement blog post and mixes in the usual marketing stuff, around Microsoft’s ‘site-ready HTML5’ line, with the descriptions of new features. Personally I wish they’d get someone technical to write these posts and put in a few code snippets and whatnot, Scott Guthrie style, but whatever.

I know it’s not wise to pay any attention to political or marketing waffle, but this whole ‘site-ready’ especially confuses me when you look at what they’ve actually added in this release. As far as I understand, The ‘site-ready’ thing is about Microsoft wanting to make the distinction between browsers adding features that are experimental vs those that are stable. Experimental features are things like Web Sockets that are still undergoing a standardisation effort and may change significantly before they are finished, as parts are added or changed, and bugs discovered. Whereas stable features are those that have been in development for longer, and which have reached a level of maturity where major changes are unlikely. Microsoft point to the trouble with Web Sockets experienced by Chrome and Firefox, where they implemented an early version of the protocol, only to have to disable it when a security flaw was discovered, as demonstrating the dangers of releasing experimental features too early. It puts users in danger, they say, and leads to developers having to keep rewriting their code to target changing APIs. In response, Microsoft created their HTML5 Labs initiative to prototype implementations without building them into IE proper.

Now, that’s all reasonable and sensible. But now look at the most trumpeted of the more visual features added to PP2: Positioned Floats. The idea here is to allow text to wrap around floated elements in a controllable way, such as in the manner demonstrated in this image that I have ‘borrowed’ from Microsoft’s draft spec:

Nice idea, very useful, etc. The spec it’s contained within is CSS Floats and Positioning Level 3. Although the spec is formatted as W3C editor’s draft, if you look at the URL you’ll see that it’s hosted on interoperabilitybridges.com, which is a site Microsoft uses to host a lot of its standards-based and interoperability projects. That’s because it’s not actually an official W3C CSS3 module, just a proposal for one.

In fact, the spec is an amalgamation of two previous proposal: One by Microsoft to extend positioning for floats, and the other being Adobe’s CSS Exclusions. Adobe’s spec was previously part of their CSS Regions and Exclusions proposal, which was created and prototyped together by Adobe as a way of letting web browsers create the kinds of fancy, magazine type layouts that a lot of publishers are creating in native iPad apps. The spec for the feature was laster split into separate Regions and Exclusions modules. In addition, Tab Atkins of Google has also been working on a Positioned Layout spec that covers much of the same ground and which he was supposedly going to publish as a new CSS3 module later this summer. Oh, and there’s another CSS3 module called Generated Content for Paged Media that also extends CSS 2.1 floats to allowing floats elements with respect to pages and multiple columns.

At the recent Kyoto face-to-face meeting on the 11th of June the W3C CSS working group looked at all these different proposals and decided on an action to bring them all together in a single new mega-spec called CSS Floats. Whereupon, they can be all be progressed together and the overlaps and interactions between them defined, and at some point in the future possibly split out again into separate specs.

Confused yet? There’s nothing really wrong with all the above, it’s just a result of there being a lot of people with good ideas, all interested in making progress in the same area, and having to work together to achieve it. However, it seems to me to be very clear that what Microsoft calls Positioned Floats in IE PP2, which is as yet only specced in a non-official W3C proposal on interoperabilitybridges.com, is very far from being in the least bit stable. In fact, it has effectively already been superseded by this as-yet unwritten spec that the W3c intends to produce. It also appears from the minutes of the FTF that at least one person, Mozilla’s David Baron, has strong concerns about whether it is a good idea at all.

In this situation, for Microsoft to turn around and not only implement positioned floats, but to do so while beating their drum on so called ‘site-ready’ standards vs those that are still experimental, seem just a little hypocritical. Now, I know Microsoft guys would say that their competitors add new CSS features as and when they feel like it, often without even a proposal spec. Apple in particular have been guilty of this on several occasions. And they’re right of course. I don’t object to Microsoft including an experimental implementation of positioned floats in IE10 if they want, but I couldn’t miss the opportunity to point out such a blatant example of double-standards and use it to illustrate ome of the craziness in the CSS standardisation process.