Comply or <die>

  By Shamus   Mar 1, 2007   55 comments

This comic on web standards perfectly captures how I feel about the subject. (Via.)

I’m pretty old-school when it comes to my HTML, and the chattering about XHTML has begun to rub me raw. You can use this page to “validate” web pages, and list all the ways in which your code does not meet these “standards”. (Are they still called standards if most people ignore them? I’m not trying to be a jerk here. I’m just askin’.) It tried it. The program is an automated nit-picking machine. It was like having someone with obsessive-compulsive disorder proofread my writing. Run just about any webpage through the validator and you’ll get a list of errors like:


Error:
I see you use <table>s. I wish you wouldn't. Yeah, I know people have been using them for years, and that they are an easy way to arrange things on a page without needing nine miles of CSS code, but you can't get a gold star until you replace all of your tables with <div> tags.

Error:
Some of your HTML is expressed in uppercase. This seems rude.

Warning:
You know how some people use the <br/> tag but omit the slash? I hate that.

Info:
Sometimes you have more than two spaces in a row. I don't see a need for that.

Warning:
Did I mention how much I hate it when people use the <br/> tag without the slash? I did? Well, it really bugs me.

Error:
Sometimes you don't close your tags. This makes me feel anxious.

Error:
You mis-spelled "monomaniacle". Incorrectly spelled words should be placed within a(n) <misspell> tag.

Error:
The image tag linking to "hawt_boobiez.jpg" does not have the "alt" attribute specified. This means that visually-impaired visitors will not be able to make use of this image.

Plus, she isn't even that hot if you ask me.

"Error":
Sometimes the "attributes" in your "webpage" are not properly encased in "quotation marks".

Pissed Off:
You left another slash out of a <br/> tag. You KNOW how much I hate that. Don't make me tell you again.

Warning:
The <i> tag has been depreciated and replaced with the <em> tag. No real reason. We did this just to mess with you.

Warning:
The <b> tag has been depreciated and replaced with the <strong> tag. In turn, the <strong> tag has been depreciated and replaced with the <shouty> tag.

Incredulous:
The phrase "obsessive-compulsive assclowns" should not link to the w3.org website.

I’m still not convinced the whole web standards thing isn’t a practical joke.

(Here is what it going to happen with this post: 2% of the readers will nod in agreement, 2% will be irritated or outraged, 92% will have no idea what I’m talking about, and 3% will point out that I can’t add.)

20201555 comments. It's getting crowded in here.


  1. Robin Z says:

    …and 3% will point out that I can’t add.)

    They add to 99% – obviously it’s just a rounding issue. :)

  2. Robin Z says:

    (Whoa, you have smiley support! :-o)

  3. Eric Meyer says:

    Soon my minions will cover the world and stand poised to do my evil bidding! You’ll rue the day! Muahahahaha!!!

    Personally, I think your error messages are far better than the originals. Well, okay, maybe not the last one, which is a little unfair. Still, I find it mildly amusing that a devotee of RPGs– famous for their baroque rulebook complexity– finds things like markup validation annoying. (I know, I know, a good DM will ignore the rules to further the experience, but how many of them actually do so?)

  4. I have to admit that I laughed way harder at this than I should have.

  5. Corvus says:

    I would have been spluttering in protest if your nit picks weren’t so cleverly written. *kniw*

  6. TTellum says:

    Whew, almost choked laughing at this. Too bad the tag didn’t end up on the list…

  7. TTellum says:

    er, blink tag that should be

  8. Thad says:

    As someone who works on a large fan site which tries to have all its pages as XHTML compliant as possible, it is dammed annoying thing to deal with. (And yes, we use validator sites.) I just try for “close” rather than perfect.

    And you forgot to point out the insistent need for things like changing ” to & quot ;, & to & amp ;, or

  9. Andre says:

    Jeebus Cripes, that’s annoying. I stopped caring about HTML validation when I stopped hand-coding my site. It’s a mark of honor that doesn’t impress a whole lot of people, and every time you add something to your site you’ve got to go through the whole spiel again. It’s fine and dandy if you’re dealing with a static page, but for dynamically updated pages, including ones run by a CMS like Drupal or WordPress, it’s largely out of your hands and if you worry about it too much you’ll just end up with an ulcer and a head of white hair.

  10. I have no idea what you’re talking about. Mind you, I don’t even get as far as tables, I’m amazed I can do BR and find dividers.

    Huzzah for lazy self-taught HTMLers.

  11. GreyDuck says:

    “Some of your HTML is expressed in uppercase. This seems rude.”

    Heh. I was caught flatfooted when that particular change came down the pipeline, and there’s still a fair bit of hacked-up legacy code on my site which still does things “the old way.” One of these days… I’ll be arsed to give a damn. Maybe.

    (The whole list of errors is made of pure hilarity, by the way.)

  12. Shamus says:

    Personally, I think your error messages are far better than the originals. Well, okay, maybe not the last one, which is a little unfair.

    You are right, of course. I should note that I don’t REALLY have anything against w3.org, it just made for a fun joke. I’m sure a web-standards advocate could come here and make many similar jokes at my expense over esoteric D&D rules.

    More pithy: Everyone more passionate than me is a zealot, and everyone less passionate than me is a fool.

  13. gedece says:

    I’m more passionate than you when it comes to my RPG characters, and I’m less passionate than you about ENFORCING web standars. So, does that make me a Zealot Fool? Isn’t that sort of dangerous?

    Anyway, what I really really don’t like are IE only web pages. That’s just plain nasty.

    Web standards are cool, but I can’t keep up with the changes, so I don’t bother.

  14. sometimes, deprecation is a blessing.

  15. (trust me – the previous comment was enclosed in BLINK tags)

  16. Shamus says:

    gedece: The statement was a bastardization of the old George Carlin line: Everyone driving faster than me is a maniac. Everyone driving slower than me is an idiot.

    We’re all a little of both. :)

  17. Yunt says:

    tidy *.html;mv *.html.tdy *.html

    Or something to that effect…

    It’s been some time since I’ve actually maintained a real site as opposed to my blog but it never bothered me too much. I’d hit my pages with tidy which would fix 90% of the problems without bitching too much and the remaining 10% I could usually ignore safely.

    I like the idea of standards but in the end, I’d use the validator and decide how much compliance I cared to maintain rather than fix every little thing.

    It might just be that the validator is pushing *your* obsessive buttons, seeking the approval of a computer program. ;)

  18. Thad says:

    The way we set up l-space is that we create the web pages from .h4 pages and so the .h4 pages (which contains a lot of macro references and stuff) are compiled and they need to start off compliant. Tidy only works on .html pages, so either you tidy the .html and convert it back into .h4, or you work through the tidy comments and only adjust what you need in the .h4 document.

    I know which gave me less work, but it was still a lot and still annoyingly picky.

  19. Tyrel Lohr says:

    I am with you — XHTML is a nice idea, but the “A List Apart”-esque crowd drives me completely bonkers. Yes, it’s neat you can do all that with CSS, and it would be great if you could do it… WITHOUT it causing one or more browsers to explode when viewing said website.

    I usually test websites in three browsers on a Windows platform: IE, Firefox, and Opera. Anytime I try getting too fancy with CSS, the site inevitably breaks in one of the three browsers (usually IE, since it sucks so very, very much insofar as standards compliance is concerned). After a few projects where the CSS just wouldn’t provide consistent results across browsers on anything beyond a very simple layout, I just went back to using tables. Sigh.

  20. Mom says:

    I don’t know what you are talking about. ( Trying to validate your statistics prediction)

  21. As the creator of a blog theme that’s been downloaded quite a bit, I found myself cringing every time I’d get a “support request” for XHTML 1.0 strict. I still have some code from the community that, due to SVN issues (cough cough) has never made it in to the final release.

    That said… I actually find decent CSS and XHTML easier to write and maintain than what I used to write 5 years ago. Semantic HTML actually makes doing cool CSS easier and changing your look and feel a piece of cake.

  22. Mark says:

    I’ve been attempting to recode my blog in XHTML/CSS and I have to say that I agree. I will most likely be writing a similar rant at some point, but it is worth making a few distinctions. It’s worth noting that the biggest problem with web standards is that browsers don’t use them. Some of them make good attempts (Firefox, Opera) but some don’t (IE), and _all_ of them are different in several non-trivial ways. This is the biggest issue I have with standards.

    The other issue is that CSS sucks. I mean, come on, who the hell designed a styling system that didn’t account for columns? CSS is supposed to be a way to separate the content from the design, which is most admirable, but it’s nowhere near as fully featured as HTML, nor is it supported as well. Tables suck in their own ways, but at least the browsers all render them in a reasonably consistent way.

    Seriously, though, the ALA types who whine about this stuff all day really do annoy me as well. I do this stuff for a living, so I know how to do it, but I still find it incredibly frustrating. But if you mention that… be prepared to get your head bitten off.

  23. Kemayo says:

    To be fair, the complaints about closing the br tag, i and b being depreciated, the case-sensitivity for tags, and (maybe) the attribute quotation marks thing are showing up because your doctype is XHTML-1.0 Transitional. It’d make more sense to change the doctype to HTML-4.0 of some flavor, where all those things are just peachy.

  24. Cineris says:

    Pretty much agreed. I would like to do more webdesign, but I simply have lost my patience for dealing with idiosyncracies of each browser (and then, on top of that, attempting compliance to standards that the browsers don’t fully support). I consider it pretty shameful that browsers are still in such a state that they can’t agree on how to drop pixels on a plane. Almost makes me want to design in Flash. Almost.

  25. Ben Finkel says:

    1% of people aren’t people. Therefore, they are not counted in the poll, but are included in the percentage. Therefore, the three percent of those who complain about addition are actually wrong, and now there are four percent of readers who have no valid category. Look out, world; this invalidation is spreading!

    Gosh, I’m tired.

    Ben

  26. Pixy Misa says:

    I was looking at Tidy, and my thought was that’s cute, but what I really want is a library with a Python wrapper…

    Uh, like this. Methinks me shall plug that into Minx.

  27. Pixy Misa says:

    By the way, I’d love to see a validator that gave nice friendly messages like that. ;)

  28. Myxx says:

    “Oh, people can come up with statistics to prove anything. 14% of people know that.” – HJS

  29. Malkara says:

    All I can think of is Knights of the Old Republic.

  30. Tallain says:

    Heartily agree.

    Now write lengthy, but humorous, story about a personal experience with this sort of thing.

    Close off with witty remark.

  31. I think this guy has the right take on web standards.

  32. Rebecca says:

    I see your blinking and raise you a blinking marquee. Muahaha.

  33. Antiquated Tory says:

    Well I’m in an odd situation because I write software product documentation straight into XML using an in-house modification of the Docbook DTD (which is not actually proper XML but some flavor of SGML but nevermind). So I get kind of freaked out now by unclosed HTML tags and capitalized tags and other stuff that would make my Saxon parser go on strike. (Pretty much what happens, it hits the first validation error, gives me 200 lines of embedded errors in the console which I then have to track up to the beginning to find what the actual problem is. Then I fix it and it happens again for the next error. Rinse and repeat until it all validates. Enough to make anyone twitchy about invalid markup.)
    On the other hand, I’ve never done normal HTML stuff like have a webpage.
    I can see the shift from <i> and <b> to <em> and <strong> in XHTML, which as a flavor of XML should only have content and no formatting information at all. On the other hand, if you don’t need to reuse content and generate output in multiple formats, I don’t see why it’s so terribly important to use XHTML instead of HTML.

  34. Antiquated Tory says:

    …and Mr Tech Writer here just completely failed to enclose his code in tags. Or does <b> work here?

  35. Antiquated Tory says:

    …so 2 comments up, I meant to post that I could see the shift from <i> and <b> to <em> and <strong>…
    Given my carelessness and XML’s strictness, you can imagine what my workday is like.

  36. Shamus says:

    Tory: Edited the tags in your comment for clarity.

    I can’t figure out how HTML works in these comments. I can use any code I like, but visitors can only use certain tags, but only sometimes. I’ve seen it take a legit comment and strip out all of the tags. I’ve seen it take a big slab of spam and post it with all links and formatting intact. I never know what it’s going to do.

  37. Nathan says:

    Web standards (like not using tables for layout and using appropriate alt tags for images) really do have a purpose. Blind people like to surf the web too. That said, I’ve never used XML for web sites. Give me HTML 4.01 strict and I’m much happier. What’s with all the extra slashes?

  38. Just to give my two cents on the issue, I have to disagree. A little less than a year ago (about 18 days less to be exact) I decided it was about time for me to learn CSS. So I grabbed the textbook on it that I’d bought some time before, and began working with it. The CSS book I was using integrated CSS with XHTML 1.1, and made quite a big deal out of standards. It even had a few chapters on how to code XHTML, assuming you already knew HTML. I figured, since I’m upgrading my coding style a little, why not upgrade it all the way? And I did. For awhile, I obsessively checked every change I made to a webpage to make sure it was valid, but you’re right, it really isn’t very important. These days I don’t check much at all, though I’ve found it doesn’t really matter because I write correct code automatically most of the time.

    In the end, it really doesn’t matter if you code to standards, it’s simply more professional if you do. And yes, it is still standards even though not many people use them. The W3C is the body with the right to create web standards, anything not to W3C standards works only because browsers are accepting markup that they shouldn’t.

  39. Ryan says:

    I read one of Eric Meyer’s books (it’s a great book), and I became the annoying person in the comic. Seriously – just ask our Creative Director about how much I argued with him about doing tables and other Dreamweaver crap on our site.

    I’ve since calmed down a lot. I still write HTML 4 strict code, because I like clean, correct code. But I also don’t fly into tantrums and rages when the C. D. tells me to use a table, or a BR tag (that’s what margins are for). I just quietly ignore him and write it the way I want. :D

    I think CSS is really cool. It’s really quite trivial most of the time to make things work in FF and IE (who uses Opera?), I don’t know if that’s because of the code I write, or if my brain just was wired for CSS.

  40. Dave says:

    *nods* .. i and b are quicker to type for those of us who still write code for our html.. the machines be dammed!! .. and you can’t add.

  41. Julia says:

    On the whole em vs. i tag — there are times when em just isn’t semantically correct, but i would be; and I use em when I mean to emphasize, and i when I’m just giving the title of a book I’m too lazy to do the amazon link to.

    (I’m careful about which tags I use; I have a friend who is blind, and I’m not sure how the tags are going to come through for him, and if I’m wanting to do emphasis, I want to make that clear, in case his reader is going to make the distinction between em and i.)

    And I don’t understand HTML well enough to actually make the tags look right here, and don’t want to put Shamus through messing with it, so I’m leaving them bare. :)

    (I have a little O’Reilly HTML pocket reference here but it got lost in Friday’s avalanche. Organizing the crap on the desk ought to be a priority, but doesn’t seem to be right this minute….)

  42. Julia says:

    Oh, and the joke included in the adding thing was amusing. :)

    (I would have noticed the inherent even/odd error immediately if I were checking my own work. But I’m weird that way.)

  43. Raka says:

    You’re right, but you’re also not. Standards are still standards even if nobody uses them. Good standards will be updated periodically by a group that pays attention to common-but-non-standards-compliant usage and is willing to shift the standards to reflect usage, at least to some extent. But if we just follow the majority– even the overwhelming majority– then we might as well disband w3 and make the switch to MSHTML official.

    Strict XHTML is a gold-standard that seeks to eliminate redundancy and ambiguity. This is awesome if you are writing a browser or any other tool that has to parse XHTML. Of course, any coder knows you can never rely 100% on the quality of your input, so it’s good practice to build in handling for the most obvious and anticipated aberrations. So it’s unlikely that any professional would create an app that can’t handle an unclosed *br* tag or a deprecated *i* tag. But that doesn’t mean that there’s no value in validating the compliance of your XHTML. If the validator has no problems with your XHTML, that means that absolutely every single standards-compliant application will handle your markup exactly as you want it to. If it doesn’t, that means you can be reassured that the fault lies with the interpreter. For whatever that’s worth, given the fact that neither IE nor Firefox are 100% standards-compliant.

    The particulars of the standard are certainly open to challenge, but they’re not entirely capricious and arbitrary. Semantic/structural separation is a good and logical ideal for HTML (which explains why *i* and *b* became deprecated). Eliminating redundancy is a good goal for any language (which is the main reasoning behind deprecating tables, although that one is a bit more debatable). What people tend to forget is that these are conceptual ideals, not functional ones. It’s like object-oriented design or 3NF in databases– a good goal to keep in mind, but rarely found in the wild in perfect form.

    Folks who get exasperated by those who ignore the standards can perhaps be forgiven, since this does make things difficult for new implementation. But zealots who say that any validator flags makes a body of code “wrong” are just being pointlessly perfectionist. Ideals are great directions but lousy maps.

  44. Steve says:

    Well, notwithstanding that this is a Rant and therefore not necessarily requiring of a reasoned response, I have to side (mostly) with what Shamus said. For all the froofaraw about separating content from presentation, the WWW is a graphical presentation medium and designed to allow close coupling of the presentation with the content.

    As for the tables vs CSS thing: What a waste of good breathing air. Who gives a flying (insert activity of choice) How The Trick Is Done. The final result is the important thing. Getting consistancy across hardware platforms, browsers and versions of operating systems would be a far more laudible goal than whining about the material the cogs are made of.

    As far as replacing the brief “i” and “b” tags with the verbose “em” and “strong” – what was achieved by it? Does anyone in real life (i.e. anyone not sitting round a virtual table with other www twonks talking about how everyone else should be doing stuff instead of actually doing stuff) read “em” as anything but “italic” and “strong” as anything but “bold”? If I could point to a single instance of horsewhip-worthy d*cking around by standards committees, that would be it. I tell a lie. The slash after the “br” tag would.

    Were I to work in a shop where slavish adherence to the www standard of the day was more important than shifting stuff out of the door in a timely manner I would simply write a perl script to mung my perfectly acceptable HTML into wordy-gurdy www-speek after I had gotten it looking and behaving correctly.

    Just like I did in the days when I contracted to a cobol shop that required an arbitrary “standard” column format and level number separation, in fact. I got the job done, then let a robot sort out how the source code looked. The standards guy was appalled, but since he got textbook-correct code, and since he wrote the textbook, he had no grounds for complaint. In fact, a couple of the salaried employees took copies of the robot for themselves when they saw it in action, and their productivity climbed as a result.

    You have to remember, medicinal bleeding was a standard once.

    And the messages were a lot better than the real ones Shamus. You missed your calling. When you puiblish your XHTML parser, please let me beta test it.

    Steve.

  45. Raka says:

    “Who gives a flying (insert activity of choice) How The Trick Is Done”

    People who need to program an interface, and thus the standards committees who define the language. Both of whom are actually “doing stuff”, and without whom the rest of us would find it much more difficult to do stuff. I’m a big fan of not writing everything in machine code, or not being restricted to completely proprietary languages. The consistency you mention is unachievable without clearly defined standards.

    As far as “em” vs “i”: well, the price you pay for standards is that not everyone is going to agree on all of them. But this one isn’t as ridiculous as you make it seem. As HTML developed and CSS became available (and CSS is a mighty fine tool), tags became identifiers and format was determined by style (and/or browser). So yes, +95% of the time “em” does just mean “italic”. But the language allows me to define how that tag (and every tag) is displayed, and it’s entirely possible for me to do so in a way that includes formatting in addition to (or in place of) italics. So you can leave “i” in as a tag that may or may not be italic (which is sort of ridiculous), or you can say “all tags can be redefined in styles– oh, except for this one and that one and that one” (which is counter to the point of defining a language). Or you can replace a misleadingly explicit tag with another.

    The slash after the “br” is an even better example. I’d much rather remember two rules (1=All elements must be closed 2=Single-tag elements are closed at the end of the tag) than “All elements must be closed. Oh, except for this one. And that one, but only under these circumstances. And this other one, if it’s a Thursday.”. Again, any decent implementation will allow for unclosed single-tag elements. But that’s an implementation, not the standard.

    I say this as a person who has never used “em” or “strong”, and never closed any “br” or “li” (and maybe 10% of my “p”) tags in my life. Slavish adherence to a standard (except when there’s a good and defensible reason for it) is bad; having consistent and logical standards is good. Preventing you from using an unclosed “br” tag is bad; teaching newbies to use a consistent closing method is good (they can learn the exceptions later, if they wish).

  46. Raka says:

    In my first paragraph, “or not being restricted to” should be “or of being restricted to”. /doofus

  47. Steve says:

    [Raka] Poor choice of words on my part. What I should have said was: “Who gives a flying (insert action of choice) how the trick is spelled”, since the contention here isn’t that the underlying functionality is any different, only the way the code is spelled out.

    Lets by all means argue about which tag is used for making an italic/other emphasis (but 99% certain to be italic on any visual browser and just as easy to mung into some emphatic mode using CSS on a non-visual presentation platform) instead of dealing with the rather obvious and basic issue that any given block of CSS doesn’t look the same on different browsers even on the same hardware. Lets obsess about the colour of the battery and never mind that the car has square wheels. That’s good use of a “standards committee”. Next Up: The seven Layer Cake (never seen outside of the IBM proprietary stacks that the standard was drawn up to emulate).

    As for the “two rules” thing, well, anyone who has sucessfully written any code with a decision in it in C, Cclone, Java, EMCAScript, perl, PHP5 or any of the other “C-like languages” already has to do that with the semicolon. Everyone I’ve asked seems to have no problem with the rule there (which can best be summed up as “you need a semicolon anywhere it isn’t forbidden”). Your mileage may, as they say, vary.

    But.

    Standalone tags obviously don’t need to be closed in my mind. Making a normally paired tag into a standalone one (as is sometimes done in XML) is an obviously different case. The underlying semantics of the two situations should not require any sort of rote learning for anyone actually tasked with writing the stuff. The difference is that between a tag that has no semantic closure and a tag that has an implicit paired closing tag written in shorthand notation. If you understand what you are doing there is no memorisation needed. Note that the XML/XHTML standard actually calls for the “BR” to be closed with a paired tag. The single tag with a trailing slash is a shorthand notation for the same thing. Oops, two rules.

    (bangs ground with antelope-thigh club) Grunt Steve old but Steve use CSS for many moons, has written many interface-dependant applications and understands issue. Steve has also Seen It All Before (many times) as depicted in these cave paintings. Steve think “assclowns” accurate (and more to the point, amusing) summation in this case. (makes generic cave-man dismissive gesture last seen on FedEx commercial).

    Steve

  48. Euphemism says:

    Standards are standards, even if only a very few people follow them.

    Granted, the only experience I have with this is a single guest lecture in the HCI class. But certain things – like the alt text in the image – are requirements that need to be satisfied for a site to be accessible to disabled (bad vision or blind) users. This factor is enhanced by the fact that a ‘government purchase’ (whatever that means) cannot be made from a site that does not satisfy the disability requirements. From the mention of the alt-text, I’d guess that satisfying these standards is a part of that – since blind users have to use a special reader, which might get caught on the tags (I think someone else mentioned this issue with regards to the i and em tags).

  49. C says:

    To subvert percentages, I’ll just say I agree¹⁶ (hopefully that will work — if not, it should say “I agree to the power of sixteen”) and your adding is deficient :P

    PS. DM of the Rings is incredibly awesome. Having read it I am now wandering around the rest of the site. Hence, this comment.

  50. Ronixis says:

    I think the point of using “em” and “strong” is mostly for screenreaders and other accessibility features. I’m not sure why the screenreaders can’t just convert them, though.

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *

*
*

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!