There is a W3C group working on the next standard for HTML. In tracking the current discussion, things started to make more sense when the roles and points of view of some participants became clear (or at least clearer). Seems only fair (and perhaps necessary) to make my own motivations clear.
I am a software developer. After looking at the mass of incompatible behaviors during the browser wars, I intentionally stayed away from making use of “dynamic” HTML until Netscape 4 and IE 5 were almost gone from use. A few years ago I started on a somewhat ambitious (and risky) project to replace a Windows desktop GUI application with a web application. My goal was to produce an application that was better than the Windows GUI it was displacing (not an easy thing to do). This was a one-man project that pulled in a bits of everything.
- A Java applet, small as I could make it, but essential to the UI.
- Heavy use of scripted behaviors.
- Heavy use of CSS for carefully controlled layout.
- Pure HTML 4.01 Strict pages - with quite a few runs through a validator.
- No use of browser specific code - except for the bit of script that generates the tag to invoke the applet.
- No document.write() - anywhere.
- Testing iterations first under Firefox, and later under IE.
- Server-side Java generating HTML pages, HTML fragments, and both sending and receiving JSON data.
- Server-side C++ called from Java to perform the heavy processing.
The end result is both somewhat complex, near squeaky-clean in standards compliance, and works well in both Firefox and IE. At the end of the development cycle I did try firing up the product in Opera … and it almost worked. Was this a result of Opera not-quite meeting the standards? Was the fault in my code for misusing the standards in ways that just happen to work in Firefox and IE? Was the fault in standards that allowed more than one reasonable interpretation? Frankly, I expect it is a bit of all three. Unfortunately, I cannot invest the time needed to figure this out, as our customers simply do not care about Opera.
The fact that standards-compliant browsers might differ in their interpretation of standards-compliant code does not surprise me. This expectation comes out of experience.
In my first job out of college, the guy in the next office was working on what was to be the second validated Ada compiler. At the time, Ada was meant to be the most carefully designed and throughly specified programming language ever - and compilers written for the language had to pass strict validation tests. The guy next door would call me over when he hit a particularly tricky section. Ada was a fairly complex language, with a fair number of “dusty corners” not explicitly covered by the specification. As it turned out there were quite a number of cases where we had to puzzle out what behavior made the most sense - and there was not always a single clear choice.
The lesson I pulled from this experience is that the more complex a specification, the more likely there are “dusty corners” where thoughtful folk could come to reasonable but differing implementations. Simpler is often better.
Also relevant to the W3C activity is my point of view in relation to maintaining version compatibility. For most of the software projects I have been involved with in the last twenty-odd years, maintaining compatibility was an explicit concern. I will not claim we always got things right, but I do try very hard not to screw the customer, and will claim to have got better at this over time.
Since I find that my experience leads me to back views offered by Chris Wilson (from Microsoft), just to be clear - I do not work for Microsoft, never have worked for Microsoft (directly or indirectly), and probably never will. My only remotely “special” relationship would be the fact that I ate lunch with Bill Gates at the Windows developer’s conference in 1984 (yes, pre-Windows 1.0), and that’s it. (Spent the next seven years writing pure Unix code, BTW.)