Graceful degradation involves designing with the assumption that that most users will have most functionality available to them, while providing alternatives for those that don’t. The typical graceful degradation approach will use <noscript> element to offer equivalent functionality for JS scripts that aren’t run.
Progressive enhancement starts from the other end. Pages are built with the functionality that we can be reasonably certain all browsers have: HTML and widely adopted CSS features. Richer interactive elements are layered on top of this basic framework, but nothing on the page depends on these “enhancements” working to provide a good user experience. It might be better with the JS and complex CSS, but it works fine without.
For many designers, and for some at the W3C, progressive enhancement is the preferred option:
“I might be an idealist but I really dislike the idea of graceful degradation. By building something and then making it barely work in other environments (or asking users to upgrade) I make a lot of assumptions about both the environment and the ability of the users to upgrade.”
But, in the modern online landscape, is progressive enhancement a realistic option for a web project? I think it depends on the project. Take the example of a blog: its job is to show text articles and images. Designers might want to include nifty JQuery transitions, but they’re the cherry on top. For most blogs, progressive enhancement is a realistic goal.
The real sting in the tail here is that progressive enhancement can be time consuming and impose constraints on the design process. If developers are forced to develop workarounds to provide an ultimately unsatisfactory facsimile of full functionality in crippled browsers, then time is taken that could be used to implement a better experience for the majority use case.
On today’s web, where the traditional website is becoming less common than SPAs and interactive web apps powered by React and other advanced front-end technologies, progressive enhancement becomes even less attractive.
As Johan Ronsse points out, progressive enhancement is not always possible.
“Not everything is a content website consisting of pieces that can have “fallbacks”. Vast pieces of software are being built with web tech. Apple’s Pages in the browser is an entirely different beast than your average news website. Enterprises are moving every bit of their software to a web stack.”
There are a good reasons for taking the progressive enhancement approach: it improves accessibility, can be better for SEO, and it embraces an inclusive philosophy. However, given the expectations of modern users and complexity of modern sites, progressive enhancement is an ideal to be aimed for with the acknowledgement that other factors may prevail. Progressive enhancement should be preferred, but not insisted on.
About Matthew – Matthew Davis is a technical writer and linux geek for Future Hosting. Follow them on Twitter Twitter at @fhsales, Like them on Facebook, and check out more of Matthew’s writing on Future Hosting’s web hosting blog.