Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News The Big Progressive Enhancement Debate

The Big Progressive Enhancement Debate

This item in japanese

Recently, Tom Dale, one of the creators of ember.js, wrote an article that re-kindled a brewing debate on the need for progressive enhancement.

A few days ago, Daniel Mall launched a snarky tumblr called Sigh, JavaScript. [...] The goal here is to publicly embarrass those who fall outside your social norms; in this case, it’s websites that don’t work with JavaScript disabled.

I’ve got bad news, though: Progressive enhancement is dead, baby. It’s dead. At least for the majority of web developers.

"Something happened a few years ago in web browser land. Did you notice it? I didn’t.", he said, "the browser transformed from being an awesome interactive document viewer into being the world’s most advanced, widely-distributed application runtime". What is Progressive Enhancement really? According to Wikipedia

Progressive enhancement is a strategy for web design that emphasizes accessibility, semantic HTML markup, and external stylesheet and scripting technologies. Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing an enhanced version of the page to those with more advanced browser software or greater bandwidth.

As the browser vendors are always trying to innovate and differentiate, the responsiveness and user experience are constantly improving. The ubiquitous availability of browsers as a platform for delivering these responsive applications is compelling.

On the other side of the debate are folks like Nicholas Zakas whose presentation explains that there is a cost to making applications rely so much on Javascript; in addition to the usual problems his presentation provides analysis and insights to problems with modern "SPA" applications that are Javascript heavy. He goes on to provide suggestions on how one could provide graceful fallback options.

Another angle to this debate is the fact that the web as we know it today, has scaled because of certain architectural properties. In a presentation at QCon by Stefan Tilkov talks about how Javascript needs be unobtrusive. He recommends that applications embrace the web and its architectural properties and refers to this kind of Architecture as Resource Oriented Client Architecture.

ROCA is an attempt to define a set of recommendations — independent of any particular framework, programming language, or tooling — that embodies the principles of what we consider to be good web application architecture. Its purpose is to serve as a reference, one that can be implemented as-is or be compared to other approaches to highlight diverging design decisions.

As explained by Jake Archibald, applications that are Javascript first will break the web as we are used to it; a developer advocate for Google Chrome. Sharing, linking and navigating; for that matter, having a web site be searchable by Google/Bing etc. relies on these properties of applications. Granted, not all applications fit these requirements; for example browser games, video players etc. but Progressive Enhancement is still important he asserts.

Tom Dale, concedes its possible to achieve these properties of  using various techniques in modern Javascript applications, but it should always be driven by pragmatism.

Embracing JavaScript from the beginning will let you build faster apps that provide UIs that just weren’t possible before. [...] Of course, there will always be cases where server-rendered HTML will be more appropriate. But that’s for you to decide by analyzing what percentage of your users have JavaScript disabled and what kind of user experience you want to deliver.

Rate this Article