Extend the Web Forward

A Manifesto

In October 2007, Ian Hickson, the editor of the HTML5 specification added support for “offline applications.” The new feature made it possible for users to visit a website while offline.

Offline. Solved. Right?

Years passed, and websites like Facebook and the Financial Times tried to use the feature to provide offline capabilities for their applications. In frustration, they tried everything, and still couldn't make things work the way they wanted.

By 2011, everyone knew it. App Cache was broken, and it needed to be fixed. Facebook and The Financial Times started a community group entitled Fixing App Cache. The W3C held an offline workshop with a major theme of “Fixing App Cache.”

Anne van Kesteren and I attended the workshop, which identified several urgent issues. Anne opened a ticket describing one of the problems, the need for application that could work offline but fetched updates eagerly when online.

For months, Hixie pushed back on the feature, insisting incorrectly that the HTTP cache satisfied the requirements. Finally, in June of 2012, years after the initial release of the offline feature, he added a fix for just that one scenario. A year later, not all browser vendors have implemented this feature.

How did it all go so horribly, horribly wrong?

In short, an over-reliance on centrally planned API design.When Facebook first realized that the browser’s offline feature was broken, they had no way out. Their only choices: try to hack around the problems or beg the central planners to try again.

We can do better.

We could have built offline support as a new JavaScript capability, with the manifest feature built on top of that capability. Then, when the manifest failed Facebook (and lanyrd, and the Financial Times), they could have dropped down into JavaScript and written something that worked for them.

Instead of placing our faith in central planning, we should let the ecosystem of web developers build the features they need, on top of low-level capabilities exposed efficiently and securely by the browser.

That philosophy led Alex Russell to propose Navigation Controller as a solution to the offline problem. Instead of trying to figure out all of the offline use-cases, he proposed a set of new APIs that allow web developers to hook into network requests and implement their own caching logic.

The same philosophy drives the work on Web Components, which gives web developers the ability to write their own HTML tags, instead of waiting for centrally designed tags to make their way through the standards process.

Over the past few months, a bunch of us got to thinking—if we apply this philosophy across the platform, we can make it easier for web developers to move the platform forward.

So we wrote The Extensible Web Manifesto.

The manifesto describes a plan for moving forward that balances the security and performance requirements of the platform with a desire to push more innovation into the ecosystem.

It calls for decentralized innovation on the web platform. If we want to compete with walled gardens, we must enable web developers to build the future web.

Please take a look and pass it along. If you believe in this vision, write about it or show support by tweeting with #extendthewebforward.

Extend the web forward.