Tag Archives: Offline VDI

Wandering Desktops

Same Environment

Same Environment

Did you know that the majority of the business world uses Windows for its desktop operating systems?  Of course you did.  Did you also know that by doing so, the user is guaranteed to get a greatly varying experience when using different machines?  Maybe.  Okay, here comes the really tough question.  Do you think this should be possible to have people move around to different machines and get the same experience.  Maybe yes?

The more I understand the problem, the more I realize that Windows was never meant to be moved to another machine.  There are exceptions to the rule but in general it stays put.  Once you install Windows and load up the applications, there is little change of migrating the platform somewhere else.

Windows is essentially tied to its hardware roots.  Certainly it is possible to build solutions based on either virtualization or remote execution (think RDP or ICA), but this is not quite the same thing as a true native solution.

Out loud, I’m wondering why this hasn’t been a bigger requirement.  I mean, why wouldn’t you want to be able to move from machine to machine and get your own environment?   Why wouldn’t you want your own desktop on a new platform?  Technically it is possible.  Obviously it would be easiest coming from the group that wrote Windows.  So far there has been little hint of it.

It seems that the general public is not aware of the possibilities.  If they knew, they would probably realize they have wanted this all along and start demanding it.

The most obvious use case is a worker that switches between working at work and working at home.  Given that the user is going to demand the best performance and expect also the flexibility of using either a work or home machine, they are going to want the same “face” to their same desktop.  This would include everything the user would expect to get access to including user data and applications.  The desktop should look exactly the same except for differences in screen sizes.

There is the option of adding in extra bits that only the local machine has but at this point it seems better to exclude the options.

How could this happen?  Probably the first step is finding a decent way of isolating Windows away from the hardware.  As crazy as it might sound, there is a need for a layer between user mode and kernel mode related to switching devices on different platforms.  Let me say it a different way.  There should be a way to allow for loading of different drivers based on the underlying hardware.  It’s incredibly simplistic to say it this way but basically it would need a detector/loader driver so that it could appropriately load the current driver based on the current platform.  Currently Windows seems a bit fixated with what it was installed with.  I’m sure there are techniques that already do this today.  Basically we just want Windows to be able to load on different platforms with the same disk image.  Provisioning Server has a feature like this but it is not quite what I have in mind.

Once you have a system that can load the basics, then you need to make sure that all the user’s relevant data and programs come with.  This becomes a venture in packaging and execution.  Everything should work and hopefully not be too big.  From a user’s point of view, they get what they are used to.  From an IT point of view, you have just extended out what you can support.

It would be far easier to contain the environment in a virtualization container.  This is both good and bad.  It’s good because it will probably work straight away.  It’s bad since it will not always produce the performance that is expected.

I admit that this is a bit of a wandering post.  I’ve been trying to come to grips with aspects of Offline VDI.  A number of new techniques are coming to mind.  However, it still comes back to one question.

Is it reasonable to assume that a user’s environment should be allowed to be portable?  By this, I am not just talking about user profile information.  I am talking about potentially duplicating the same environment between many different machines which are worked from.

Offline Access Idea 2003

In recent developments Offline VDI has gained much interest. Offline support has been a common request of Citrix for many years. Until virtualization came around, it looked pretty hard to accomplish this goal in a believable way.

I was busy searching for interesting old ideas in the Citrix Product Ideas database and stumbled across Idea 420 entitled “Offline access”. This idea came straight from a customer and I just tried to capture it and form some guesses about how it would be done.

For amusement purposes only, I’m including what I wrote for that idea. Remember that this happened May 22, 2003 right after iForum in Sydney.

Offline Access

I was asked for this at iForum by a customer.

His assumption was that if he was working on something that he could continue to work on it even if he was not online. His then would later sync up whatever work he had done when he connected again.

This might work fine in a file-based world, but does not carry forward very well in Citrix’s area of expertise.

It brings forward the idea of what kind of work a user would be doing remotely AND offline.

Most common practices are to either work on documents or presentations.

It would be rare for them to expect that they would be able to talk to a server since they are indeed offline.

So, they are only confused about how the work is being done. If they knew that they were really working online all the time with the server and the software being on the server, they would not ask for offline access since that would mean they would know that they could not run the app on their client.

But, they do not seem to know this. There is nothing wrong with this since it really shows how transparent we have made things work for them.

So, there really only seems to be a few options.

1. Tell them to install the server app software on their client and then manually copy the files back and forward

2. Create a process for automatically installing apps that will be run offline on the client and have a sync method to go between server and client

3. Pretend that we are the software and treat everything like a generic case and later sync up any changes [??? don't know what this means in 2008]

4. Create a new model that makes it less obvious where things are running so that it can happen on the server or client with or without a connection

5. A miracle

I think I like number 2 the best. It is the most practical and I would think that Microsoft would probably chose that kind of model. Of course this means that you would probably have to install the likes of Office on clients that might not support it, but at least it would run as the customer would expect. The syncing feature would also be useful since it would mean that it would probably be better than what people do normally when they go on the road. There is even a good chance that these users would already have the native apps on their client and all they really want is the ability to work on these documents/presentations in a more transparent fashion. For example, if I am offline, use the copy I checked out. If I am online, use the copy from the server that I have just checked in again. I suppose that a library model (books) would work well in this case. This concept would not work well in a database type environment where the file is huge and many people might be working on it. The best you could do is check out a section of the database that you wanted to work on (if this was possible) and then take it on the road. I think that people are still going to get confused but we can do a lot to improve the situation when the user is offline.

Regards,
Jeff

Returning to 2008…
I got a good chuckle on option number 5. This all happened before the advent of the possibility of doing Offline VDI for such a trick. Things have become much more apparent since then. It’s still not completely clear but it is not as far off as 2003 was.

Even with the current visions, it is not obvious how this could be made transparent. The ultimate model would call for dual execution so that the local copy would take over when the network is lost. At the current pace this is still years away and could require a remodeling of how applications work. In the non-Windows world this is already happening for the sake of web applications. Newer applications are becoming more tolerant of offline access.

The current vision focuses on taking a VM, checking it out, and running it on a laptop. Once the offline mode is over, the user then needs to check the changes back in. The good news is that this concept is very easy to explain and understand. The bad news is that it is difficult to achieve and tends to ignore the limitations of moving and syncing VMs. Baby steps moves the technology forward regardless of the pace.

Sometimes (if not most) it is just as important to sell the pitch to the consumers in a simple way instead of how it ultimately might be deployed. In other words, engineers often make the mistake of being technically accurate and usually deluge non-technical consumers (including internal non-engineers). This tends to polarize internal opinions to match the simpler model since the more precise model cannot be understood.

Having Offline VDI support would benefit Citrix customers based on the assumption that offline access has been an outstanding requirement for many many years. Obviously if people are asking for it over and over, it must have a valid business model that would help both sides.