The Case Against Progressive Enhancement's Flimsy Moral Foundation
PE is based on an unstated moral philosophy, not on practical dev ideas — and that philosophy doesn't make sense.
This post sparked a lot of response, and I've written a follow-up that's clearer than this one. My tone in this post wasn't helpful, and I was too glib/literal about calling PE a moral argument. In the follow-up, I clarify my points: 1) I'm talking about the PE discussion rather than the approach itself. 2) PE is indeed a practical approach to development, but it's often talked about in moral terms. The latter is what causes the discussion to go around in circles.
We Vigets typically stay out of in-the-weeds web development battles. But I think I have a useful insight about one particular fight, so ... <grabs parachute, adjusts steampunky goggles, wheeee!>
I’m talking about the battle over progressive enhancement.
Other developers are increasingly frustrated with this argument: see the latest salvos from Nolan Lawson and Christian Heilmann. Lawson notes that these PE advocates seem to talk about progressive enhancement “as a moral decision as much as a technical one.” And Heilmann writes that “A lot of the [progressive enhancement] chatter that’s happening right now seems to be circular.”
They’re both right.
In this post, I want to fully unpack those ideas and make the case that:
- Progressive enhancement is a philosophical, moral argument disguised as a practical approach to web development.
- This makes it impossible to engage with at a practical level.
- When exposed to scrutiny, that moral argument falls apart.
- Therefore, if PEers can’t find a different argument, it’s ok for everyone else to get on with their lives.
This post is not a technical assessment; I’m not a developer. But I am an expert at spotting fuzzy rhetoric and teasing out what’s really being said.
By bringing that hidden argument into the open, I hope to help break out of the circularity and ultimately make the discussion more productive.
Also, opinions are of course my own.
The Real Progressive Enhancement Argument
Let’s get right to it. Here is the real progressive enhancement argument:
- It’s a moral imperative that everything on the web should be available to everyone everywhere all the time. Failing to achieve — or at least strive for — that goal is inhumane.
Now, you won’t see that argument explicitly stated anywhere. To uncover the real argument, you have to analyze what PEers aren’t saying.
To do this, we’ll play what I call the LSAT Game, based on the LSAT’s Logical Reasoning section. In logical reasoning questions, a statement is given, and you have to identify the unstated assumption that logically connects the parts of the statement.
Let’s play the game with some pro-PE writing.
- It is always bad to ignore some potential users for any reason.
- “[With a PE approach,] Older browsers get a clunky experience with full page refreshes, but that’s still much, much better than giving them nothing at all.” — Jeremy Keith
- A clunky experience is always better than no experience.
- HTML content — i.e. text, images, unstyled forms — is the most important part of most websites.
- “Question any approach to the web where fancy features for a few are prioritized & basic access is something you’ll ‘get to’ eventually.” — Tim Kadlec
- Everything beyond HTML content is superfluous fanciness.
- “Everyone deserves access to the sum of all human knowledge.” — Nick Pettit
- “[The web is] built with a set of principles that — much like the principles underlying the internet itself — are founded on ideas of universality and accessibility. ‘Universal access’ is a pretty good rallying cry for the web.” — Jeremy Keith
- “The minute we start giving the middle finger to these other platforms, devices and browsers is the minute where the concept of The Web starts to erode. Because now it’s not about universal access to information, knowledge and interactivity. It’s about catering to the best of breed and leaving everyone else in the cold.” — Brad Frost
- What’s on the web comprises the sum of human knowledge.
- Progressive enhancement is fundamentally about universal access to this sum of human knowledge.
- It is always immoral if something on the web isn’t available to everyone.
Why That Argument Causes the Circular Discussion
Assemble those unstated assumptions and you get the real PE argument: universal access to everything on the web is a moral imperative.
That’s a philosophical argument, not a practical approach to web development.
This is why the discussion is circular: Most people are trying to have that practical discussion, but PEers answer with a moral philosophy that shuts down practical considerations.
- “I’m not trying to be mean, but I don’t think people in Sudan are going to buy my product.” “LAZY MONSTER. Universal access to content is a moral imperative.”
This must be endlessly frustrating for practical-minded devs. But there’s a silver lining to PEers going all-in on this moral argument: if that argument fails, they’ve got nothing left.
Why the Real Progressive Enhancement Argument Makes No Sense
So let’s flip the script for once. Let’s leave the practical discussion behind and see how the philosophical progressive enhancement argument stands up to scrutiny.
Spoiler alert: It doesn’t. Let me count the ways.
Fail 1: PEers Are Wrong About What’s Actually on the Web
PEers talk as though the web consists primarily of text and images that every human is entitled to have — a repository of universal birthright information. This is a wild misunderstanding of the modern world and the modern web.
The modern web is a primary way we access:
- Business and personal software, both of which have exploded in use now that software has eaten the world and is accessed primarily via the web
- Copyrighted news and entertainment content (text, photos, music, video, video games)
- Advertising and marketing content
Fail 2: PEers’ Concepts of Universal Access and Moral Imperatives Therefore Make No Sense
Given what’s actually on the web, advocating for universal access means PEers would have to argue:
- All software and copyrighted news/entertainment content accessed via the web should be free.
- Actually, scratch that: Any content that can’t be accessed via old browsers/devices shouldn’t be on the web in the first place.
- Everything on the web should have built-in translations into every language.
- Honda needs to consider a universal audience for its marketing websites even though (a) its offline advertising is not universal, and (b) only certain people can access or afford the cars being advertised.
- All of the above should also be applied to offline software, books, magazines, newspapers, TV shows, CDs, movies, advertising, etc.
Needless to say, this argument would never succeed. And it shouldn’t succeed:
- Commercial software is a product that a company sells. Just as it would be absurd to expect companies to give away cars, Craftsman tool sets, or tax preparation services to everyone in the world, it would be absurd to expect companies to do so with software.
- Most of the world has a system of copyrighted news/entertainment. You could argue with that system (though good luck with that), but you can’t say the system shouldn’t apply just because a copyrighted thing is accessed via the web.
- A company has no inherent reason or moral obligation to consider people outside its products’ geographic or economic reach. Moreover, any company that offers products or services to people in other places will appropriately consider the audience’s language and available technology. Otherwise the products will fail.
- Viget’s awesome Dick’s Sporting Goods sites are commercials. Netflix is entertainment. Adobe is a business selling software to people who want and can afford it. That stuff is not on some higher plane of universal human knowledge.
If universal access to what’s on the web doesn’t make sense, then there can’t be a moral imperative to provide that universal access. Which means:
- PEers’ claimed (or insinuated) moral high ground is a sham.
- The underlying justification for progressive enhancement falls apart.
Fail 3: The Moral Arguments Not Taken
There are plenty of coherent philosophical/moral arguments about the internet and content access:
- Countries should strive for universal access to the internet — to the infrastructure and to devices that can access it — because internet access can lead to economic, social, and political progress. (i.e. right to internet access.)
- A government should not place limits on who can access the web, which parts of the web people can access, or what can be said on the web.
- Companies that control internet access should treat all data the same (i.e. net neutrality)
- The web should always have the potential for anyone to create hyperlinked HTML files that add to the world’s birthright knowledge.
- More copyright owners should let more of their content be part of the world’s birthright knowledge.
The problem for PEers is that:
- They do not make any of those arguments.
- Web development in general has little impact on those moral causes, which are more about broader legal, political, social, and economic systems.
Ending the Circularity
When pragmatists get sucked into this discussion, they usually try hard to be even-handed, big-tenty, can't-we-just-get-along-y. For example, Matt Griffin wrote this achingly good-hearted article for A List Apart during a previous round of PE blowups.
“One thing that needs to be considered when we’re experimenting ... is who the audience is for that thing. Will everyone be able to use it? Not if it’s, say, a tool confined to a corporate intranet. Do we then need to worry about sub-3G network users? No, probably not. What about if we’re building on the open web but we’re building a product that is expressly for transferring or manipulating HD video files? Do we need to worry about slow networks then? ... Context, as usual, is everything.”
Meantime, while Griffin bends over backward to give benefit of the doubt, Keith writes things like this:
- The only way to care about end users is to ensure universal access to everything on the web.
- Developers who eschew progressive enhancement are motivated by laziness and/or selfishness, and they don't think or care about end users.
That's the circularity — and the frustration — in a nutshell: Pushing an incoherent moral philosophy in the guise of a practical discussion, and kinda being a jerk about it.
And to the well-meaning devs who have felt trapped or shamed in this circular discussion: You're not a bad person if you ask the hard-liners to stick to practical arguments, and tune them out until they have something coherent to say.