If you know about the timeless importance of graceful degradation then you need not read this, but for those of you who think it’s an old-fashioned methodology or even an optional technicality then let me be the first to tell you that you’re wrong! I know this may put me, a mere 18-year-old web developer in the awkward position of having to tell some ignorant 50-year-old that they’re wrong but I’m perfectly comfortable with that if it ensures a better internet!
I’ve never surfed the web in a browser less capable than IE5, this should say quite a lot about my lack of understanding of less capable pieces of software and devices, yet, I still appreciate and understand that graceful degradation is of upmost important when creating any website.
Let’s look at your average out-of-college web designer’s perspective on graceful degradation, assuming they know what it means:
Why the idiot is wrong:
The above passage represents the complete and utter idiocy of some people, real people! You might think it’s a little over the top, what with the "if a user doesn’t have the very latest nightly build" comment but overall it is a pretty accurate depiction of what I fear a few web designers around the world actually think.
"Graceful degradation is an added feature"
"Who the hell gives a damn about some paranoid geek running Lynx"
- Security reasons. (to protect from XSS attacks and Internet Explorer’s multiple security flaws etc.)
- Browser sometimes crashes because of excessive JS, user disables it.
- User is surfing from behind a corporate firewall – the firewall blocks client-side-scripting. .
Ensuring a degradable experience
In order to ensure a degradable experience for your users it’s important to have the right mindset from day one. Graceful degradation itself is really just an end to which the means is usually something called ‘progressive enhancement’, a well-known methodology used in building fualt-tolerant systems.
Progressive enhancement, when applied to the internet, is essentially the process of a website or web application functioning perfectly on modern software while still being able to work correctly on older software. When applying this concept to websites it’s easy to see it’s relation to the three layers of the web; content, presentation and behaviour.
Content is the fundamental backbone of any website; all your content should be visible whatever device or software platform a user is running. The content of your website will typically be found within the HTML, neither of the other two layers should be found within your HTML! Equally, your content should not come from either of the other layers. With the rise of multimedia (video/audio websites) this is becoming an ever unrealistic expectation but it’s good to have principles, right!?
Presentation (usually CSS) is the second layer and, for those browsers that support it, offers a lot of control over the layout and decoration of your content.