The next few years in browsers
I somethimes wish that CSS was designed to work as a layout system, and not just a Cascading Style Sheet. Yes, you can do layout in css .... kind of. It works, sometimes, if you know the right special case to apply and wrap it in enough container divs. But there is hope. Css is going to get better in this respect with the CSS3 suite of proposals. By the way, there is no single CSS 3 specification, it's a raft of modules, all progressing individually.
Take, for example, my favourite upcoming feature - the grid layout in Internet Explorer 10, proposed by Microsoft and currently going through the standards process. This layout model worked really well in WPF and silverlight – it's concise and sane and it makes it easy to make a wide range of column-and-row layouts that scale with the window size.
And it's coming to CSS. But when will it land, exactly? After W3 approves this spec (I'd guess some time in 2012), it will most likely make it into a major new revision of Chrome and of Firefox within six months after that, and the majority of users of those browsers will have it within a year of approval. This rapid uptake is due to frequent updates and how those browsers automatically update users to the latest version.
IE, however, is not nearly as frequently updated. At my work, a web app whose users are mostly at corporate desktops using IE, took the bold step in 2011 of ending IE6 support, since so few people now use it that not's not worth the effort to maintain the javascript etc on it. Maybe 2013 is about when they’ll be ready to end support for IE7. Ditching IE 7 on corporate desktops just 2 years after IE6 is quite fast, given that IE7 was released 5 years after IE6. Even on the consumer-facing internet, IE9 may still be common in 2 years time.
IE9, by the way, is the IE version where JavaScript gets acceptably fast to not lag lots compared to Firefox or Chrome on reasonably large JS programs. The other browsers work well enough - out of Firefox and Chrome, which one's fastest this month? I don't mind which one’s currently ahead in that arms race. Which ever one’s winning right now, we all win, even users of the other one. Also, are we there yet? By "there" I mean when JavaScript is almost as fast as the equivalent C code and there are no more speed doublings to be found. If we're not there yet, we will be soon.
So IE7 is the new IE6 now, and IE8 will be it in a few years. Some version of IE is going to be the boat-anchor browser for the foreseeable future. In a year or three from now, we'll still be supporting IE8 and 9, and layouts that don't work in these browsers will be a non-starter, even the cool new layouts that Microsoft has championed. Microsoft giveth, and Microsoft holdeth back.
But Microsoft's people must know this, and I wonder if there’s a strategy in place to deal with it – IE10 will, I think, run on Windows 7 so IE9 on Windows 7 might just be aggressively updated to IE10. However the corporate machines running XP or Vista won't run IE10 and will be stuck with what they have.
Is there a plan to prevent this pattern from recurring with IE 10? How will IE10 that ships with Windows 8 deal with whatever new web standards come out after it ships? Given that the IE10 html engine + JS is a full-fledged Win8 Metro programming tool, is an IE10.1 at all posssbile without breaking things?
Incidentally, it will be interesting to see how the CSS grids standards effort plays out, since these are a necessarily feature for Win8 html apps. Either CSS grids become a final w3 standard before IE10 and Windows8 ship, or IE10 ships with a non-final version that could differ from what the W3 finalises.