Tuesday, September 3, 2013

I'm not dead

There's a three-person scene in Monty Python and the Holy Grail in which the dead are being collected. Every time I read another blog post about how Progressive Enhancement1 is dead, and today there was another,2 I'm reminded of this conversation. For those who are unfamiliar with this particular classic, here's a bit of the dialogue from that scene.
Citizen: (Carrying a not-yet-dead-man over his shoulder) Here's one.
Collector: Nine pence.
Not-yet-dead-man: I'm not dead.
Collector: What?
Citizen: Nothing. (handing the Dead Collector his money) There's your nine pence.
Not-yet-dead-man: I'm not dead!
Collector: 'Ere, he says he's not dead.
Citizen: Yes he is.
Not-yet-dead-man: I'm not.
Collector: He isn't.
Citizen: Well, he will be soon, he's very ill.
Not-yet-dead-man: I'm getting better.
Citizen: No you're not, you'll be stone dead in a moment.

Aside from the comedic dialogue that goes on in my head when I hear these arguments, I have other, more philosophical thoughts - such as "the conclusion presented is not supported by the arguments presented because they are [insert your favorite logical fallacy here]". Rather than evaluate any one post, I'll sum up the general approach and say that after repeatedly hearing arguments against Progressive Enhancement, I've determined that the arguments that aren't fallacious usually go something like this:
  • because of browser improvements Progressive Enhancement is no longer needed
  • Progressive Enhancement takes too much time and money

While I might argue the factual basis of the "too much time and money" argument, and my experience runs counter to this statement, I'd rather focus on the first argument because it is the most prevalent. Let me also say that this will not be an attempt to placate anyone in the 'Progressive Enhancement is dead' group - I'll leave that to others who are better suited to twee statements intended to make people feel better.

Instead of arguments about the effectiveness or apologies for offense, what I will say is that the issues Progressive Enhancement was specifically intended to address are not, and cannot be, addressed by newer browsers, even if browsers are "the world's most advanced, widely-distributed application runtime (sic)". The primary goals of Progressive Enhancement are to make information accessible through sparse and semantic code - of course it reduces other issues - e.g. XSS attacks in inline style and scripts - as well.

Since we are being paid to think, it may serve us better in determining if Progressive Enhancement is not yet dead if we first determine whether or not the goals of Progressive Enhancement are still relevant rather than claiming that Progressive Enhancement is dead because browsers are much more advanced. Of course, each of these topics should be covered in their own post; however, for this venture a simple, cursory look will have to be sufficient.

First, we ought ask why a sparse code base is important and whether it is served by better browsers. In a previous post, I mentioned an Oakley site that was issuing 400+ requests and ran around 850MB. Granted, in the interim they've modified the site and it's now down to a slim(mer) 80+ requests and 3.5MB. If we're paying per MB downloaded, we might not worry about 3MB, but 850MB might be another story, not to mention the amount of time required. In an increasingly mobile world, sparseness must be a consideration.

Second, we ought to consider semantic code. As the variety of user-agents increases, the relevance of semantic markup becomes more pronounced. While the effects of semantic markup on SEO may be debatable, other effects are not.3

Third, and possibly most importantly, we ought ask why accessibility is important and is it served by better browsers? The answer to this must be that while accessibility is greatly affected by better browsers, there are still significant accessibility issues surrounding current methods of development. While it may be argued that Progressive Enhancement does not solve all of these issues, it does answer a greater number of these issues than other methods.

To suggest that accessibility is unimportant, or even less important than other factors, as is implied when Progressive Enhancement is shunned, is a question of integrity, trust, and value. One cannot be egalitarian or even trustworthy (or, arguably, functioning with the law in many countries) if one does not address issues of accessibility. We, as a development community, simply must consider accessibility first, because it affects every other decision we make from design to content to the manner in which content is delivered to the user-agent.

Here we've come to it - accessibility is the most important argument for Progressive Enhancement, and one that is seldom made, and one that those in the "Progressive Enhancement is dead" group have completely ignored. To consider browsers as the sole user-agent consuming the information presented on 'the web' is either simply misinformed or grossly short-sighted. Since this has been ignored for some time, let me be clear - browsers may be totally awesome run-time environments, but they're not the only user-agents out there, and proceeding as if they are will open you up to all manner of evil.

Of course, to suggest that Progressive Enhancement is the only method that will address these three simple issues is likely to devolve into a false dichotomy (and hence a logical fallacy). I must, therefore, acknowledge that there are other methods which can address the issues, but none that are as simple.

At the end of our quick glance at Progressive Enhancement it appears the need for it, or something like it, not only remains, but grows stronger, unless of course you're going to say sparseness and accessibility aren't important and play the part of the Collector and strike our Not-yet-dead Progressive Enhancement with a club before putting it on the cart of dead methodologies.


Notes: links open in a new window
  1. Progressive Enhancement is a strategy in which a document is coded then additional technology, i.e. CSS and JavaScript, are layered on top of the document to ensure accessibility and semantic markup. Learn more about Progressive Enhancement at http://en.wikipedia.org/wiki/Progressive_enhancement.
  2. Progressive Enhancement: Zed’s Dead, Baby by Tom Dale. 
  3. Semantic markup is not only cleaner, it's also more accessible. Read more about the importance of semantic markup on "How Important is Semantic HTML".

No comments:

Post a Comment