views:

111

answers:

4

I'm confused on what the difference is between Progressive Enhancement and Graceful Degradation. To me they seem like the same thing.

Can you please explain to me the differences between the two and in which situation I would use one over the other?

+5  A: 

If your site looks equally good on all browsers, but certain browsers get, say, dancing ponies because they support dancing ponies, then that's Progressive Enhancement. It works in all browsers, but certain browsers get something extra. Usually that term is applied to certain Javascript features that may enhance usability beyond "raw HTML".

If your site only looks the way you intend to on browsers that fully support, say, CSS3, and IE8- will display the same page without, say, rounded corners, then that's Graceful Degradation. The site is really meant for state-of-the-art browsers, but it's still usable in older browsers, just not as fancy.

In the end, they're really the same thing, looked at from two different perspectives.

deceze
+9  A: 

They ARE almost exactly the same thing, but they differ in context.

There is a class of browsers called "A Grade Browsers". These are your typical audience members that (probably) make up the majority of your visitors. You'll start with a baseline of these users. Call this best modern practices.

If you want to enhance the experience for anyone happening to use FF3.6 or Safari 4 or some other whizbang developer nightly webkit whathaveyou, you'll want to do awesome things like

  • rounded corners via css
  • shadowed text (but please god, not TOO much)
  • drop shadows (see above parenthetical)

These make your site kick-ass looking, but won't break it. This is progressive enhancement. Embracing the future from the point of best practices.

On the other hand, your niche Nintendo site attracts a fair number of IE5 users. Poor you, but you also want to make sure they keep coming back. You might provide an alternative to your ajax behavior by including the ajax script in an external file and if their JS isn't turned on, maybe your links update the whole page. Etc. From the point of view of best modern practices, you're making sure that certain historical markets are being catered by some semblance of a functional site. This is graceful degradation.

They are mostly identical, but differ in terms of priority for many development teams: PE is quite nice if you have the time, but GD is often necessary

Alex Mcp
+1  A: 

I find it tends to be attitudinal - are you saying "okay, my site works with Lynx, users can do everything I want them to be able to do, now lets add some panache", or are you saying "okay, my site works in Firefox, now lets try to fix it for people not willing to use that/who turn off javascript/etc"

Damien_The_Unbeliever
+2  A: 

The direction from a chosen baseline for each concept is different.

Graceful Degradation starts at a ideal user experience level and decreases depending on user agent capabilities down to a minimum level, catering for agents that don't support certain features used by the baseline.

Progressive Enhancement starts at a broad minimum user experience and increases depending on user agent capabilities up to a more capable level, catering for agents that support more advanced features than the baseline.

I think that one could employ both concepts if time/budget permit. If not then graceful degradation would be preferred.

Dean Burge