If you have time, you should read all of these. They’re all written by intelligent people getting into the heart of the HTML5 semantics debate with more clarity and detail than I could ever manage.
]]>
Divya Manian is a bright cookie. When it comes to the web, you can say with complete assurance that she knows her s***. She’s in that category of people that makes me insanely jealous of their creativity and intelligence.
All of which makes me think that somehow she’s trolling us today.
Our Pointless Pursuit of Semantic Value is a shortsighted piece, placing the value of markup solely upon the capabilities of browsers (and other user agents) today at the expense of tomorrow. It’s the sort of article that I would have perhaps expected from the internal website developer of a large corporation at the turn of the century that only permitted its employees to use Internet Explorer 6.
When I started getting paid to make websites instead of pizza, I was bombarded non-stop by the value of making websites that weren’t locked into the limits of the less-capable browsers of the moment (some of which, like the big blue e, were more than a little antiquated), but was instead encouraged to embrace forward-looking mentality of making the best of emerging features where I could and creating a fallback position where necessary. I can’t remember if we called this graceful degradation or progressive enhancement (I’ve heard the two used and misused so much that they blur in my brain), but nowadays we just call this technique “common sense”.
Did I make special span tags on elements that had rounded corners, placing background graphics on four separate corners so that the Great Blue Mentally Misunderstood Beast of the Internet could have pretty edges? Hell, no! I used border-radius and knew that somehow, someday, all browsers would eventually understand it meant I wanted pretty, round corners to nuzzle up against and whisper sweet nothings to at night.
I’m aware that HTML isn’t CSS, and what applies to one doesn’t necessarily apply to the other. But I’m fairly convinced that if anything, the principle applies even more with HTML today than it did with CSS yesterday. Barring a few legacy browsers that need to ride the HTML5 Shiv/Shim Short Bus, using a div or a header isn’t going to have any impact on a browser’s ability to properly render an element. Which means there’s no harm being done by using a semantic element before user agents get around to taking advantage of its extra meaning.
If I had to summarize Divya’s points in her article (I recommend you read it rather than relying on what’s bound to be a dramatic oversimplification on my part), it is that we shouldn’t bother with semantics because:
Semantics Are Hard
Divya points out a piece by Mark Pilgrim on the difficulty of semantics. So, Semantics is hard. So what? Last I checked, I was a professional doing a job for a living. It’s my job to know what part of a website is its navigation or is its primary content. HTML5 isn’t really demanding much brainpower from me on deciding what element to use for what job. I’m fairly confident that the general meanings of header, footer, nav, time, audio, video, progress and summary elements are easy enough to grasp as a person who works with websites for a living. Agreed, article and section are a bit confusing, but I don’t think by and large that HTML5 semantics are a byzantine labyrinth of alien thought impressions that cannibalize the minds of sane men.
Current Browsers, Search Engines and Assistive Technology Don’t Understand It, So Don’t Bother
When I was making a few years back, Internet Explorer didn’t understand border-radius. Yet, despite that, I used it in making websites. And not only does IE now understand (and render) those pretty corners, but many of those websites still exist, using the same code I wrote back then. If I had chosen to not use border-radius because of the limitations of the time, the sites wouldn’t look good today because of my short-sightedness.
HTML5 is still settling down into its patterns. Some of the meanings are still being locked in. It’s not “done”, as evidenced by Hixie’s arbitrary and somewhat bizzare attempt to remove the time element from the spec. Does this mean that I shouldn’t be using elements from the specification because it’s not done now? Of course not! The sites I’m making today will not only be live for years, they very likely won’t see a redesign for much of that lifetime. Relying only on what’s “finished” now would be a disservice to my clients today, preventing them from benefiting from features for years because of a technicality on the spec’s status or the full support level of browsers.
AT, browsers, search engines, they will all catch up with taking meaning from semantics at some point in the future. When they do, would you rather that your website was ready for them, or would you like to spend time (and money) re-coding your mess of divs into something slightly more relevant? There is no harm in using divs now (when other, more semantic elements might be better). But there is a very good chance that it will put your site at a disadvantage later, when the technology catches up.
Saying that I shouldn’t use semantic markup because AT, browsers or search engines aren’t consistently taking advantage of it in the present is like saying that I shouldn’t use video or audio elements because some browsers aren’t taking full advantage of them yet. It’s limiting my future benefits by over-adhering to the present. How many of Divya’s CSS tricks shown at her presentations at conferences work on all current browsers? In all likelihood, none of them. Does that mean they don’t have value, and shouldn’t be used?
How is making use of semantic markup any different?
It’s not.
Spending As Little as 40 Minutes To Learn About HTML5 Markup Is A Waste Of Time
I am shocked that she said this. I’d almost characterize it as insulting. We are professionals in a career that demands continuing education.
At the end of the very same post, Divya suggests that developers learn Javascript. Which is good advice. Learn it. Love it. But how can you advocate the value of self-education while simultaneously characterizing spending forty minutes of your time to familarize yourself with the meaning of some of HTML5′s elements as a waste of time?
Sometimes the choices we make in markup don’t result in manna from heaven. Personally, I don’t attempt to adhere to sensible, semantic markup for the sake of SEO (which I consider a bunch of snake oil bulls*** anyhow) or for accessibility purposes. I do it because there’s an inherent value in attempting to do something in a consistent and correct fashion. There is meaning and purpose in constantly attempting to improve one’s level of craftsmanship.
There is nothing pointless in pursuing good standards, including adding semantic value to your website. Even if there was no future benefit to properly, professionally crafted markup (and there will be), there’s an inherent value in taking pride in your work and producing a product that is more elegant than that of your hurried, slapdash competitor.
There is meaning in striving for meaning.
Or as Karl commented in Divya’s post:
]]>inadf, rjfsnsl nx pjd yt zsijwxyfsi jfhm tymjw. ny’x ymj xthnfq htsywfhy ns gjybjjs tzw nijfx. dtz fwj rncnsl uwthjxxnsl fsi rjfsnsl. vznyj xfi.
Edit: Roughly twenty minutes after I posted this, the W3C took action on the issue, insisting that the <time> element be placed back into the specification. You can read about it here. But please read on. It’s a good primer for the next time something like this happens.
Contrary to what you may have already heard, the <time> element hasn’t disappeared from HTML.
Yes, officially <time> is currently not part of the HTML spec. (Thanks to the muddle that is “HTML Living Specification” I’ll be honest and admit I’m not sure if is no longer part of HTML5 or it’s in some sort of Schrodinger’s Cat quantum-zombie state of existing in HTML5 but missing in the “ongoing HTML” that the WHATWG is proud to keep rolling down the conveyor belt.)
That doesn’t mean it’s not being used by authors (how’s Drupal builds, 2.6 million WordPress installs and the Boston Globe for you?) nor does it mean that is it not being used by user agents (ever-plucky Opera supports it).
What it means is that a single human being has decided that he doesn’t care for time one wit, and that a rather vague element called <data> can replace it instead.
This human is none other than Ian “The Benign Leviathan Dictator For Life” Hixie, editor for the HTML specification.
I could give you an explanation on how this scenario came to exist, but two Brits who are far more informed than I am (and likely slightly smarter) have made their own summaries. If you like knowing what’s going on (and I do) then go read them. These pair of fine gentlemen, Jeremy Keith and Bruce Lawson, both guest star in today’s comic as the good Doctor thanks to a little spot of regeneration, where they’re fighting the good fight against Hixie’s <data>leks.
Virtually every problem I have with a single person wielding so much power over such a fundamentally important pillar of the web as HTML can be summed up in this incident. <Time> is officially out, despite the lack of merit or consensus in that decision. And it took just one man to make that happen. Either through a lack of awareness or a genuine disregard for what authors are already doing, Ian has claimed incorrectly that <time> isn’t seeing adoption, isn’t useful, and should be canned. And because the only balance to his power is a rather tedious process to oust him, there’s no official remedy to bringing <time> back into the HTML fold than trying to convince him that its existence is a good thing.
From what I understand, it’s easier to keep red shirts alive on away missions than it is to change Ian’s opinion on something.
Fortunately, there’s a big difference between having no official remedy and having no remedy whatsoever.
As “authors”, we are the 99% of HTML5. We can follow Jeremy Keith’s sage advice:
We can make a stand and simply carry on using the
timeelement in our web pages. If we do, then we’ll see more parsers and browsers implementing support for thetimeelement. The fact that our documentation has been ripped away makes this trickier but it’s such a demonstrably useful addition to HTML that we cannot afford to throw it away based on the faulty logic of one person.
So as I said, <time> hasn’t disappeared from HTML. It’s still there on millions of sites already. And nothing is stopping us from putting it on millions more. It’s our chance to send those <data>leks packing. As soon as this post is finished I’m going to edit my site’s theme to make use of <time>. Hixie can go stuff it.
Occupy HTML5.
]]>
In a perfect world, Ethan Marcotte would star opposite of me in a web design-themed, buddy cop action comedy called Beep and the Squirrel.
Actually… I’m writing that one down, just in case.
Until that glorious moment, I’ll enjoy his raw intellect and seasoned wit while envying his creative talent in a suitably stalker-like fashion. (Unless you’re reading this, Ethan, in which case I assure you that I am in no way digging through your refuse bins looking for cast-off brilliant ideas and toothbrushes.)
While we’re in the vein of borderline creepy idol worship, I’m going to agree with Ethan’s succinct tweet on the W3C’s CSS Conditional Rules Module Level 3 Working Draft (which I’ll reduce to the much easier to remember abbreviation “CCR Module”, hereafter nicknamed the “More Cowbell” document). I feel cold.
I’m still perusing the document. Although any judgement leveled while shooting from the hips (hello, ladies) is bound to be rife with bad summaries and skewed views, in my opinion the module doesn’t seem to solve any problems that aren’t already being solved in a better fashion by good CSS practice or other techniques. It’s a lazy man’s shortcut to “supportin’ olla them thar browsers”.
As Dylan Wilbanks said, these aren’t the conditionals I’m looking for.
Just look at @supports, for the love of cheese (or dairy-free cheese alternative for vegans and the lactose intolerant). It lets you test if a browser supports a feature, before (in their examples) you then go and use the feature. What? How bizarre is that? I know in their examples you can get far trickier with not and or and doogie howser, but seriously?
When it comes to the problems that CSS is supposed to solve, although @supports and its ilk would work, they seem to encourage bad or unnecessarily laboriously bloated CSS documents instead of streamlining the process. And when it comes to @document I believe that the authors are trying to make CSS solve problems it wasn’t intended for.
Look, if you’re trying to get your CSS to be flexibly supported across different browsers and devices, I recommend checking out Ethan’s Responsive Web Design, or at least actually using your skullmeat instead of slapping shoddy shortcuts into your CSS. Capiche?
]]>The end product, “HTML5 is a beautiful mess” is now up at SitePoint. I’d be tickled pink if you took the time to listen.
As you may recall, I discussed ranted about this subject on Monday with the strip The HTML5 Show (AKA a Mess) and the related post.
Mostly, HTML5′s a mess in the political sense. The organizations behind it (W3C and WHATWG) are increasingly in conflict with one another. Additionally, in my opinion, Ian Hickson is increasingly disregarding any attempt at a legitimate process and simply putting what he pleases in the spec, as he pleases.
The podcast touches on that matter, and spins out to the state of the actual implementation of HTML5 itself, whether there’s a challenge in getting designers and developers to start using it, the issues of accessibility in <canvas>, and how delightful it’d be to move past plugins.
If I have one beef with the whole podcast, it’s the fact that I’m talking with a pair of Brits. Which, as every movie-going American knows, instantly sound more clever due to their crisp accents. Also, if the transcript is any guide, my sentences tend to roll off the rail quite a bit, inflicting casualties to adherents to the English language.
So, if you have the time, please go have a listen, and then please come on back here and post any thoughts you had at my butchery of verbs, the points that the participants brought up (or even better, the points we didn’t) and how lovely Bruce Lawson’s voice is.
]]>And, by George, that was a really good feeling.
Entitled: “The Ghosts of Web Standards Present: CSS3, HTML5 and Mobile”, the whole thing ran about an hour and fifteen minutes. Fortunately people laughed at all of my jokes, so it wasn’t too torturous. I talked about the varying level of support in modern browsers for new CSS3 and HTML5 features (and how that shouldn’t matter), as well as my thoughts on the need to be ready for mobile devices today in our designs. If I did it again, I’d probably put more advanced CSS3 techniques and HTML5 tricks in, as I uncovered a whole slew of new things I’d not experimented with before while doing research for it.
Although the slides don’t contain the majority of my witty dialog (I’m so modest), I’ve put them up (after some corrections and modifications) for you to look at if you’d like. The background will flash into it’s proper place two seconds after the page loads, by design (I had some issues with the popdown request for the geolocation interfering with the way the background looked on the slide projector).
]]>As you’re likely familiar with my opinion on this topic, I think you can predict the results.
On October 27, 2009, Ian “Hixie” Hickson, editor-for-life of HTML5 (yes, my bias is showing) decided that there were
“no outstanding emails or bugs on the spec”, and flipped the switch on the spec declaring it in Last Call. Just in time to meet the October deadline. Hooray!
As it stands, his status flip may be premature. Or, perhaps, his viewpoint of reality. If you look at the W3C’s HTML issue tracker, you can see it’s got a lot left on it. In response to comments about this difference between the W3C and WHATWG on whether HTML5 had actually reached Last Call, Ian commented “…we have different issues lists and different criteria for going to Last Call.”
Looking at what’s left to resolve, it’d seem the difference in criteria is that the W3C would prefer the job was done properly, as opposed to being done quickly.
I’m inclined to agree with Shelley’s thoughts. Maybe Ian is trying to reassert some control. Maybe he just isn’t concerned with issues like providing unsighted web users with the information they need to understand tables on a website. Either way, it creates the appearance of a move meant to serve himself, not others.
That’s not a reassuring quality to see in our leviathan.
]]>I’ve used quotation marks on “resolves” because the English language lacks punctuation to indicate sarcasm. I can only imagine what such a strange mark would look like, the black sheep that was expelled from the childhood home of Exclamation Point and Question Mark after a dispute with his stern father, Period. What would life on the streets do to such a symbol?
I considered using italics, but I didn’t want to look too sassy.
The @summary attribute has been the source of no little discomfort during the gestation process of HTML5, a token of sorts that is lauded, derided, despised and fought over in what seems like an endless battle. I discuss, in my own rambling fashion, my view of the civility of the issue here, which in turn references Bruce Lawson’s post on the topic, Alternate text in HTML5. It’s been the source of no small amount of contention, which I think John Foliot describes nicely over here.
Despite this, for some reason I’d (perhaps foolishly) thought that some sort of accord had occurred with @summary, allowing it to exist in HTML5 as a non-obsolete, conforming part of the spec (albeit with a great deal of snark involved).
I’d recently learned that not only was peace not occurring, but that @summary had found itself into the middle of another fracas. It seems that in an attempt to get HTML5 to reach Last Call status on schedule, Ian is marking unresolved issues in the bug tracker as “WONTFIX”, insisting that people with problems talk to the chairs, and moving on.
One such example of this in action is available for your reading pleasure in this W3C bug report. For those of you in a hurry, I’ll sum it up: People (such as the PFWG) have issue with @summary being marked in the HTML5 validator as “obsolete but conforming” along with a warning message. Ian Hickson, man of action, disagrees with the PFWG’s opinion, won’t change the (inaccurate) flag, and has decided that the issue (among others) is resolved and simply marking it “WONTFIX.” Apparently it will keep this status, despite the large amount of opposition to this stance.
This is, as John Foliot puts it (in the same report) “An affront to the web accessibility community that existing accessibility solutions that the current editor disagrees with have the status of WONTFIX simply because the editor disagrees.”
I’m not sure, in the end, if @summary does or does not deserves the bad rap Ian’s trying to attach to it. But I do know, though, that I’m tired of seeing one “benevolent dictator” being capable of deciding the future of the open web single-handedly by sidestepping all the prior discussions and opposing views regarding HTML5 with a simple “WONTFIX” status.
]]>I realized the mistake in my complacency when I received my first blog comment from a blind user here, where he was testing his ability to post despite the CAPTCHA that was present. At that point I realized that if even one person was visiting my site and incapable of at least knowing what was happening in the comic, they were getting a severely degraded experience, which was a disservice on my part.
My growing awareness of how frustrating such a thing would be is borne out in my Squirrel in the Dark post. As a result of this, I went about adding an aria-describedby attribute to my comic’s image tag. Later, based on feedback from a JAWS-10 user and with another suggestion by John, I doubled up with the addition of the longdesc attribute to the image. In both cases, the value for the attributes is an URL for a separate transcript page.
Thinking all was well, I congratulated myself and went back to poking fun at the HTML5 process and spent a lot of time drawing people in spandex.
Of course, it wasn’t that easy.
First, a new accessibility problem had reared its ugly head. When I built the site’s CAPTCHA, I had actually taken vision-impaired users into consideration and provided description text of each image to allow them to select the proper one for the CAPTCHA (mind you, not including the word that the CAPTCHA asked you to match with the image). However, when someone tabbed through the page’s links and fields, the tabbed indexing would go out of order, going through the other input fields for the comments at a different time than the CAPTCHA itself, making the whole affair confusing.
Secondly, I learned that the aria-describedby element isn’t meant to direct to other pages (which I think is a bit silly of a limitation, but I’m not an expert at these things), but rather should contain the ID of an element on the page containing a description. It’s quite a difference, and one I’ll admit I made by failing completely to do enough homework on the matter in advance.
I’d thank Henri Sivonen for his “bug report” on the aria-describedby issue, but he chose to use the issue to draw a comparison to the Super Friends‘ list of concerns (and its initial posting to a blog instead of the WHATWG mailing list) and neglected to mention it to me directly. So instead I’ll thank Laura Carlson for drawing my attention to my error, Arve Bersvendsen for sharing his opinions on alternate techniques, and Steven Faulkner for suggesting a way to use aria-describedby to link validly to off-page content. I know others contacted me about the error, but I’m sorry to say I don’t remember all the names at the moment.
My solution, therefore, was what Steven suggested in the W3C mailing list. The aria-describedby attribute on the image tag now has a value that is the ID of an anchor on the page. That anchor then links to the comic’s transcript page. The anchor is hidden by CSS to avoid distracting sighted users. You can examine a recent comic, like this one on the Super Friends, to see it in effect (if you’re on a normal browser you won’t notice much unless you view the page source).
The CAPTCHA’s messed up tabbing issue turned out to be an easy fix as well. Stéphane Deschamps pointed out in a comment that there was tabindexes on the form’s fields, which was causing the tab order to go screwy. I didn’t know these existed, having failed to examine the blog software’s default fields very much. Now that he’s pointed it out, I’ve taken them off, hopefully making the CAPTCHA less burdensome.
As I’ve stated in the past, I’m a non-expert at pretty much everything that doesn’t involve vector squirrels. However, I have an appetite for absorbing as many web-related skills as possible to help better the web through direct effort or comic-related advocacy. One of these areas of the web that I realize that I need a great deal more knowledge about is accessibility, and it’s a deficit that I seem to share with almost every designer or developer I meet.
Having admitted my deficiency, I’d like feedback on this issue, if you have it. Does the updated aria-describedby technique for serving the transcript actually use the attribute properly? Is the CAPTCHA usable by vision-impaired visitors with approximately the same level of annoyance all people feel when they use a CAPTCHA? Is there another feature on the site that causes accessibility issues that I haven’t mentioned or considered?
To those who contact me with these problems, thank you. I’m in your debt.
]]>I’m usually in sync with the web-related posts written by Jeremy Keith over at his personal site, Adactio. He’s usually saying something I’m thinking (albeit with more eloquence than I could muster), or spouts some gem of wisdom that I wish I’d thought of first. As such, it is safe to say that I respect him and, normally, his opinion.
This weekend, however, he wrote firmly on the topic of HTML5 and its process, in The HTML5 Equilibrium. In doing so, he made a sort of sandwich. The opening and closing of his post were two delicious, carefully toasted buns of high quality. But firmly settled in between them was a rank egg salad segment where he detailed his view on the W3C/WHAT WG “split personality”, ruining my appetite for his creation.
I’ve never been able to stomach egg salad sandwiches.
My reaction was spawned by his discussion of the status of Ian “Hixie” Hickson as the dictator-for-life of HTML5, sitting astride a position of absolute power in how the spec is edited. As readers probably know by now, there’s been plenty of friction lately between the HTML5 efforts and every other W3C group known to man as Ian’s been refuting their expert advice in exchange for his own pseudo-expert opinion on a wide range of topics.
Keith comes to Hixie’s defense by stating that although an unelected autocrat is horrible, it can work quite well. He evokes the power of dictatorship by referencing Thomas Hobbes’ Leviathan and quoting Shakespeare’s Henry V. Specifically, he states that by doing so we transfer “moral responsibility” from the populace to the dictator, then goes on to say that Ian has taken this mantle and used it evenhandedly and fairly.
In short, Jeremy uncouples the means from the ends. Leviathan, written in the 17th century, is a text that firmly opposes Separation of Powers and refutes the Right of Rebellion, claims the sovereign’s acts are incapable of being considered unjust, and makes it unjust for the populace to attempt to unseat the sovereign.
In short, do what you’d like, Hixie. It won’t be our fault, because we’ve given you all the power, and from here on out we’re blameless. But at the same time, should we disagree with you, tough for us. It’s all your show now.
And really, that’s what it’s become. The Hixie Show. The amount of “not invented here” mentality that evades the modern HTML5 spec is odious. Accessibility in HTML5 isn’t being decided by experts. Process, when challenged through W3C guidelines, is defended as being “not like the old ways”, in essence slapping the W3C in the face. Ian’s made it clear he won’t play by the rules. When well-meaning experts carefully announce their opposing positions and desire for some form of closing the gaps, Ian and the inner circle constantly express how they don’t understand. This understanding issue has reached a comedic point. When Sam Ruby pressed them on the subject during an objection by John Foliot (as noted here), Ian’s response is a glib “I don’t understand John’s concerns. He hasn’t explained them. He has just made unsubstantiated demands.”
This phrase (“I don’t understand”) is used by Ian so frequently that I’m genuinely concerned. He’s ostensibly a bright man. The usual objections and positions by other parties in the HTML5 dialogue are incredibly well documented at this point, in staggering detail. To claim the inability to understand exhibits one of two traits: Either Ian is a simpleton, or he is deliberately “misunderstanding”.
I don’t think it’s the former. Ian has clearly demonstrated his phenomenal intelligence. Yet, the latter option is part of Ian’s well documented deny, delay, too late methodology for handling people. Engaging in this sort of behavior is disrespectful of his community of peers, and more than discouraging when its coming from our empowered Leviathan.
We must accept this, though. Because it’s the results that matter, right? If we get a HTML5 spec, any HTML5 spec, we should be happy about it. Despite all the assurances to the contrary, I can’t really believe that it’s acceptable to consider a product’s method of construction to be independent from its quality. If so, I should be paying far less for my garments, right?
There’s a thought process here that is so far removed from the 21st century as to be terrifying.
In today’s comic, Jeremy Keith reveals the Leviathan to the Squirrel. Things go badly. But remember, it’s only the Leviathan’s fault, because we’ve absolved ourselves of both power and responsibility.
Right?
]]>