HTML tags are requests, not commands.
Actually, they are neither. HTML tags delimit HTML elements, for instance in:
<H1>This is an example</H1>
the tags
<H1> and
</H1> delimit a first level header element, whose content is
This is an example (which has type
PCDATA).
HTML, on the other hand, is completely optional and implementation-dependent
There's little implementation dependent in HTML. You have of course your choice of DTD, but that's about it.
Yes, we have certain expectations of how a standard browser on a standard computer is going to behave and we would definitely consider IE or FF buggy if it displayed h3 tags as bigger than h1 tags.
I'd consider a browser buggy if it showed me the tags at all. It should show me the data - not the tags. It should use the tags to know what kind of data the document contains, and use that to decide how it should be rendered, but it should not show the tags.
However, go watch a blind guy on the Net for a few hours and watch how his browser handles tags. Half are ignored and the other half are rendered in speech emphasis, not upon the screen.
I've some close friends who are blind. They all use IE to browse the web. They do use a screen reader to know what IE displays though.
And, what about mobile devices?
Yes, what about them? I'd consider any HTML processing device, whether it's mobile or not, broken if it "ignored tags". Just like I'd consider a (Perl) compiler broken if it ignored double quotes.
The gist is that HTML is a format for specifying how to optionally decorate plaintext.
Eh, no. HTML is a format to specify what is plaintext or not. Or what's a header, a list or a link.
Neither tags, nor elements are commands or request. They are just that, structural parts of a document. They just exist, they do not act.