I am reading and taking notes on the HTML specifications for 100 days as part of #The100DayProject. Read the initial intent/backstory. I am a Microsoft employee but all opinions, comments, etc on this site are my own. I do not speak on behalf of my employer, and thus no comments should be taken as representative of Microsoft’s official opinion of the spec. Subsections not listed below were read without comment.
The spec discourages writing vendor-specific extensions, because, as we can see from history, the web works better when we work together (I CRINGE from the after-school-special nature of that last sentence, but I stand by the sentiment, dangit).
The W3C gives guidelines for when extensions absolutely MUST be used for experimental features: if you just need XML for markup features (and not HTML), you define a custom namespace for that feature.
If you want something new in the HTML syntax, “extensions should be limited to new attributes of the form ‘
x-vendor-feature’, where vendor is a short string that identifies the vendor responsible for the extension, and feature is the name of the feature.” Browsers and other user agents can’t just come up with new HTML elements; that would be a major threat to interoperability (things all working the same, cross-browser). New experimental attributes have to have a “x-vendor” prefix so they don’t crash with other browsers’ implementations in the future, until there’s a new standard (things we see with CSS prefixes). Attributes with “x-“ or “_” in the name will never be an official part of the HTML language.
DOM extensions, such as methods, need to be vendor prefixed as well.
No extension can contradict or be non-conformant to the spec.
When an extension is needed cross-browser, UAs can go through the process of getting it added to the official spec or have a new spec written (in practice, becomes an applicable specification).
“User agents must treat elements and attributes that they do not understand as semantically neutral.”