Cloud vs. me

This entry is an early description of an idealized computing model I have been quietly and idly evangelizing since approximately the time of the OQO computer. I have since called the model "PAO" for Personal Application Omnipresence. When Windows 7 was released, I was motivated to put the idea into words because the concept was in a stone's throw but still not quite within reach. Read the more recent entry for more about PAO.

Windows 7 and its server-side counterpart, Windows Server 2008 R2, bring nice new features to those of us who haven't updated since Windows XP (2001) and Server 2003 hit the scene. The Aero Glass look and feel is nice, if used a little sparingly. The overall effort to clean up operating system dialogs is appreciated.

But the features I am most interested in are among those that have gone mostly unnoticed: advances to the Remote Desktop Protocol (RDP). One such feature, called RemoteApp, brings X-Window style remote applications to Windows 7 desktops. Meanwhile, advances in the underlying RDP protocol allow Aero Glass animation, streaming video, and 3D animation within remote desktops.

RemoteApp is basically Remote Desktop (RDP) for an application without a containing desktop window. In other words, it's the ability to run a remote application right on your local desktop as if it were a local application. There are some limitations, mind you. Oddly enough, the Desktop Composition functionality of Aero Glass does not apply to remote applications. So any remote applications will not feature translucent glass effects in the title bar. In the image below, Command Prompt is running locally. ConTEXT is being hosted on my RemoteApp server. Missing Aero Glass is disappointing, but not something that really breaks my heart.

Here's another little-known feature. This one has existed for some time but I wasn't even aware of it until very recently. It's RDP's "Shadowing" feature which doesn't exist as a tool outright but, if I understand it correctly, is the basis for some other tools such as Windows Meeting Space and Microsoft SharedView. Never heard of those things? Neither have I. As an aside, curiously Windows Meeting Space was in Vista but is not in Windows 7. But let's step back for a moment.

As you probably know, Remote Desktop Protocol allows you to start an invisible desktop on a server and interact with applications running on that server. But sometimes you want to remotely control the console session of the server. To do that, you have two options. Either run the Remote Desktop client in a special mode that allows you to connect to the console session or run a different remoting tool such as VNC (Virtual Network Computing). VNC allows sharing and remote controlling any desktop session, but it's an entirely different and less efficient communication protocol that doesn't have the new capabilities of RDP. So we can rule that out.

So that leaves RDP with its console option. It's important to note that connecting to the console via the Remote Desktop client will cause anyone sitting at the console to see the desktop as "locked" (as if they had locked the desktop themselves). Similarly, if the person sitting at the console were to then unlock the session, the remotely connected user would be disconnected. Only one person can be using the session at any given moment. This is not typically a problem for servers, of course.

But what if you actually want to share the same session?

Basically, it is difficult (but not impossible) to use Remote Desktop as a tool to allow multiple users to interact with the same desktop session. There are some tricks allowing you to simultaneously connect two remote users to the same desktop session with some work. The resulting behavior is called Shadowing. You can Shadow an existing session—typically through the Task Manager's Users tab, where you can choose to remotely control a different session. It's clumsy and typically requires that the other session authorize the remote control. Windows also provides a mechanism called Remote Assistance, which is based on RDP, and also allows simultaneous control of a single session. Again, however, the process requires approval from both workstations to initiate. This makes it unrealistic for the usage pattern I have in mind:

I want to connect to exactly the same application instance from multiple clients.

Let's assume for the moment that Microsoft decided to mainstream the Shadowing feature. By that, I mean assume they decided to make it easier to share a single desktop session that you control. That would be fantastic, right? Yes, well... In Windows 7 and Windows Server 2008 R2, you cannot Shadow a RemoteApp. (Incidentally, that's me at the end of that that thread.)

Let me explain what I mean. For a long time, I've opined that my ideal for day-to-day computing is a consistent and omnipresent personal desktop composed of omnipresent personal applications. What I mean is that the same applications are available everywhere I go.

I would have a main workstation; let's say a computer at my home. That main workstation would continuously run a master desktop session to which I could connect from anywhere—from my workstation at the office, my laptop at home, my laptop at the office, my laptop at a Starbucks, and obviously from its own local keyboard and mouse.

The main workstation is acting as an application server. A personal application server.

I want to seamlessly interact with the applications running on that server from anywhere, and simultaneously. If I set a preference in Microsoft Word or open an e-mail in Thunderbird, I want to see that immediately reflected on all of the monitors currently viewing those applications. I want a single desktop server and any number of terminals that connect to application sessions running on that server.

I've wanted this for a while and I've approximated it as best I could with technologies available in the past. For some time now, my Windows Server 2003 machine running at home has hosted a desktop profile that I use from work, from home, and from other remote locations as a means to manage a single set of documents and data. A single Firefox installation exists on that machine, so my bookmarks and history are always the same, regardless of where I am.

The notion of a single master desktop is a powerful one. It's so powerful (yet apparently elusive) that many people seek to address the same underlying needs in one-off ways that are amusing and depressing, at least when viewed from the perspective of an omnipresent personal desktop.

They are amusing because they are often creative and ambitious (such as GMail, Google Apps, Acrobat.com, in-browser JavaScript-powered "desktops", and so on).

They are depressing because they divert attention away from what I believe is the real solution to the problem at hand. Namely, allowing me to use the same installation of my applications from anywhere.

The way I see it, I would browse the web connecting to my Firefox instance (running on my application server) from any terminal I happen to be sitting at. If no Firefox instance were running, a new instance would be spawned. If, for whatever reason, you wanted to run a separate instance, that option would also be available. But for the most part, you'd be able to interact with the very same instance you last used. You would be able to connect to that instance simultaneously from any number of terminals. Any interaction made at terminal A would be immediately visible on terminal B (if the screen were unlocked on terminal B, the experience would be as if watching a ghost operate the computer).

The benefits of this are significant and I believe they obviate much of the promise of what we now call "cloud applications." Consider the following scenarios:

  • Interact with a single installation of Thunderbird (or your e-mail client of choice) from any location. Open a set of e-mails into tabs at your desktop workstation, grab your laptop, go to Starbucks, and see the same set of tabs open on your laptop. After all, it's the very same running instance of Thunderbird. Mail filtering rules? Define them once. Your folders? Define them once (yes IMAP handles this, but that's really all IMAP does). Your Thunderbird preferences and configuration options? Define them once. Have a couple old POP3 accounts? No problem, with an omnipresent personal desktop, you don't need IMAP to have a single consistent view of your POP3 account's inbox, sentbox, and folders. Maybe you saved a file, deleted the e-mail, and then realize you need the file again? No problem, since you would have saved the file to the omnipresent personal desktop anyway, it's there regardless of where you are. You don't want your personal e-mail stored on an IMAP server you don't administer? No problem, use POP3 and archive the mail on your omnipresent personal desktop; it's available everywhere anyway.
  • A single installation of Firefox (or your web browser of choice) from any location. Open a set of pages into tabs at your desktop and see the same tabs when you connect to your Firefox session in the conference room. Your bookmarks? Available everywhere—in native Firefox; no plugins required; and no untrusted server hosting them for you. Your preferences? Configured once. Can't remember what that interesting page was you saw the other day? No worries; it will be in the history of Firefox since you only ever are using one instance (no having to guess "did I see that while at home or at work?").
  • A single installation of Eclipse (or your favorite development environment). No need to spend nearly a day setting up Eclipse and configuring its seemingly endless options, file paths, Java build options, dependencies, and so on. Just connect to your Eclipse instance and resume your development work.
  • A single instance of Microsoft Office (or whatever you prefer). Again, you configure it once and enjoy. No need to remember to turn off Word's annoying Auto Correct features that drive you insane on every workstation. Need to work on a work document from home? It's in the recent documents history seamlessly. It's just there because you're literally using the same installation—the very same running instance—of Word. Really think about that for a moment. Why would you want a separate recent documents history on every one of your computers? I have a different Word history on my two work computers, my two laptops, my home workstation, and my home server. This is crazy. I want a single instance of Word with a single history. (Remember, I said that you should have the option of starting a second instance if you want! And importantly, these are running on your server, so don't worry about overzealous network administrators.)
  • Generally speaking, avoid the hassle of configuring any of your applications multiple times. And enjoy the inherent consistency of history, undo states, and open files that a single, omnipresent application instance yields.
  • Application consistency beats "synchronization." Consistency it is the absence of any need for synchronization.
  • For consumers, this would also mean that any commercial software you use would only need to be licensed once. That makes sense. After all, you are a single user that happens to use the application on multiple terminals. In fact, many software licenses already allow for you to install an application on any number of computers as long as you are the only user of the application. My MSDN license allows me to install MSDN applications on my various machines because I am the only user of those machines.

Another way to convince yourself is to take stock of the number of "cloud" applications that promise to make your life easier by giving you a single place to manage your stuff (be it photos, music, documents, contact lists, browser bookmarks, passwords, browser history, finances, tax returns, e-mail, whatever). Think of all of the applications, services, and plugins that aim to synchronize your settings between multiple instances.

All of that, and I mean all of that, is unnecessary if you could just use a single installed instance of your applications from anywhere. With some effort, Microsoft could make all of this happen and make it readily available within Windows. The underlying technology—the plumbing—is essentially done. In the short-term, savvy system administrators could pull this off if Microsoft permitted the combination of Shadowing and RemoteApp. Take Firefox for instance. You would be able to set up Firefox as a RemoteApp. Then, with Shadowing + RemoteApp, you would be able to run your "Firefox.rdp" file and Shadow an existing Firefox instance. There would be no need to remember to shutdown your Firefox instance from Terminal A before connecting to it on Terminal B. Firefox's inability to run two concurrent instances on a single user profile would pose no concern whatsoever.

It's all so close but just out of reach. It bothers me. With one hundredth of the investment we've collectively spent building cloud applications, Microsoft could link RemoteApp with Shadowing. With one tenth the effort, they could then build a decent user interface on top of these to allow you to choose to start a new instance of an application or just connect to a running instance. And with an equal investment, they could do all of this without troubling users with the nuances of figuring out how to securely connect to their home network (by that I mean replace or improve personal VPNs).

I'd rather have one omnipresent personal desktop than a dozen cloud applications that each "free" me from multiple application instances by locking me into their proprietary service.
About this blog