One of the best books I read last year was Creative Selection by Ken Kocienda. It gives a behind the scenes look at the prototyping process that created the native Mac browser Safari and the innovative iPhone keyboard. Incredibly inspiring and solidified some of my thinking that maybe the current process de jour does not —despite how many big companies subscribe to it— lead to the best, most innovative products. The actual answer is in prototypes and frequent demos.
But the other weekend, I was dismayed to read this unfortunate take from that very same author I admire:
Web browsers are not operating systems or application development environments. They’re document viewers. The effort to make them into something more than that has been one of the biggest wrong turns in the history of computing.
— Ken Kocienda (@kocienda) January 30, 2021
To be clear, I hate the “The web is for documents” take as much as I hate the “I build web apps, not websites” take as much as the “The web is a compile target” take as much as I hate the “The web has to compete with native apps” take. Those takes always seem to end up as some kind of scaffolding for a pissing contest, an attempt to denigrate someone else’s line of work.
I can’t imagine why supporting applications would qualify as “one of the biggest wrong turns in the history of computing”, but I intuit this hyperbole is related to JavaScript and the overall quality and maintainability of the web platform. Taking Ken’s critique in good faith (and not a punchy job marketing tactic), I think there’s some merit to the idea we who build for the web are spending massive amounts of effort to produce lower quality products. At the same time, this reeks of a holier-than-thou Apple “walled garden” ethos.
What is the alternative if the web is supposed to be just documents? We all spin our wheels to learn dedicated programming languages to build bespoke apps to cater to every app store? All that effort to get an average of zero downloads per month? All that effort and app store hoop-jumping just to manipulate the same JSON in a slightly different way? I can accept that a 200mb precompiled binary can produce more fluid animations, but the web is unmatched in its breadth and access.
I’ve come to accept that if there are bugs on the web or if there’s a massive quality dip on a site you’re visiting… that is a sign the web is working. It means some unqualified person was able to skip past the gatekeepers and put something online. That’s a win for “The web is for everyone.” A permissive web is not without its performance, security, usability, and accessibility concerns, but all software lives in that tension and even native platforms get this wrong.
The web is so much bigger than the little boxes we try to put it in. The web is good at many things and not great (yet) at others. The web is a snowball rolling down hill, absorbing other technologies along the way. The web is an interactive window across space and time, a near instant connection to anyone on the planet. The web is something different. I wish we’d see the web more for itself, not defined by its nearest neighbor or navel-gazing over some hypothetical pathway we could have gone down decades ago.
Further reading:
- The Web is for More Than Document Viewing by Chris Coyier