[PRL] Martian Headsets
Dave Herman
dherman at ccs.neu.edu
Mon Mar 17 23:12:45 EDT 2008
> The robustness principle was actually the right thing,
> but you also need a Spanky mode.
I think I agree, although there are still hard questions of a) default
behavior and b) the nature of the agreement between the
platform/language/browser and the client/programmer/web developer.
The robustness principle was a big part of the success of the
web--anyone, no matter how sloppy, could create a web page. But it's
impossible to support both progress in browser implementations and
continuity of behavior; as Joel alludes, there are multiple instances
where people have discovered ways to exploit one IE bug to circumvent
another. Now MS has to choose between continuity and progress. From what
I can tell, the pragmatic answer almost always seems to be: keep the
quirky, old behavior the default, but allow people to opt into a new
mode. It's not clear to me how many times you can get away with this
before your code base sinks under the complexity of countless modes,
emulated bugs, etc.
So you could also try to set things up where the browser vendor makes no
guarantees (beyond, say, a best effort) to provide continuity in
behavior for default mode, but offers stricter modes with stricter
guarantees. Back 8 or 9 years ago, XHTML kinda looked like it was trying
to do that... except XHTML is a joke. (From what I hear, it's a pretty
textbook case of the perfect being the enemy of the good.) I think one
of the most impractical aspects of XHTML was that it was a parallel
standard, and parallel standards just can't keep pace with the real
standard. Especially when you're talking about big multi-party standards
sloths (W3C) competing with the ultra-competitive market.
But I think human nature is another problem with XHTML: offer the world
a strict version and a sloppy version, and they use the sloppy one.
Almost no one uses XHTML. And the browser vendor doesn't have the luxury
of an explicit contract with the world: browsers are free, they have
billions of clients, and if they don't do exactly what the clients want,
they lose in the court of public opinion. It's like an unwritten
contract where the client gets to dictate all the terms, except the
service provider has to guess what they are.
As for Spanky mode, this was the thing in Joel's post that made me slap
my forehead, because it's been staring me in the face for years now. I
never really appreciated Spanky's potential for compatibility testing. I
hope our reference implementation of ECMAScript 4 becomes useful for
that. Unfortunately, the Achilles heel of the Spanky approach is that it
relies on MS being relatively faithful to the spec.
As an aside, it's kind of hilarious that for years the W3C have treated
XHTML and CSS validators ("yep-- I think that's a web page!") as somehow
helping people create portable web apps.
> One of the nice things
> about a Spanky mode is that it reveals as much about the
> errors made in the standard itself as in the individual
> artifacts that attempt to conform to the standard.
Indeed. In our SML implementation of ES4, we've gotten a lot of mileage
out of using the MLton compiler as a pedantically standards-compliant
implementation of SML. One thing I've learned from using it is that SML
totally screwed the pooch on the definition of `withtype'. It has
non-nesting binding semantics (let instead of let*), which pointlessly
restricts its usefulness. I never even knew that SML/NJ violated the
standard, preferring the better semantics over compliance, until I tried
compiling our code with MLton.
> It should also be noted that IE was notorious for its
> poor adherence to standards. Microsoft created its own
> dilemma. That's the real moral of Joel's story.
Joel is one of MS's biggest critics, so I doubt he'd disagree with you.
But still, there's no denying that when it comes to software evolution,
success is its own worst enemy.
Dave
More information about the PRL
mailing list