Reinventing the Wheel Attempt 2: Web Plugins

The nice thing about a big shift like moving from desktop applications to web applications is that you get to reinvent a lot of stuff. Things that have been around in desktop applications and operating systems forever are reinvented for the web and people get excited about it.

Over two and a half years ago I wrote about web-application plugins. As the name suggests these are very similar to plugins for desktop applications, like Adobe Photoshop, Mozilla Firefox, Microsoft Word and so on — except they’re for the web! A pretty obvious idea right? The only thing I had to come up with is how this would operate (you need a two-way communication mechanism between the plugin’s server and application’s server), but it was nothing a webservice couldn’t solve. Well guess what, this year it turned out I was way ahead of the curve. The current state of the art is set by Facebook, Google’s OpenSocial and Netvibes. What they did is reintroduce windows. Windows? No, not the operating system, the desktop metaphor. The idea of having a square area in which an “application” operates. Facebook calls these applications “facebook apps”, I don’t know what OpenSocial calls them, I’m guessing widgets or social widgets or something. Netvibes is much the same, only simpler. With this, these websites become “web operating systems”. Interaction between these Facebook apps/widgets is limited or non-existent. Interaction between the apps and their operating system is also restricted. I’m not very familiar with OpenSocial, but I know that Facebook apps can go outside the box a bit too. Facebook provides the developer with a couple of hooks where he, or (hypothetically) she, can plug-in new functionality (like a “stab me in the back” link underneath your profile photo).

Other web applications are panicking because platformization is the new pink. You thought that you would keep your developer users happy with your brand new RSS feeds or fancy REST API? Hah! No, now they want to build applications that not only accompany your web app, but even run inside it. The question is, does this make sense for your application? For Facebook and other social networks it does. However, does it make sense to run these kinds of applications inside your online office suite, your e-mail application, your whatsidoodad? Well it depends how much you’re attached to the idea of having applications run inside your application (yeah, I know… not confusing at all). Something much more interesting is allowing developer users plug in to your application and extend its functionality. Get it? They need a web plugin API!

You might say, “hey! We already can extend current web applications, have you heard of GreaseMonkey? It’s frickin’ awesome!” I must say that I disagree, it’s not that awesome. GreaseMonkey is a Firefox add-on. You can download scripts that can modify the behavior of certain websites. Like, integrate Google Reader into Gmail, add saved searches. If the web applications provides no plug-in API whatsoever, then, sure, this is the best you can do. However, can you see how suboptimal this is? The whole point of web applications is that you can log in to them from everywhere and get the same behavior, all your data travels with you and so on. GreaseMonkey scripts do away with that. If I want the same behavior and cool features everywhere, I have to take my scripts and GreaseMonkey add-ons with me everywhere. Remember the Milk, is another great feature for Gmail, but it requires a firefox extension, so I’m not going to use it — I want my Gmail to look the same everywhere I log in, I’m strange like that.

What you want is Google to open up their interface. To let them offer you a plug-in API. “But they’d never do that, they’re not going to open Gmail up!” you might say. But you’re wrong. They already do, except they did it at the wrong level. In the new version of Gmail there’s a GreaseMonkey API! Doesn’t that seem absurd? (Some say it’s awesome.) What I would like is a way to load up Gmail plugins from my Gmail settings and have them available everywhere I go. Why are they not doing this? It’s not that hard. And let’s face it, it’s the obvious next wheel to invent.