Progressive Enhancement vs. Graceful Degradation
This is a summary from a comment on Progressive Enhancement and Graceful Degradation view the original post here.Basically (and apologies here if I’m preaching to the converted) there are two usability philosophies, with a subtle distinction between them that’s lost on a lot of people.
Graceful degradation is the idea that you initially develop your site using Javascript/Flash/whatever, and then go back later and add noscript/noembed tags and server-side handlers to allow non-JS browsers to still sue the site.
GD (in this sense) has largely been discredited as a design philosophy, because it allows/encourages poor, technology-dependent design and (as you note) it requires extra work to make the site accessible/usable for non-standard clients.
Progressive enhancement is a newer approach, where you initially design your site to work using only HTML and REST, then add progressive layers of CSS, javascript/AJAX and Flash to enable more advanced user-interface functionality if the client supports it.
The difference is subtle, but important — PE means the site is always accessible from day one, using any client which understands HTML+HTTP/REST+cookies (ie, supporting less-capable clients — which include things like automatic translation services, aggregators, mashups, search engine spiders and the like — requires no “extra” work). Then, with a strong foundation you can build upon, you can layer whatever newer technologies you like over the top, as-and-when they become supported (or even as-and-when they’re invented).
GD is basically building and decorating a house, then going back and digging foundations under it if you remember, and can be bothered, and the foundations can be made to fit.
PE is building good strong foundations, then building increasingly complex, beautifully-designed floors on top of that foundation.
There’s not much argument about GD vs. PE (GD is largely deprecated/discouraged) because even if you design a site using GD, as soon as a new technology comes out (like CSS, or AJAX, or whatever) you then either have to re-implement your entire site from scratch with the new technology and then go back and fill in the noscript/noembed/no-whatever-the-new-technology-is tags again, or you’re effectively doing ”de-facto” PE (building newer advanced layers over an existing, simpler foundation) from that point on.
Since you’re faced with either wasting a huge amount of time re-implementing or effectively forced to use PE from then on — the conclusion goes — you might as well design using PE from the start, and ensure your site works for all browsers everywhere.
Otherwise you’re building a site using a weird, ad-hoc, inconsistent mishmash of GD and PE, without any kind of overall architecture governing the design and implementation process.
Given this, the core functionality of your site should always be implemented the simplest technology available (HTML+HTTP for web pages, static image files for pictures, Flash for embedded videos, etc), then you should progressively enhance the user-interface using whatever technologies you like (eg, layering unobtrusive Javascript and AJAX system over HTML+HTTP forms, or replacing static images with interactive SVG/Flash diagrams, or plain HTML widgets with pretty javascript widgets).
As 9jack9 (admittedly somewhat opaquely) says, javascript should be used to enhance usability, not to implement it.
The site should work in the lowest technology possible, then advanced technologies (Javascript, CSS, Flash, SVG, Silverlight, whatever) should be used to improve the user experience.
Make more sense?
3 Comments to “Progressive Enhancement vs. Graceful Degradation”
Leave a Reply


The best information i have found exactly here. Keep going Thank you
Hi, gr8 post thanks for posting. Information is useful!
Hi. I like the way you write. Will you post some more articles?