The Web Is Dead, Long Live the Web

Last month saw the news that Microsoft was shifting Edge’s rendering engine from its proprietary one to Chromium. Opinion on Twitter seemed to be split between joy at Microsoft finally embracing an open-source, standards compliant engine, or horror at the thought of browsers becoming an anti-competitive monopoly controlled by Google — a repeat of the dark days of IE6. It was certainly not great timing for a Chromium vulerability (via SQLite) to be dsicovered.

I’m certainly disappointed by this news, but I think that the reality is that the Web has been stuck in a monoculture and it shows in the current Web standards. This was Mozilla's response, and I respect what Mozilla stands for, but when you look at the desktop browser chrome there’s almost nothing to tell them apart. Tabs, an address bar (perhaps combined with a search bar), bookmarks, and history. Interaction models are largely identical, and have been since Firefox introduced tabbed browsing in 2002.

image4

image2

image1

Chrome OS, which had the opportunity to reimagine what a browser could look like when given the whole environment to play with, chose instead to remain identical to its "hosted" counterpart and instead recreate (or even expose with its new containerized Linux) a limited version of a 90s operating system around it.

You might argue that browser chrome is distinct from the engine underneath it and that’s true to an extent, but Web clients and their place in a modern computing environment determine what features should be standardized and supported by the engines. If your notion is that a browser is just another application that should be subservient to the machinery and affordances of the host environment that its running in, you’ll favor standards that are familiar over ones which are actually more native to the Web. The growing popularity of Electron and calls for that functionality to be pulled back into the browser is a particularly noticeable result.

However, the Web was always more radical than that. It had its own interaction models around hypermedia, and was flexible in a way that current systems still aren’t. User installed style sheets and scripts (keep going, Greasemonkey!), Web feeds for users to consume information how they want (RIP browser feed managers) or even combine and extend them (RIP Yahoo Pipes), the Semantic Web, warts and all, and its vision of agents ranging over data sources, compiling custom views on behalf of the user. All of it sidelined. Even the broad principle of ReST architectures allowing loosely coupled, evolvable clients has evolved out into something weaker — proprietary clients (either in-browser or native clients using things like WKWebView) delivered with hard coded, versioned endpoints. Instead of this grand vision, an identical set of browsers that vie to deliver increasingly opaque “Web Applications” to the user with perfect fidelity.

My mental model is that the Web sat on the cusp between 2 peaks — one was the 90s desktop model, and the other is a Web-native, decentralized hypermedia peak, not fully explored, yet has the potential to be much richer and more powerful. In the early days it looked like the Web was rising off towards the higher peak but instead, inevitably, it’s been dragged into the safe, well-explored one.

So this is why I think the Web is dead — it has lost its way. As long as the current institutions are in charge of the browsers and the standards committees its current path has fundamentally restricted how powerful the Web can be in the future. And I don't see a change in those institutions any time soon. The standards are large and sprawling, and it requires a significant investment to experiment in this space (not even Microsoft can compete) with little direct finacial gain.

I see two paths out of this. One would be to radically simplify the whole Web stack from the bottom-up. Allen Wirfs-Brock wrote a great post pointing out that the Web app platform looks a lot like both a framework and an (unspecced) operating system kernel. Perhaps we can pull out and standardize that kernel, leaving some competition in the framework part of the stack. This might overlap with the goals of Lively Kernel.

Screenshot-2019-01-03-at-19.03.50
Source

The other would be top-down: increase competition in the browser space. Hopefully we'd stumble on powerful models for clients which take advantage of the native properties of the Web, rather than fight against it. Even outside of the engine, browsers are large, complex things, but perhaps we can modularize and package them in interesting ways. I particularly like this take from Patrick Walton talking about engines, but applied to browsers as a whole:

So: the Web is dead, long live the Web.