Understand The Web · Ben Ward
Perceptions of the web is changing. People are advocating that we treat the web like another application framework. An open, cross-platform, multi-device rival to Flash and Cocoa and everything else. I’m all for making the web richer, and exposing new functionality, but I value what makes the web weblike much, much more.
The last few days have been tough for web evangelism. Or at least, tough for those of us who like to be regarded as level-headed.
First, HP purchased Palm, and immediately declared their commitment and belief in WebOS. A great move for both companies for sure, but cue comments like that of @bgalbs on Twitter: “The biggest tech company just bet its mobile strategy on the web”. Similarly, Joe Hewitt proffered “Hopefully we’ll look back on today as the day the mobile web began to eclipse proprietary mobile platforms.”.
Meanwhile, the feuding between Apple and Adobe regarding Flash on iPad took an unexpectedly public twist, with Steve Jobs writing at length everything that John Gruber had already described about defending his platform from third-party influence, but also that Apple are choosing to invest in native running open standards. Jobs incorrectly brands this ‘HTML5’. He also criticises Flash for being proprietary whilst evangelising the H.264 video codec (licensing for H.264 is not ‘open’, either.)
Adobe hustled a number of responses. Rapidly, a live interview with CEO Shantanu Narayen. Whilst everyone mentioned so far is guilty of muddying terminology, not saying exactly what they think they mean, and/or some general platform and framework-related confusion that I’ll elaborate on below, Mr Narayen is the first to throw some incomprehensible bullshit into the day. He refers to “open content”. What is that? Content wrapped inside an impenetrable, proprietary, single-vendor container format? Flash, by design, locks content away (in exchange for other supposed benefits.) Comments like “Flash is an open specification” is unhelpful too: The page hosting the Flash specification doesn’t specify a license, the document itself just exerts copyright and disclaimers on behalf of Adobe. Furthermore there are no native or competing implementations of Flash, nor is the development of Flash open to participation.
Adobe has for years relied on bullshit merchandise to remain relevant in the ‘future of the web’ debate. Three years since the launch of the iPhone visibly snubbed them, they have not shipped an acceptable, functional version of Flash on any other handset. If the upcoming Android release doesn’t perform well, there will be no reprieve.
Web Evangelism got hard. When Zeldman wrote Designing With Web Standards, there were two standards that mattered: HTML and CSS. They were the path to cross-browser compatibility, and thus they were the route to a brighter future (both for design, and for information publishing.) 12 years later, holy shit. JavaScript joined the standards party, and then became quickly obfuscated by frameworks. CSS3 stablised, Webkit extended CSS further (and it’s still called CSS3), a plethora of new standards on the server and client: OAuth, OpenID, Contacts, Connect, Geolocation, microformats, widgets, AJAX, HTML5, local storage, SPDY, ‘The Cloud’…
All of these things are vying for attention and evangelism. Some of them are great, some of them are stupid, but they’re all clubbed together under this vague banner of ‘The Open Web’. It sets expectations and demands from developers, who are all the while being wowed by the efficiency and quality of proprietary application frameworks like Flash and Cocoa.
There exists on the web a collective memory problem. It’s a famous fault in software engineers to instinctively favour reinvention over reuse, not just because they are unfamiliar with what came before, but because they misunderstand why it came before. This is a rule that is important to understand, so that it can be broken. It is not well understood, yet it is regularly broken.
Besides memory, the half-life of most things on the internet is short. Frustratingly, terminology is no exception. From the coinage, we lose meaning and specificity within a few years, sometimes only a matter of months.
‘HTML5’ now refers to a collection of related client-side technologies, branded together as a product. It is no-longer just a hypertext specification document, and everything that concerns document semantics is being ignored anyway. This is usage that Steve Jobs employed this week.
‘Open’ is lost.
- • The H.264 video codec is not open. It is patent encumbered, and there is a financial obstacle to license those patents. Yet, despite this, H.264 is bundled in with discussion of an open web stack. In practice it may be ‘open enough’ to function on the web. Operating Systems and Browsers will license it for playback, and the authority that grants the licenses is continuing to allow free (as in beer) usage of the codec by web publishers. But a change to those terms, and eventual enforcement of fees on big publishers is possible.
- • Adobe are certainly full of shit here, though. Absolutely full of it that it makes me angry. ‘Open content’?! Locked up inside Flash containers? That’s as closed as can be. At least if you uploaded it as a flat image you could run content through OCR it and recover the text! Let’s not get stated on their open screen project. To Adobe, ‘open’ means ‘cross platform, on platforms that Adobe provides support for, for as long as Adobe chooses to support them.’ That’s very different. Their use of ‘open’ is an outright lie.
Then, there’s ‘web’.
On this word rests most of our understanding (and misunderstanding) of what can and can’t be reasonably achieved with applications in the browser, over HTTP. What does it mean to be a ‘web application’? What are the expectations of a web application? Or of any web content, for that matter?
Off the back of the Apple verses Adobe mudslinging, Joe Hewitt went on a very, very long rant about the state of ‘the web’ as an application platform.
In parts, I agree, certainly with regard to the process of standardisation. Standards are supposed to be derived from implementation, and standardised technologies will be better for real-world iteration. Heck, our entire microformats process is based around codifying examples in the wild. The failure of CSS to define a layout syntax (choose from three) illustrates the need for implementations to lead.
However, the suggestion that Microsoft were bullied out of innovating the web, or that developers should pursue whizz-bang APIs to the point of single-browser dependency leaves me sour. This is the short, perhaps selective memory that the internet suffers from. It is not acceptable to me that 21st century knowledge retention has become so short and shallow as to be overwritten by influential ranting on Twitter. A greater tool for the dissemination of misinformation has never been known.
For those too young to remember, IE was innovating like crazy from 4.0–6.0, right up until the DOJ and web standards commies intervened.
Microsoft Internet Explorer did not stop innovating because of ‘standards commies’. That’s offensive and wrong. Web standards advocates went after Microsoft because they failed to adequately support basic, foundational web standards like CSS, necessary to publish an interoperable web of information in which Firefox and KHTML and everyone else could even compete, let alone succeed. That early CSS push was also a vital, huge step in making web content universally accessible beyond visual media.
Microsoft’s development of enhancements like ActiveX, and
XMLHttpRequestwere not being prepared to be standardised for the web with W3C participation, they were invented in such a way as to inject proprietary, Windows-only code into the web. Tools not to make to web better, but to make it dependent on Microsoft. Chris Wilson has since written more accurately about the plateau in IE development on his blog.Contrast Microsoft’s method in the 90’s to the more recent CSS efforts coming out of Webkit: Extensions to CSS are followed promptly by proposed specifications (such as CSS Animations). Microsoft, from the top down were trying to ‘own’ the web. (More recently, to their immense credit, they’re in the right game. The aforementioned CSS Grid Layout module is from Microsoft engineers.)
Meanwhile, Sachin Agarwal is writing that The Web Sucks, again talking about the web as an application platform:
Web applications don’t have threading, GPU acceleration, drag and drop, copy and paste of rich media, true offline access, or persistence. Are you kidding me?
There, in that quote, is where I want to pull all of this together. Sachin’s complaint has absolutely nothing to do with the web. Think about that word; ‘web’. Think about why it was so named. It’s nothing to do with rich applications. Everything about web architecture; HTTP, HTML, CSS, is designed to serve and render content, but most importantly the web is formed where all of that content is linked together. That is what makes it amazing, and that is what defines it. This purpose and killer application of the web is not even comparable to the application frameworks of any particular operating system.
That’s the kicker. We talk about ‘web applications’, the ‘open web stack’. People are citing HP’s purchase of Palm and investment in WebOS as a victory for the web. We talk about applications built using HTML, CSS and JavaScript in the same breath as content published using HTML semantics.
Want to know if your ‘HTML application’ is part of the web? Link me into it. Not just link me to it; link me into it. Not just to the black-box frontpage. Link me to a piece of content. Show me that it can be crawled, show me that we can draw strands of silk between the resources presented in your app. That is the web: The beautiful interconnection of navigable content. If your website locks content away in a container, outside the reach of hyperlinks, you’re not building any kind of ‘web’ app. You’re doing something else.
Palm WebOS applications are awesome, but they are not part of the web. An app might interact with data on the web, and they are built with similar HTML, CSS and JavaScript technologies. That’s great, but they are not a connected, interlinked part of the web.
We’re talking about two very different things: The web of information and content, and a desire for a free, cross-platform Cocoa or .NET quality application framework that runs in the browsers people already use. The latter cause is louder, and risks stomping over the more valuable, more important, more culturally indispensable part of the web.
I’m not saying that better, more abstracted JavaScript APIs are unwelcome. I’m not saying that APIs to access devices like webcams and microphones aren’t useful or even important. Even WebGL, as far out of my field of interest as it is, would be a great thing.
But, the open publishing nature of the web, and the requirement that information be accessible, will inherently cause it to lag behind other platforms. The success of the web, the success of this impossibly huge network of information is because of the open, universally accessible, cross-platform, cross-device nature of web content. Cross-platform user interface sucks. It’s a nightmare of inconsistency and wrong, momentarily obsoleted assumptions. But cross-platform content? Well that is content. It’s articles and poems and pictures and movies and music, everywhere! How brilliant is that! Calling for browsers to make massive proprietary advances (even with the caveat of standardising later), suggesting that users should tolerate swapping between browsers, or even devices, to access particular content because you’ve obscured it behind a bespoke API is an absurd throwback to days we’ve left long behind; a proposition that would result in information and culture being locked away. Nothing is worth that, especially not ‘web applications’.
If you reach the point of building a browser-based application that you depend on so many proprietary enhancements that your users can only access it using Google Chrome, I think you’ve picked the wrong platform. If you want to built the most amazing user interface, you will need to use native platforms. A single vendor’s benevolent curation of their framework will always outpace the collaborative, interoperable developments of the web, whether it’s locked in a standards process or not. When they do a good job (like Apple have with CocoaTouch) their platform will succeed. But the web will always be the canonical source of information and relationships. That’s what it was built for. Blogging at length about how much the device APIs suck won’t ever undo that, nor change the fact that turning HTML in a rich application dialect is still a very new idea.
Personally, aside from all of this almost ideological disagreement over what the web is for, and what you can reasonably expect it to be good at, I honestly think that ‘Desktop-class Web Applications’ are a fools folly. Java, Flash, AIR and QT demonstrate right now that cross-platform applications are always inferior to the functionality and operation of the native framework on a host platform. Steve Jobs is right in his comments that third-party frameworks are an obstacle to native functionality.
Creating generic, non-native interfaces that run in a web browser won’t be any better than the cross-platform applications that came before (see Cappucino.) The idea of undermining the core function of the web to achieve that is detestable.
Interesting column on web standards.


