If Plugins Never Were

Thought experiment: What might the world be like today, if Netscape Navigator 2.0 hadn’t exposed a plugin API back in 1995?

The decision back then was based on sound history, of course… tools like Adobe Photoshop had already made third-party plugins popular… before that, the XCMD/XFCN extension mechanisms in Apple’s HyperCard proved useful and innovative, and Macromedia Director followed with cross-OS XObjects and then Xtras (one of which, XCMDGlue, let you bring in prior HyperCard extensions)… in the wider world before that there were COM, CORBA, and you could even see the hints in the UNIX “pipe” process. “Small pieces, loosely joined” was a proven model for the benefits of extensibility.

But suppose Netscape Navigator entered a parallel dimension, and stayed just one big isolated hunk of code, trying to do everything itself… how might history have turned out?

Microsoft Internet Explorer would likely have continued with ActiveX extension of their browser… their business drivers for third-party extensions were wider than just playing catch-up to Netscape at that point. At least one browser would still support open extensibility, but there wouldn’t be the cross-OS Netscape Plugins API.

In such a world you could extend the Microsoft browser, but not the other browsers. Microsoft’s relative openness would have been a significant advantage over other browsers.

But early on it probably wouldn’t have made much difference. There was an intense period of plugin exploration during the mid-90s, hundreds of browser extensions attempted, but few gained enough consumer support to make a difference. VRML authors would have just worked on the desktop, in networked applications, if they couldn’t extend the browsers. Shockwave is still one of the most popular plugins, with majority presence on consumer desktops, but there were few Shockwave apps which changed how people used the Web. Adobe Reader worked both in-the-browser and as a separate client application, so we’d probably still have Internet access to documents. Java has a number of roles beyond in-the-browser work, and it would have survived in different form. The inability to add third-party renderers would not have made much difference in the mid-90s.

Oddly, one of the most significant plugins in this alternate history of “a world without plugins” might have been Progressive Networks and its Real Audio. They did the first work in making audio available in browsers, only being eclipsed later by Shockwave’s inclusion of Fraunhoffer “MPEG 2 Layer-3″ audio, and the later popularization of this as generic MP3 files. Real Video was constrained in its early years by bandwidth and decompression costs, but the whole MP3 revolution, which toppled empires, would not have been possible if third-party developers could not experiment around the edges of the browser core.

Think of the beauty of what Real offered… one codebase for Windows, one for Mac, and you could then use any browser you wished, so long as it supported the common Netscape Plugin API. Every browser had an equal chance to host hot new features… browser-makers were enfranchised, automatically, if your app could be extended.

But without a common extension mechanism, each browser would have to reinvent the wheel, and content developers would have to test against varying browser choices. New browser makers would have a higher hurdle before being able to compete.

The story takes a twist when we get to the late 1990s. Netscape 4 was as reviled by web designers then as Internet Explorer 6 is despised by web developers today.

Netscape dropped from the heights down to single-digit popularity in those dark days.

If Microsoft had added audio and video into its browser directly, rather than through a common extension mechanism, Netscape would have been even less able to compete. Being able to share in the innovation, through plugins for Apple’s QuickTime, Real Media, and even Windows Media, kept Netscape in the mainstream of capability.

And if the new Mozilla had been forced to license the codecs Microsoft supported before Firefox could attempt to play the world’s music or movies, well… they likely wouldn’t have made it.

In our world today you can surf The World Wide Web in Opera, Camino, Konqueror and so on… YouTube, Flash games, election charts, whatever. Those smaller companies didn’t have to engineer support for the world’s existing video and RIAs on their own. The stability, accessibility, and universality of common third-party plugin capability makes it easier for specialty browsers to participate in the full web.

Plugins enfranchise browsers.

And it goes beyond browsers. The Hypertext Markup Language is useful for desktop applications and embedded devices, not just web browsers. A hypertext markup spec which imposes specific video or drawing, synch or processing requirements on implementers would stunt experimentation and innovation.

If there were no plugins, you’d likely now be going to Internet Explorer to get your real work done. And considering what happened after Microsoft won the browser wars in our world, it’s a safe bet that in that “world without plugins” they’d still be at IE6, if that.

A world without shared plug-in capability… well, think about it, a little more, yourself. It’s bleak.

Here’s my main point. “Small pieces loosely joined” creates a supporting ecosystem of technology… living, breathing, decentralized decisions. But creating a few giant monoliths of feature-creep code is just plain not as lively. I think the Apple/Google drive behind the current over-ambitious HTML5 spec would lead first to confusion, then to anti-competitive barriers, and then to sterility.

I want the HTML planners to focus on making things easier and more predictable for web content publishers. I want a smart kid in a rural third-world village to have a chance to learn how to publish to the world. I want hypertext markup accessible to more creators.

I want the HTML planners to make the basics work right. Make it easy to create a browser. Make it easy for anyone to compete against today’s reigning browser brand.

I want webpages which can integrate third-party content with safety. Warn us about web beacons. Beat clickjacking, and give us back “What You See Is What You Click”.

I want browsers to improve their handling of plugins… clean up your OBJECT/EMBED hassles now, it’s 2009… improve JavaScript/Flash communication and make it consistent… take advantage of today’s video. Stop treating plugins as a second-class citizen or, worse, a refugee class.

I want “The Open Web” to work well with others.

I want “The Open Web” to open up, to be “small pieces loosely joined”.

I do not want a future where only a few mega corporations can afford to create a browser.

I want HTML to succeed. I do not want to see it fail through ambition and inefficiency, like Netscape did. I want HTML to get smarter by getting simpler. I want HTML to get sustainable, to succeed.

Imagine a world where plugins never existed. Can you picture it? Can you see how history would likely evolve, were cross-browser capability only up to the browser vendors?

Cross-browser plugins have made our web what it is today. They should be celebrated.

And what I want is for browser vendors to acknowledge plugins as first-class citizens.