Thursday, May 31, 2007

Google’s inroads into solving 3 of 4 web-based app problems

This week Google has taken two more big steps toward The Last Computer, with release of Google Gears and acquisition of GreenBorder virtualization technology. Too bad they’re stepping with such clunky shoes.

In my previous post (Browser-based thin-client apps) I wrote about why Web 2.0 AJAXish applications are part of The Last Computer. But I also wrote about the four reasons browser applications will not replace all desktop applications.

3 of 4 web-app problems are solved by removing old client/server thinking

The first three of those four problems (Connection Required, Slow, & Sandboxed) are not a problem of the browser paradigm itself (although the fourth reason, HTML == Poor Interface, is). These three problems are due to an old, fixed way of thinking about browser apps. The old thinking is that the browser is on a client machine, and the server is on a distant machine somewhere on the other side of the internet, and never the two shall meet. There is no reason for this separation other than tradition, and if this tradition is broken then the first three problems approach zero.

    Consider: For ftp, bit torrent, and most p2p applications, there is no single client talking to a single server. The client is just as often a server. Client/server are outdated concepts.
The first step to breaking with old web/server thinking is to realize what a web server is: it’s the simplest bit of software ever written. A web server receives a request in a string; it sends back a response in a string. There’s no easier program to write than a basic web server. Perl fans like to write a web server in just a few lines. I’ve written at least twenty different web servers using Nombas’ ScriptEase Machine, because it is easier and smaller to create a specific web server than to install and configure a big commercial one.

Big Step #1: Move the web server onto the client

Realizing what a small effort an actual web server is, especially if it services only one client, there is no reason not to move that web server onto the client machine. Simply by moving a web server onto the client we’ve already (mostly) solved the first three of the web-app problems:

  1. Connection Required – Solved: server is on, no internet needed
  2. Slow – Solved (mostly): No internet latency added
  3. Sandboxed – Solved: Server has full access to client’s machine
For years I’ve used this web-server-on-desktop approach to create simple applications that use a browser interface to access my own computer. Mostly these have been for personal use when I need a quick program with a simple interface—usually a browser link or simple browser form will suffice. It works great (although it always feels like a hack).

Google Desktop was the first widespread offering I saw that used this approach. With the first Google Desktop, which allowed Google-like searching to spread to your own personal computer, what Google did was simply to write a web server that you ran on your own machine and so could search your local files, and your existing browser became the interface to what that installed web server delivered.

    BTW, this Google Desktop interface was terrible. People didn’t notice it was terrible because it looked just like regular Google results, which are fine, for the web (where expectations are very low), but when compared against a real desktop app it really was/is terrible. Long before Google Desktop I’d been using Copernic for the same thing. Even more so than my comparison of GMmail vs. Outlook, Google Desktop versus Copernic, side-by-side, showed the extreme comparative suckiness of browser as an interface.
Big Step #2: Join my web server into “the cloud” – Any computer is the network

So Google long ago realized some benefit of moving a web server onto the client. Why did they stop there for so long? Wouldn’t Gmail, and others parts of Google’s huge suite of web-based applications also benefit (i.e. lose 3 of 4 web-app problems) from moving the server onto the client?

Consider: Google does not have “a server” delivering my Gmail, web results, and so on. Instead, Google is some kind of amorphous cloud of machines that somehow magically act as one huge magical system. Those machines are fairly straightforward boxes. They’re unreliable; they break. Google works around problems. It’s magic.

I’m sitting here right now on a computer that is pretty much the same as those gazillion Google computers. But my computer can be dedicated to serving just me, while in the Google cloud I surely get less than one full system dedicated to me. Why cannot my personal computer become part of that amorphous Google web server cloud? The web server on my computer can better service me individually (online and off) but can also be part of the Google mega-computer-cloud. It’s the best of both worlds.

Google begins big steps with Google Gears, solving 2 problems (and creating more)

This week Google introduced a beta of Google Gears, taking those first two big beta steps toward solving the problems of browser-based apps replacing desktop apps. Google Gears is (primarily) a web server that runs on the desktop. In time, I expect Google Gears to tie into the Google cloud. The result being that all Google web applications will work when offline (synchronizing when connected), will become faster (because they will work directly with the local server), and will break out of the sandbox and allow access to data on one’s one computer (initially in limited form).

With Google Gears, web apps will become, for most functional intents and purposes, synonymous with desktop apps.

Google extends baby steps with GreenBorder virtualization acquisition

When you look at the Google Gears site, the first thing you see is this:

    This is an early release of Google Gears (BETA). After installation, please pay attention to the warning dialogs and grant access only to websites that you trust.
Once you extend the Google cloud to the desktop, so that any computer is the network, you’ve now introduced some big security holes. As the sandbox is opened and allows more capabilities, it also allows more danger. For instance, a web server on your Windows desktop has full access to delete your entire drive, read financial data, etc… whereas the browser on its own (barring bugs) cannot.

This is where Google’s second big news of the week comes in, their acquisition of GreenBorder. This acquisition has so far been reported as just a tool that protects a browsing session from danger, but I believe it has a deeper purpose that, when tied with Google Gears, gets Google closer to their version of The Last Computer.

If you can virtualize the session, not just of the browser but of the browser combined with Google Gears, then you have two things. 1) A safe environment for web apps that can do nearly anything a desktop app can do, including accessing much of the local computer’s resources, and 2) A virtualized “desktop” that can be neatly bundled, backed up (or cached), and even shared with other computers, so that as you move between computers your virtualized sessions can move with you.

With Google Gears and GreenBorder, can Google now replace web apps?

In combining Google’s news of the week, the whole story is much bigger than the sum of its parts. Google Gears + GreenBorder (+ existing Google apps) ~= Web Apps Replacing Desktop Apps.

That’s a big story. Enough to make Microsoft and Adobe squirm (more on them in future blogs). But this story still has a big problem: problem #4: HTML sucks for making rich and compelling interfaces. The browser, composed of HTML + CSS + Canvas + Plugins + Ecmascript + KitchenSinks, does not make pretty interfaces, at least not without a ton of hacks, memory, and money thrown at it for every application. The browser and its markup are just the wrong tools for making rich applications. Furthermore, the browser is not a thin client as it’s so often billed to be--it’s a fat, clinically obese, needs-a-crane-to-leave-the-bed client.

Close, Google, but no cigar yet

With these recent steps, Google is getting close to The Last Computer, but in some very inelegant ways. At least they show that they understand what The Last Computer is all about. And in their Googly way (with the nearly limitless resources of money and smart people to throw at the problem, even if they are hobbled by inelegant choices of basic components) they’ll probably make it work sufficiently well to become an integral part of most Last Computer systems.

Addendum June 10, 2007:

Wednesday, May 30, 2007

Browser-based thin-client apps: a part of The Last Computer

When I talk about The Last Computer people often counter with the idea that, with the advancements in Web 2.0 Ajax-y applications, there will soon be no need for a personal computer at all because all applications can be online.

For a decade or more many have claimed that the browser will become the ubiquitous front end to all applications, making the OS and even the computer a mere commodity. Following this claim is usually the prediction that these changes are on the verge of putting Microsoft out of business. (If I had a nickel for every million dollars that has been invested into putting Microsoft out of business through a browser thin client, I'd be a very wealthy man.) In the past the claim has always proven to be incorrect. The browser-based apps were just never good enough to replace desktop applications.

Are Web 2.0 browser-based apps now good enough to replace desktop applications? As a test, for the past couple of months I've switched away from my old Outlook program to GMail for all of my personal correspondence (Google's GMail is an example of one of the top-notch browser-based applications using Ajax and CSS and other magic). It was painful at first, of course, as any program switch is, but overall I've been very impressed. GMail is remarkably quick, interractive, useful, considering that all of the code logic is in the browser I already have and is updated as-needed onto any computer I log on to. From a user-interface perspective, GMail is probably as good as any standalone email desktop email reader of 10 years ago.

Yes, Web 2.0 apps are much richer than they were during the last dozen years when web apps were predicted to replace desktop apps. Much better than when we used to have to push each update from a slow server, and didn't have CSS to make things pretty, and had way too many browsers to support, and had to do the equivalent of today's XMLHttpRequest via communicating with separate 1-pixel-tall frames (if the browser supported frames and ecmascript, which many didn't). But they remain only about as good as the equivalent standalone app of 10 years ago.

Here's the thing: If you were to compare GMail side-by-side with Outlook on the same computer, and didn't know GMail was web-based but instead thought it was a standalone application, you'd think "what a crappy email program, slow, ugly, hard-to-use, and featureless--this looks like a 1.0 product of 10 years ago". But when you find out GMail is browser based, you say "wow, all this in a browser? Cool!"

Bad as it is, is GMail good enough to replace Outlook? Yes. For most situations and users it is, simply for these reasons:

  • It's free.
  • No installation or upgrade required.
  • It's available from any internect-connected browser anywhere.
  • No backup worries
  • Did I mention that it's free.
I'll be sticking with gmail for the foreseeable future for these reasons (and because I'm losing my exchange account as I enter my 3rd retirement soon). I'll get used to it. Google will improve it. It will remain "good enough".

But gmail, and web-based apps, are not great, and will never be as great as desktop applications for these reasons:

  1. Connection Required: They don't work when offline
  2. Slow: Slow with a good connection, and very slow with a bad connection
  3. Sandboxxed: Interaction with my real computer, or any programs not part of the google environment, is inconvenient (attaching files, sharing clipboard, etc...)
  4. HTML==PoorInterface: html+css+canvas + browser differences imposes severe limitation on how good anything can look and how difficult it is to create a rich interface

Reasonable fixes are coming to all of these problems (except probably the html+css problems). These issues will get better. But standalone desktop apps will also get better.

Summary: Web-based apps are good-enough to replace desktop apps in many situations. And we can expect them to improve (although always lagging many years behind desktop apps). But web aps are only part of the solution. For real power applications and users, and processor-intensive applications like games, browser+html+css+ecmascript+canvas+other-standards-layers is not going to cut it.

Browser-based thin-client apps will be a big part of, but not all of, The Last Computer.

Wednesday, May 9, 2007

Open letter to ACME Corporation to create the Last Computer: Consumer Model

Dear Important Dude at the ACME Corporation:

For a long time I've been dancing around an idea with all the computer geeks I talk to, everyone I work with, and some plain regular people who spend any amount of time on their personal computer. The idea has taken many wrong turns (mostly involving seeing it wrongly as a data backup problem), but now I think it is clear enough that I'd like to share the idea with you in the simple and remote hope that you can make something come of it.

In short:

    An ACME Personal Subscription Computer: The only computer that any typical person will ever need to "own".

The Current Problem:

    The typical person relies on computers more and more: for email, photos, documents, tons of data. But computers are not getting any easier to use when things go wrong: setup is hard, transfer to a new computer is near-rocket-science as far as most users are concerned, data is lost (those precious photos of my grandkids), viruses, crashed discs. Every time one of my friends or relatives gets a crash or needs a new computer even I usually cannot get things up and running quickly, and usually some data is lost in the process. (BTW, if they had an ACME before the crash, the fact that there were problems does not make them any more likely to buy an ACME again! There is not a lot of brand loyalty.)

Short Description of the Solution:

    Customer no longer "buys" a computer, but instead gets a subscription for an ACME Personal Computer from their local shop (e.g. Best Buy, Office Max, Target, etc...). I expect this to cost something like $30/month. For that monthly price they have a working computer, with all of their data, for as long as they pay their subscription. If ever anything goes wrong with the computer, anything, customer simply brings it in to their local Best Buy (or Office Max, etc...), hands it in, and immediately receives a replacement which is identical or better than the one they brought in. Customer brings the replacement computer home, plugs it in (to monitor, keyboard, and internet), and turns it on. This replacement computer will then churn for a while, and in an hour or two the customer has a working replacement computer with all of their data back. It's almost as if the computer never broke in the first place. They're precious photos of their grandchildren are right there where they left them. They're settings are as they like them. It's almost like magic.

    It is not magic, of course, but simply clever use of automated caching (i.e. back-up) of the computer’s data over their internet connection and without their explicitly having to do anything. They're getting the same computer they used to pay $700 for, but now they're getting it without the old headaches and they're paying for it by subscription. They're happy. ACME is happy.

This has been an extremely truncated description, of course, skipping tons of financial and technical details. I'm always glad to talk on and on about it, if you'd like to.

Like I said, I've covered the issue with computer geeks (who are not the target audience) from a technical angle. But I've also discussed it with regular people (family, in-laws, cousins, friends, kids, and old people) and the idea of paying a small subscription fee for a computer that ALWAYS works and NEVER loses their data is quite appealing. (It's certainly appealing to me, if it means I never again get a desperate call:"Help, my computer has crashed! You're the expert, Mr. Smartypants: fix my computer and save my data!")

Thank you for taking the time to read this far. I think the world will be better off with a computer like this. Maybe ACME can be the company that provides it.