Jason Knight
2 min readMay 4, 2021

--

That the UA’s don’t “turn off” certain features based on the DOCTYPE, DTD, a version number — or any other factor — is indeed a bit of a woe. It’s actually part of what led to HTML 5 being something of a s***-show since the people who made it clearly never embraced 4 Strict.

HTML 4 Strict was the only real attempt to say “stop using old stuff”, but with browser engines not giving a flying purple fish about what version of document is being read you can declare any HTML tag or property that has ever existed, and in fact anything that’s valid SGML and it will work.

I understand the reasoning behind this — that the early web was often on non-TCP dialup where the only error correction was a parity bit — thus the need of the language to handle mangled character and missing document parts. (at 150–1200 BAUD you don’t have time to “waste” on TCP/IP’s overhead and still have it practical to use)

But it’s one of the many legacy behaviors we’re not only stuck with, rather than making things better they’ve gone the opposite flipping direction. Rather than fix versioning by having it matter, they’ve gone and stripped the version control from the language entirely!

Which is why yesterday’s HTML 5 can be today’s invalid HTML 5, and today’s HTML 5 can be invalid HTML 5 tomorrow, rendering the validation tool utterly honking meaningless!

Just as the lip-service DOCTYPE is only retained to make IE (and sometimes FF) not be in “Quirks mode”.

By admission of people who worked on it, HTML 5 wasn’t about creating something to tell developers what they should do, it was documenting what developers were doing at the time. Given that most developers at the time — kind of like today — had shoved their craniums so far up 1997’s rectum they got to meet Lemmiwinks, it’s no surprise the flaws and stupidity to be found in the early versions, or the pedantic stupid “changes for nothing” that are cropping up as it ages.

And if you’re documenting what people are doing and not what they should, that’s NOT a specification in any way, shape, or form!

The majority of developers “in the wild” when 5 was being made were still deploying 4 tranny. Transitional literally meaning “in transition from 1997 to 1998 practices”. This level of “but I want to do it the sad bad old way” is reflected in 5, with nonsense like HGROUP illustrating a lack of understanding what numbered headings are or how they’re supposed to be used. The acceptance of the proprietary EMBED into the spec when it’s redundant to OBJECT. The introduction of pointless new tags redundant to existing ones like AUDIO, VIDEO, and SECTION.

Backwards compatibility is fine, we kind of need it. But to not give authors a mechanism to say they don’t need that extra stuff — akin to JS’ “use strict” — is shortsighted, stupid, and wasteful.

But that’s the direction the WHATWG and W3C seem to want to drag us with this “living document” bullshit.

--

--

Jason Knight
Jason Knight

Written by Jason Knight

Accessibility and Efficiency Consultant, Web Developer, Musician, and just general pain in the arse

Responses (1)