Re: The argument for |bugmode| (was Re: If we have versioning, it should be in an attribute, not the doctype)

And it can be left out completely? Sounds very good.

On 4/18/07, Matthew Raymond <mattraymond@earthlink.net> wrote:
>
>
> Matthew Ratzloff wrote:
> > I feel that a version is necessary given the fact that:
> >
> > - Microsoft says it needs an explicit opt-in,
> > - 80% of the market uses Internet Explorer,
> > - Most pages serve unique content to Internet Explorer, and
> > - Microsoft will implement an unofficial opt-in whether or not one is
> > specified expressly.
> >
> > Since we are "paving the cow paths" it seems to me that we must also
> pave
> > foreseeable future cow paths as well.  To that end, add a version
> > attribute and just be done with it.  Everyone else can ignore it.
>
>    I don't really see what Microsoft gets out of a |version| attribute.
> Here's why:
>
> 1) The proposed versionless doctype for HTML5 can be used as a switch on
> its own, so we're really talking about a |version| attribute for use
> when we release HTML6, by which time we may very well have moved to
> XHTML 2.0 or something anyway. So we resurrect |version| from the dead
> just to kill it again.
>
> 2) It's unlikely that HTML6 will come out between IE8 and IE9 because of
> greater competition in the browser market, so Microsoft will end up
> using a switch unrelated to the HTML version before they even get to use
> |version|.
>
> 3) If only the HTML version is used as a switch, IE will never support a
> standards compliant version of the current HTML standard. They'll
> always end up supporting the previous version plus some buggy new
> features. What's worse, they will probably lobby for the new HTML6 spec
> to incorporate some of their non-compliant behavior in the interest of
> compatibility with the web. Thus, pages written for the previous
> specification (HTML5) will be rendered incompatible with later HTML
> versions (HTML6 and so on) even though they were fully compliant with
> the spec when it reached Recommendation status.
>
>    So a |version| attribute is both next to useless for Microsoft and
> harmful for existing pages that try to remain true to the HTML5 spec.
>
>    Enter |bugmode|. It works very similar to a |version| attribute, but
> rather than specifying the version of HTML, it specifies the version of
> a specific user agent that the page was designed to be bug-compatible
> with. Example:
>
> | <!DOCTYPE html>
> | <html bugmode="IE7">
>
>    Note that this solution allows Microsoft to make multiple releases
> between HTML version, because they'll never run out of potential
> |bugmode| values. Also, the feature can also be used for pages that
> depend on bugs in other user agents:
>
> | <!DOCTYPE html>
> | <html bugmode="Gecko 1.9">
>
>    And if the page is designed to render without dependencies on the
> bugs of any particular user agent, you just leave it off:
>
> | <!DOCTYPE html>
> | <html>
>
>    When a user agent fixes a bug, they're also fixing existing
> standards-compliant pages without those pages having to change their
> code. However, if the page depends on specific bugs from a particular
> user agent, |bugmode| can be specified preemptively so that the next
> version of the browser in question doesn't break the page. Also, user
> agents can implement bug compatibility modes for other user agents.
>
>    To top it off, it's clear from the name that it indicates a
> dependency on characteristics and behaviors of a particular user agent
> that are not standards compliant. This makes developers aware that they
> are targeting a specific user agent rather than simply exploiting a
> quirk of the language.
>
>    End of line.
>
>

Received on Wednesday, 18 April 2007 06:29:34 UTC