Almost a year ago now, I wrote up an entry about the techie-hit Firefox extension AllPeers in which I chided AllPeers’ creators for making it a Firefox extension rather than a stand-alone application. Their response touched off a rather overly-circuitous and belabored series of posts entitled “What Does ‘Web Paradigm Mean, Anyway?’” (parts 1, 2, 3, and 4). In those posts, I tried to counter AllPeers brain Matt’s position that enabling a browser-based paradigm required his application to run within the browser itself. From the post entitled More on AllPeers: Firefox vs. Standalone:
But I’d be unhappy to see AllPeers pack up its bags, move out of Firefox and set up shop on its own. I want to run AllPeers views in tabs alongside webpages. I want to use the Firefox auto-update mechanism to get new versions. I want to move from a view of my local media files to a webpage, then press the back button to return to my media view. And so on. Plus we have a bunch of ideas for future AllPeers features that make a seamless meshing with the web browser even more vital.
Through my rambling, I attempted to show that - while the web is no longer just HTML in a browser - attempting to write applications such as AllPeers as a browser extension is destined to be a long-term disaster, with multiple unforseen consequences, and potentially leading to the re-creation of an operating system within a browser. Witness, for example, the ridiculousness of adding system tray icon support to Firefox so that your browser can keep running in the background even after you close it just to support AllPeers.
Instead, I posited a world where our ability to write complex web applications is supported by frameworks like XULRunner or .NET or Java, where we can benefit from high-level web-enabled abstractions but with the tremendous work already done for us by the operating system underneath. The user interface could then be whatever we wanted - a shell extension, a fat-client application, or even an extension in the browser!
It seems that eight months later, the lightbulb has come on - perhaps due in no small part to the challenges faced by creating an extension beyond the scope of what an extension should be, or perhaps due to voices other than my own minor chittering having finally suggested it. Matt now sees the elegance of a stand-alone “headless” AllPeers client that uses a browser extension as the user interface. Go for it! Your product will be infinitely more stable, powerful, and usable.
I wish I could have been more lucid in my previous writings so maybe this point would have been reached sooner. I have high hopes for AllPeers as a peer-to-peer system, but I have yet to install it because I fear its complexity potentially breaking the ever-so-fundamental piece of software that is my browser. Give me process isolation and I’ll have the bits before you can say “darknet.”