Joel's Strategy
Joel Spolsky: What’s going to happen? The winners are going to do what worked at Bell Labs in 1978: build a programming language, like C, that’s portable and efficient. It should compile down to “native” code (native code being JavaScript and DOMs) with different backends for different target platforms, where the compiler writers obsess about performance so you don’t have to. It’ll have all the same performance as native JavaScript with full access to the DOM in a consistent fashion, and it’ll compile down to IE native and Firefox native portably and automatically. And, yes, it’ll go into your CSS and muck around with it in some frightening but provably-correct way so you never have to think about CSS incompatibilities ever again. Ever. Oh joyous day that will be.
I can’t help but wonder why Joel and others didn't make greater use of Dean Edward’s IE7 at the time. Possible reasons:
- Joel and others hadn’t heard of Dean’s efforts at the time, for whatever reason.
- Browser incompatibility wasn’t so much of an issue in 2004-2005. One way to look at this is that IE’s dominance at the time was substantial enough that developers could get away with requiring IE and the situation has changed enough that this merits revisiting.
- Dean’s efforts were in the wrong direction... people prefer the APIs as Microsoft implements them.
- Dean’s efforts were incomplete, or performed poorly, or was otherwise inadequate.
- Dean’s IE7 was an all or nothing proposition. It would modify the behavior of existing apps, which was unacceptable.
- Applications worked nearly enough without the download that enough people wouldn’t make the effort, and the net result would be one additional platform to support.
- Dean’s efforts, while interesting, didn’t have enough corporate backing to justify a company to depend on it.
Possible solutions:
- Microsoft, Mozilla, and others work to eliminate their differences. Joel discounts this possibility, and given the progress at WHATWG and the W3C, it is hard to argue with Joel’s assessment. Microsoft has to walk a fine line between throwing its weight around and not showing up, and at the moment they seem to be consistently erring towards the latter. Having a solid beta / tech preview would address this, but there is no indication that this is likely any time soon.
- Something like Silverlight comes along (coupled with Moonlight). Such a solution doesn’t fix your CSS, it replaces many of the technologies that you are used to with new ones. There are no indications that such a solution will ever be deployed on an iPhone. Some have expressed concerns that once Silverlight gains enough tractions, the cooperation that Novell is currently seeing will dry up.
- Something like ScreamingMonkey comes along and solves the JavaScript incompatibilities. I see no indication that this plans to address DOM incompatibilities or CSS incompatibilities, either of which alone can be worse than JavaScript incompatibilities.
Overall, I can’t see anything in any of these solutions that is clearly better than reviving Dean’s efforts, but I would be interested in hearing Joel’s take on this.