Peak WEB

Incase you didn’t realize the title of this post and the previous one – PEAK CRUFT – are a reference to Peak Oil, and in all 3 we can expect drastic changes.

Again I’m referencing the Joel on Software article about Martian Headsets… which recently has received quite a bit of flack.

There’s a certain (large) segment of web developers who are feeling full of Schadenfreude at IE8’s (potential) troubles, and I must admit I myself am among them (see one of my previous posts).  The upcoming free for all that will be IE8’s introduction will cause mass amounts of confusion (if current plans are carried out), but those of us who are forced to work in webdesign, figure that Microsoft has really just made it’s bed, and now it has to sleep in it.

Quickly now how many web browser can you name?

  1. Telnet
  2. Netscape 3
  3. Netscape 3.1
  4. Netscape 4
  5. Netscape 4.2
  6. Netscape 6
  7. IE 3
  8. IE 4
  9. IE 5
  10. IE 5.5
  11. IE 6
  12. IE 7
  13. IE 8
  14. Mozilla
  15. Firefox 1
  16. Firefox 2
  17. Firefox 3
  18. Flock
  19. Camino
  20. Safari 1
  21. Safari 2 (WebKit)
  22. Safari 3
  23. Safari Mobile (iphone)
  24. Firefox light
  25. Opera
  26. Opera Light
  27. Assorted Mobile device and cellphone browsers
  28. oh… and Lynx

And that’s just off the top of my head… essentially there are for all intensive (math) purposes an infinite-1 number (-1) of web browsers, and for each web browser there’s been basically an infinite number of web pages designed and tested ().  Using my horrible analysis of algorithm’s knowledge from Uni that works out at:

Ω(∞) *  Ω(∞-1) = Ω(∞^2) = ∞ 

(and yes I realize I should use n instead of ∞, but it’s Ω notation ie. worst case)

That’s right, there’s an Order infinite number of combinations of web pages and browsers.  Looking at the graphs in the Martian Headset article this is quickly apparent by the lines in the pictures.  And since all the above browsers implement the same things slightly differently (there’s no compiler to tell you you’ve created a mal form web page).  Granted a large fraction of the above web pages can be removed by attrition, as well as limited support of the differing web standards (html/xml/xhtml), but it doesn’t change the big-O Order (magnitude) of the problem.

So what to do?  That’s the one point the Martian Headset post is short on… He spends hundreds of words re-iterating the problem, but without proposing a solution.  Joel’s solution? Capitulate, and let the current broken standard of the web continue and fester.

The thing is that, as an IE 8 user he’s oblivious to the prejudices experienced by minority users.  Like racism, it’s very hard for members of the majority to understand the pain that others in a minority experience (ok, racism might be a stretch, but point remains the same).  Members of the majority can ignore problems, and trust that the might makes right argument will prevail with respect to web browsers and web standards.  The problem here is that with IE and the last couple of versions, the mob has been heading for a cliff.

Again back to the Martian Headset post, Joel talks about how there’s no standard implementation and the standards documentation is difficult to follow.  I’m not about to argue that the W3C documentation isn’t hard to follow, it is.  But it’s complicated in the way that a legal contract is complicated: it eliminates all possible forms of wiggle room.  And really that’s what a standards document is.  It’s a contract that you have to follow if you want to properly implement something, the thing is there’s no penalty (besides marketshare) if you don’t follow it.  And by standards documents standards it’s ridiculously easy to read.  Compare it to the TCP/IP RFC (and that’s one of the simpler RFC’s out there).  Standards documents aren’t designed for vanilla web developers.  They’re designed for web browser developers.

The thing is that these browser developers are infact translating these documents into different standard implementations that other browser developers can compare their work to.  The first big step in this direction was the old Netscape standard documentation – that was all but ignored by Microsoft, followed by the more recent Acid tests (Acid 1, Acid 2, Acid 3), and kudos to Microsoft, they’re following suit.  This can only lead to good things, and don’t be fooled by 3 “small” acid tests vs. Microsoft’s 700 unit tests.  The acid tests each have hundreds of sub tests, and only if they all run properly will you see the proper output.