Monthly Archives: August 2008

The Next 5000 Days of the Web

Last year Kevin Kelly gave a presentation about the next 5000 days of the web.  His views are based on what happened in the first 5000 days (roughly 13 1/2 years).  The profile for Kevin reveals a very thoughtful man.  He is in a good position to imagine what the future will bring.

Instead of talking about existing and emerging technologies, Kevin instead focuses on the more likely outcomes in the more distant future.  The point that stuck with me is that the impossible is going to be possible.  The same point of view could be expressed at the beginning of the web.  Many impossible things became common place.  And somehow, we take this for granted now.

He says “It’s amazing, and we are not amazed”.  How true.  It is only when there is a major shift that we take notice.  There is a counter point to his idea.  If we do not grow up with the technology as being new, we are more likely to be impressed.  This means older people (older than being born in the early to mid 80s) are far more likely to be impressed with the evolving web.  I admit that I am often amazed by what has happened in such a short period of time.  Perhaps if I was younger I would take it much more for granted.

He also says that originally the web was thought of as “being like TV but better”.  This model proved to be untrue.  It is clear now that we tend to shove new ideas under existing ideas to better understand them.  The web was not TV and except for the ability to playback shows, will never be the same as TV.

Kevin then states that the first lesson of the web is that we “have to get better in believing the impossible”.  This just means that things that were perceived as impossible in theory were actually possible in practice. 

This is just summarizing what Kevin says in the video.  I don’t want to give it all away but will focus on the topics that most interest me.

Kevin sees the web as a more organic mechanism that resembles the human brain in complexity.  He sees the web as a single machine which also happens to be the most interesting machine humans have ever created.  The parallels with the brain are reflected in current measurements of both the web and average brain.  Currently we are sitting at the equivalent level of one human brain based on connections and neurons.  Kevin projects that in 30 years we will reach the equivalent of 6 billion human brains on the web and therefore the web will surpass raw human computation (which assumes that only 6 billion people will be alive then).

The shift in his thinking is based largely on treating the entire web as one machine.  This is where cloud computing is heading along with the rest of the computer industry.  Isolation is becoming more and more rare as machines are becoming more linked together than ever.  Devices become windows into the machine.

There are three categories of change coming in the next 5000 days.

  1. Embodiment
  2. Restructuring
  3. Codependency

Embodiment means that we are going to incorporate more different types of devices to make the web even more diverse.  This includes things like mobile phones and other portable devices.  As things become more and more digital, the more likely it will participate with the web.  Many of the new models being put forward mix hardware in reality with virtual things in the web.  The web will also be seen as the owner of all the bits so that locally stored things will only be there for the sake of caching or offline use.

Restructuring comes with the concept of linking together data instead of just pages.  This calls for a much more intensive linking mechanism that would cross over many current boundaries.  There are some brief examples today of how this would be useful but the overall story has yet to be developed.  I would see this as an exploration in linking data together in a way that is much more natural and helpful to the users.  It would be of much more use currently in individual companies.  In a way, it addresses the need to search for relevant topics.  Links would already exist between similar ideas or objects and instead of searching, the points could be traversed.  It is a very different idea from how the web is deployed today.

Codependency comes from unloading the need to remember things.  The web will become our memory in a way.  When we need the information, we will just retrieve it when we need it.  This process is due to become more and more simpler.  The web will become further entrenched in our lives and we will become more dependant. 

The video is worth watching and is certainly much different than other talks given about the future of the web.  Even though several points could be challenged, it is not hard to see that the overall vision has merit.  Perhaps the overall message is that the machine is being built and will evolve based on our needs but we are not necessarily in full control of the overall path given its worldwide nature. 

Citrix, by comparison, is only about four years older than the web.  So many things have changed since 1989 and there are still so many things left to do.  At least it is much more clear what will happen based on our own experiences as a company.  It might be nice to conjure up a post about the future of Citrix based on its past.  That will have to wait for another time. 

Thanks Kala for the link to this video!

Why not choose VDI?

As promised, here is the poll on why you would not select VDI.  Keep in mind that you can select multiple reasons and that if you are not happy with the selections you can add your own text description on Other.

Results are public.  Please comment on what you find lacking in the current VDI solutions in the market.

Informal VDI Poll

This is the first poll for CitrixBlogger.org. To test the idea of using the poll, the topic of VDI has been selected. Here is a chance to vote for why you would pick VDI as a solution. The results will be visible to all. The “other” category allows for entry of other possibilities. Please vote once only. The results will interesting for those inside Citrix. However, do not consider this an official Citrix poll.

After the this poll, the other question “Why are you not adopting VDI anytime soon?”.

By the way, you can select as many items as you want.  If you feel there are more than one important reason to adopt VDI, please select them.  The results should indicate the most important reasons for adopting VDI.  Please remember that you can choose other and specify what you think is missing from the list.

ICA Stream – Citrix Product Idea 187

“ICA Stream” is the oldest idea I have in the product ideas database. It was submitted March 23, 2002. The basic premise was being able to record and playback ICA sessions. This idea later became a part of Project Iris and eventually became a product called “SmartAuditor”. This first submitted idea was a trial balloon to see how well the product ideas database worked.

It took a number of years for the project to finish due to some gaps in development. Initially the company was not overly excited about the project but over time it must have realized that it had value in the market. From a compliance point of view, it makes perfect sense even though I never intended it to go that far. Some people might think that this kind of capture could be seen as being a bit like “Big Brother”. Like any other technology, how it is used is based on where it gives the most value. In this case it is largely used by financial institutions to guarantee integrity. In theory, the more people involved, the less likely something will go wrong or someone will try to commit a crime.

Anyways, here is the original related text:

I have had some ideas about ICA Stream for some time and I’m glad that I am finally writing them down. Basically the idea is to take advantage of being able to record and playback sessions. I know work has already been done on this with AdProd but it has not progressed beyond that. Another idea of ICA Stream is the ability to broadcast to multiple players at the same time. This would give us the ability to broadcast one stream, which may or may not be recorded. The power of this is that we would not need to worry about scaling since MetaFrame does not need to support the ‘splitting’ of the session to multiple clients.

ICA Stream also makes it more real to have a collaboration server. Most of the data will be outgoing from the initial point of view, but it does allow for the rapid transmission of new information.

Some of the ideas are still a bit raw but I wanted to express them to start some discussion. I can see this product fitting into the Virtual Workplace vision, but not quite from the angle that has been presented to this point.

If you have any questions about these line items, please send me an email. I could spend a lot of time trying to explain these ideas but I will instead assume that you already know what I am talking about.

Ideas
—–

  • Treat ICA like it is something that can be recorded and played back
  • Allow users to access these ICA streams to get desired information
  • Provide a way to transmit any information to anyone as fast as possible
  • Make the web interface more alive with live data feeds using ICA Stream
  • By broadcasting one ICA Stream, it is possible to support many users at once
  • Allow companies to track transactions (banks, ordering, reservations)
  • Recordings can be selected at any time and require no MetaFrame resources
  • Act as if ICA is a TV broadcast – some people have no need to interact
  • One ‘teacher’ could demonstrate with MetaFrame to an unlimited number of ‘students’
  • Support primitive interactivity by creating ‘click zones’ for clicking on
  • Selected zones act as hyperlinks to other streams or positions in current stream
  • ICA Stream can be fully ‘live and interactive’ if it is ‘solo’ or ‘teacher’ mode
  • ‘Teacher’ role can change to another person just like a typical meeting
  • ICA Stream data could be fed to non-PC devices potentially (mobile phone, PDA)
  • Well suited for environments that have trouble with latency (Satellite, GPRS)

Benefits
——–

  • ICA is much more efficient than other Session playback techniques
  • Can broadcast one ICA session to many clients (very good for scaling)
  • On-demand ICA Stream sessions
  • Good for education/training, news/live data update, or system monitoring/auditing
  • Excellent for presentations and tele-conferences
  • Possible to extend concept with limited interactivity (menu select, next slide)
  • Possible to mix with fully interactive sessions
  • Different streams could be played based on user selecting other paths

Features

——–

  • Auto-detect bandwidth and best fit the closest matching ICA Stream
  • Live and Pre-recorded ICA Streams
  • Pre-configured color depths and resolutions for sessions on MetaFrame
  • Audio support
  • Uses ICA Stream Player to receive ICA Stream
  • ICA Stream Server (Responsible for ICA Stream transfer to clients)
  • ICA Stream Player (Play Session)
  • ICA Stream Recorder (Record Session)
  • ICA Stream Editor (Edit Recorded session)
  • Can operate in either messaging or streaming mode for data (UDP versus TCP)
  • Data between MetaFrame and ICA Stream Server should be highest quality (audio/video)
  • ICA Stream Server should have filters to reduce quality based on connection
  • Stream connections can support Rewind, Fast Forward (recorded), Pause, Play
  • ICA Stream elements could be cached (sounds, bitmaps)
  • Could use CSG for secure ICA Streams
  • ICA Stream Server could re-mix stream based on connection (high, medium, low bandwidth)
  • Directory of resources available from ICA Stream Server (streams, stream properties)
  • Security model for granting access to ICA Streams
  • Use Internet multicasting if it makes sense

Obviously not everything was done for this idea. It was a tall order. For awhile the product seemed like it was not going to make it through. However, it did and from what I have heard it is doing well.

Why am I sharing these ideas? There are a few different reasons that come to mind. Perhaps the first is to show that Citrix has been thinking about certain topics for a number of years. The second reason might be to see how much interest there is still remaining in these topics. Probably the real reason is spend some time looking through the archives to find anything interesting to bring back to share.

I’ve been interested to hear more about how other technology companies generate ideas and it is so rare that I hear any decent details. Being that I have only worked for IBM and Citrix, I’m also certain that my view of creating ideas would not match the rest of the industry.

Perhaps this is because ideas are considered to be quite valuable and the companies do not want to disclose. I would argue that ideas are almost useless unless they are acted upon like a hedgehog from “Good to Great”. It’s really not the idea anyhow. An idea is like a match. If it catches, it creates a much bigger fire. If it is never used or never starts a fire successfully, it just sits there. The match can start something big but only if conditions are right. The same is true of ideas. Without the willingness to try and the ability to support the right decisions, the idea will wither and die.

This just means that we make ideas more important than they really are. There are probably millions of good ideas on the Internet. It is much more difficult to do the work needed to make any of those ideas a success. The glorification of ideas goes back a long way. The realization that this does not actually accomplish anything by itself is a much healthier way of looking at it.

Single User ICA Server – Citrix Product Idea 431

This idea was documented in an email on May 30, 2003. It had been an idea that I had advocated from years before but it seemed like a good time to document it with the hopes that it would get better chances. The basic idea was to sell a single user version of our main product for use on consumer computers. During the early 2000s, there was a strong push to have more products with the hopes of raising more market share and more business in general.

Here is the idea:

This idea for a single user ICA server has been around for quite some time but I wanted to formalize why it is important.

1. Gets us into the consumer market so that people can use it at home and on their workstations
2. Potentially gives us a product that is extremely popular with consumers that give us better name recognition

3. Allows for sharing applications between users using the machines they are working on
4. Avoid issues that multi-user situations brings to applications (all apps should work given enough bandwidth)
5. We can charge money for this and improve our income
6. Could be sold in retail markets
7. Would encourage people to further invest in Citrix technology in the MetaFrame suite
8. Allows for the allocation of one machine per user which would guarantee performance and usuability.
9. Lower cost entry point to using Citrix technology
10. Single user server could integrate into Citrix farms for the intent of publishing one app to one user
11. It solves the problem of getting the user to their desktop to run their desktop apps if they are remote

The first problem with getting to be a $1 billion dollar company is to get people to know who you are. The easiest way to do this is sell them products that they can use. We currently do not sell to users. We sell to companies and IT managers. Some users do not even know they are using Citrix technology. Having a consumer product is a big step forward to having people know what you do.

That is why people will pick big software companies first since those companies usually have a strong consumer presence (like Microsoft).

Technically, I do not think it is difficult to do this product. The base is already with Windows XP and a prototype has already been done with Jardine.

If we do decide to go ahead with this project, we have the potential to greatly expand our business.

This idea was not rejected but marked for revisit in 2004. As far as I know, it was not revisited.

XenDesktop with PortICA was first to address the single user solution. Jardine got bogged down with Microsoft since it used Terminal Services API.

It is unknown if this would have really made a difference to Citrix. At this point most people that use remote connections in the consumer market would use Microsoft RDP. It helps to be built in. In most cases the consumers aren’t even aware of what is going on. Microsoft has done a great job of blending it in.

Even now there is an opportunity to make PortICA a standalone solution. If it was enabled this way, it would essentially allow for this idea to exist fully. Many customers have asked for a standalone version in the last few months. There is a sense that some don’t want a full VDI implementation and just want an integrated Citrix experience.

Session Recovery Idea 422

Here’s another idea ahead of its time. This one also came from iForum 2003, but from a different customer.
At the time it seemed like a largely unsolvable problem with MetaFrame. This has since changed with the advancement of virtualization and the implementation of XenDesktop.

Here’s the text:

A customer was asking for the ability to recover sessions during iForum in Sydney.
Essentially there are looking for “rock solid” application connections.
Given the nature of networks, this seams like a pretty big request.
I think this request belies a bigger request for being able to have sessions that are fault-tolerant.

The faults could happen at many different places:
Network (down)
Hardware (faults)
Software (exceptions)

Based on the potential for error, it is fairly easy to see that it would be impossible to guarantee 100% up-time.
However, we could greatly improve what we do today.

1. Change ACR to be at a transport layer level so that the user does not experience the session going away until the transport layer has died after a given retry duration and count. It is very important for the user to think it is still running even when it is in the process of reconnecting. This is definitely an image issue.

[ This did change not long after. Connections look alive even if the connection has errors.]

2. Use a RAID-like strategy for running applications. Have multiple sessions controlled by the same user input. I know this would be more difficult than it sounds but it would allow for instantly switching from a bad session to a good session in potentially a fraction of a second.

[Interesting but impractical. Divergent states would not be prevented.]

3. Potentially use record/playback to recreate session states. This does not seem as promising since states can change (files for example) and playing back the stream would not get you to where you want to be.

[This also sounds good but wouldn't work]

4. When you have multiple sessions running to support fault tolerance, have them talk to each other (master slave relationship) so that the sessions will always be in sync even if one goes down.

[Better, but certainly would not work universally]

5. Run the different copies of the same sessions on different machines in case the hardware fails.

[Hints of virtualization but not quite]

Another concept that come out of this is the idea of “Always on” applications.

This just means that for a given user, a certain application is always guaranteed to be running. This would be great for re-connect times and also would give the image of permanence to the user. For example, I would love to have a copy of Outlook “Always On” so that I could quickly check my email without having to fully start a new session. I know this can be done with disconnect times and other tricks but it would be a big coup to be able to say that a server will always be on with your app waiting and running.

[This would be an easy win if Citrix ever decided to push this angle. The technology for this is already there but it would require essentially getting rid of timeouts and making re-connections super smooth]

Back to 2008…

Session recovery is another one of those requirements that has been around for most of Citrix’s history. It is only recently with virtualization that it is possible to move VMs from one host to another. This concept overlaps well with how XenDesktop is built. Companies such as Marathon have focused on making Citrix fault tolerant.

However, the dream of moving around an individual session on XenApp seems almost impossible.

There was a brief glimmer of hope with the announcement of Luflogix from Brian Madden, but alas it was only an April Fools joke.

Given the age of the requirement and also the potential applications, there is a renewed possibility this could be addressed using modern technology.

The first step is to realize that there is a real need. The second step would be to setup a research project within Citrix Advanced Products. As a result, hopefully customers will finally get the ability to guarantee session permanence regardless of failures or location.

Once you get a session that can live forever, the next logical step is to find a way to move it to anywhere else in a self contained aspect. As usual, this kind of thinking is a bit ahead of the curve.

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.

Hype Cycle and Virtualization

In 1995, Gartner invented the concept of the Hype Cycle chart. It depicts the life of a new technology and how people perceive it over time. Below is the first chart displayed by Gartner in 1995.

Hype cycle from Gartner

The lessons to learn from such a diagram is that new technologies always go through a phase of intense expectations. There are five stages that have been identified. They are:

  1. Introduction
  2. Peak expectations
  3. Complete disillusionment
  4. Renewed interest
  5. Common use

You might have noticed that I changed the names from the original model. Why use fancy titles when they can be simple?

Most technologies (if not all) follow this curve. Initially a new idea is introduced. This idea generates much interest and products are made. Companies and people buy the products and the frenzy begins. Expectations of what the technology will achieve are greatly increased. That is, until, some day, someone starts revealing that the technology is not as good as first thought. Doubts enter the minds that once were excited about the technology. The swing goes down. Depending how severe the feedback is, the technology can dip pretty low.

Then something amazing happens. People start dusting off the technology and realize that it really was good for something. They start using it again, but without the hype factor. Slowly but surely the technology is adopted again and this time for good. Eventually the technology enters the mainstream and gets lost amongst all the other accepted technologies. It becomes second nature.

Of course some technologies really are obsoleted and die. It all depends on the strength of the newcomer.

Let’s bring this hype cycle to bear on the virtualization space. It is clear that virtualization is in a very favorable light. In fact, for modern computers, it looks to be ramping up the hype cycle rather nicely. It is fairly safe to assume that there will be a turning point but it is unclear how long that will take. It would probably be safe to assume that it will happen in the next three to five years.

The problem really isn’t with virtualization, but rather the fact that it is being oversold and applied to situations that might not always be better. The analogy for this is that when you have a hammer, the whole world is a nail. Virtualization is actually just one of many different technologies needed to move computer architectures ahead. It is a given that it is important but it certainly is not the only important player.

At some point there is going to be a lot of push back on virtualization. Perhaps it come when the over-hyped solutions get people so angry that there is a big backlash. It is always hard to say when those kind of things are going to happen.

The industry will get hit and something new will take its place. Eventually it will hit bottom and people will once again realize that it is good for something. Virtualization will be recover and be stronger from the journey. Eventually it will become commonplace and transparent. People won’t even know its there but yet it will be incorporated into almost all of the computer systems around them. In a way, it will become like a boring commodity.

People love drama. People love to get rushed into the excitement of hype. Many a good tale has been told about the wonders of the new. It’s part of this path to understand that emotions drive change. The only downfall of too much anticipation is that the demands will never be met. As any consumer in our society and typically they will say that they still want more.

That’s the core of it right there. Hype exists to satisfy our desire for more. Hype shows us the golden way where we will want no more. The problem obviously that hype can never fill our hunger. Promises never match delivered goods. The hunger grows stronger as the technology fails to satisfy.

We start looking for something else. The cycle continues.

It is only when the emotion is gone that the technology really has a chance to survive. The rush is gone but the true benefits remain. The idea was given birth by emotion but survives on its true merit.

It’s hard not to get caught up in the early excitement. It’s hard to ask the hard questions when everyone else just wants it to go forward. Realistically it is the most difficult to buck the trends and realize the value independent of the hype.

I just realized that this is the nature of “Good to Great” companies related to using technology. Perhaps everyone would be better off if the hype didn’t get so out of control.

Beyond Hardware Virtualization

Just when technology matures, a new technology rises to challenge it. In this case we are seeing the dawn of application and desktop virtualization against the well established rule of full hardware virtualization. Before getting too deep into the detail of the differences and features, it is worthwhile to try to define the relative classes of virtualization.

Wikipedia calls what I call hardware virtualization “Platform virtualization“. The goal, overall, it to provide a platform that can run any code (including the guest operating system) isolated from the rest of the native system. There are several subclasses with the most relevant being “Full virtualization”, “Hardware-assisted virtualization” and paravirtualization. Technically, the techniques are different but the goal remains the same. It is possible to install a full guest operating system in a VM and run the software for that OS within.

What kind of problems does hardware virtualization face? Informally, here’s a list:

  1. Emulation of hardware is a tricky business and always slower than native hardware
  2. Emulation of the opcode instructions is guaranteed to be slower
  3. The size of the virtual disk can limit flexibility in transfer
  4. The collective size of many virtual disks can clog up shared data storage
  5. Duplication of licensing costs (host and guest usually require a license each)
  6. Guest and host often do not work well together related to host and guest applications
  7. Virtual machine always needs a Virtual Machine Manager installed (requiring admin rights)
  8. Emulated devices usually have little correspondence to native hardware features

That’s probably enough for now. No one solution is going to address every concern but you can see how these kind of concerns add up to a desire for something else.

What if it was possible to virtualize the system at a higher level? What if you could virtualize right about the operating system layer? Wouldn’t that reduce the need to emulate and virtualize so much?

That is exactly what application and desktop virtualization is attempting to achieve.

Wikipedia has a an early attempt to capture this field with “application virtualization“. The basic goal with application virtualization is to reduce the footprint of virtualization while still giving the benefits of running applications anywhere. An application thinks that it is running on a certain environment when really it is being managed by a thin layer below it. This layer is responsible for providing a smooth surface which can lay on top of similar host platforms.

It is perhaps more widely known as making it easy to install once and then run everywhere. Solutions typically do not require admin rights for the user. It also means that one file can encapsulate the entire application instead of the typical large set of files.

A simpler way of viewing it is that the application is fully encapsulated. Because of this, it can be easily moved around and executed by many different people. As a result of this, it is much smaller than a whole virtual machine and runs under the native operating system with full access to the features of the native hardware. It is more like the application is a sibling to host applications than a child. The guest operating system model can isolate the environment so much that applications may not be able to communicate beyond simple means. The plumbing in application virtualization is much more straight forward.

Application virtualization addresses several of the concerns mentioned above with hardware virtualization.

  1. There is no emulation of hardware with application virtualization
  2. There is no need to virtualize instructions
  3. There is no virtual disk and the application encapsulation is always smaller
  4. There is no wasted space (unlike the virtual disks)
  5. There is only one operating system (one license)
  6. There is no virtual operating system wall between the two sides
  7. There is no need for admin rights
  8. Since devices aren’t emulated, the application gets the full features

Application virtualization does not handle device driver additions or dependencies. However, some solutions can handle services. Application virtualization also does not handle running applications on non-similar operating systems (like running Linux on Windows).

The intent is to keep things simple and do what is needed but not more.

There have been quite a few companies involved with improving this field over the last few years and the evolution of ideas has progressed quickly. It seems that maturity is problem within reach in the next two or three years.

So, don’t get too comfortable with virtual machines just yet. There’s this thing called application virtualization which is on the horizon.

Oh, and I almost forgot to mention desktop virtualization. It is a step beyond application virtualization which virtualizes the content of an entire desktop. This gives more integration and security for what would normally be viewed as independent applications. It also opens up more possibilities with things like having the users install their own applications in a controlled fashion. It’s a bit harder to classify at this point so it is a good place to stop.

I’m not saying hardware virtualization is bad. I’m just saying that there’s something evolving which avoids some of the pitfalls of virtualizing everything.

Server Based Computing versus Virtual Desktop Infrastructure

One of the things I did not see coming was the pending battle between Server Based Computing (SBC) and Virtual Desktop Infrastructure (VDI). This first became obvious at BriForum 2008 with sessions titled such as “SBC vs VDI”. The resulting discussions were very lively and ran throughout all the different VDI discussions. This is also being shown through the variety of posts related to the relative benefits.

Having been around the block a few times, I see this discussion to be a bit religious in nature. In other words, every one has strong beliefs and it is unlikely that many people are going to change their minds about what they believe in. Secondly, it is pretty pointless to argue when it comes to doing what fits best. Either it works for you or it does not. Talk is cheap. :)

To me, the two are much more related that what people typically say. Surprisingly this can be true in life with many other topics as well. Some difference has been isolated and blown out of proportion to the point of excluding the other. Oh well, that’s just how people can be.

Truthfully, I would classify VDI as a new variant of SBC. Why? VDI runs on a virtual machine on a server. The truth is that by adding virtualization, it is possible to host multiple user desktops using the actual desktop operating system. The attraction is obvious if you understand the weaknesses of traditional SBC. With Terminal Services, there are limitations related to applications installing and the user not getting their normal desktop experience. There is also the risk of having one system being shared without virtualization. All it takes is one false step in kernel space in the system goes down.

On the other hand, virtualization has a cost. It should never be expected that virtualization will match native performance. Also, virtualizing at the hardware layer guarantees a great deal of duplication between virtual machines. This includes having a copy of the operating system per user. The disk model also means that each user is likely to own a virtual drive in the gigabytes. In collective, this adds up to a massive amount even if most of the space in the drives is not being used.

These are just some quick surface differences. Is there really anything worth getting upset about? Well, no.

But, strangely I sense this tension between the two groups. The old SBC group almost seems a bit threatened. Maybe it is just my imagination. If it is there perhaps it is just the uncertainty.

Anyways, Brian Madden has already declared that he thinks VDI is going to win. To me this seemed a bit early to declare and besides that it will not really matter in the end since both are actually SBC.

Perhaps another way of saying it is that VDI is disruptive and is not being treated real seriously by the old SBC camp. Well, some care. But the point is that VDI is seen to be a bit like a toy compared to the mature existing SBC market.

The news is that VDI is not going away and new trends saw that it is well on its way to supplant the older SBC business. I can sense a few heads shaking. Well, maybe not tomorrow. But, it will eventually.

The reasons will become more obvious as time goes by. The first step was to remote the desktop environment in its natural state. This has been accomplished. The next step is to tackle things that SBC never did quite figure out. This includes the ability to remote high performance graphics/audio on the LAN. This too has already begun to happen. Further refinements are coming including the ability to remote USB devices and further integrate the experience between the two machines. The goal overall is to completely blur the distinction between the client and host machines. In a sense, you get two machines with one environment with the combined power and strength of each.

Ultimately you get the ability to have a universal desktop which works anywhere (well almost). This universal desktop does not really care how it is run (local or remote) and always adjusts to situation with the maximum performance. It is incredibly idealistic to believe this is possible but the writing is already on the wall that it is coming and sooner than anyone is expecting.

Part of the reason I blog is to share what I see coming. It is hard to convince anyone in the beginning but given enough years it eventually comes true.

About five years ago I put forward an idea inside Citrix that we should investigate using virtualization to support different operating systems remotely. This was proposed to address the need to remote workstation operating systems (like Windows XP) which would be more compatible than the server (like Windows 2003). It was also hoped that we could remote things like Linux if needed. I saw this as the future of MetaFrame since it would give a much more mainframe like approach to hosting different platforms. In other words, the only decent way to truly support applications is to given them what they expect and then find a way to remote it. The idea did not catch on at the time. It would not be until VDI came around that this idea finally came to light.

About 13 years ago I proposed that we create a single user version of WinFrame that would work on Windows (Not NT). The idea was it would help to have a commercial product intended for consumers. At the time Citrix was not widely known and an easy way to address it was to target the lower end with a product that would be seen and appreciated. It was not until PortICA came around in 2006 that this begun in earnest.

It is little known that around 2002 there was a project called Jardine that duplicated MetaFrame on Windows XP using Terminal Services. This was very clever and timely work done to target managing XP with ICA. The problem was that Microsoft said no. They didn’t like it. They refused to license Terminal Services for the non-server environment to Citrix. The project died soon after.

PortICA was built on the assumption that we could not use Terminal Services interfaces. This meant rewriting aspects of the TS stack since we simply didn’t have rights to them.

The realization that came from this is that Citrix once again had control of a stack and that past limitations would be removed if we saw an opportunity. There is a big play for potential improvement over the typical TS code base.

Balanced against this is the constant tightening of the TS platform with what Citrix is allowed to do. Microsoft wants things to be just so and Citrix really has little choice in the matter.

But perhaps the most obvious reason why VDI will come out ahead is the shear number of competitors chasing after the business. Unlike old SBC/TS, there is pressure to evolve quickly with some very nimble and small companies. It will be true that companies like Citrix will validate the market much like IBM did the original personal computers but this does not mean that anyone is guaranteed to win. This is not related to size but rather mind share. If Citrix does not move quickly to embrace VDI even stronger, it risks losing this market to younger players.

However, all is not lost. SBC is still important and will be used to leverage into the VDI market. The most clever thing that Citrix could do right now is combine their offerings back into one. One of the most consistent messages I heard at BriForum is that one product is better than two in this space. This is largely viewed from a management angle. One of the companies is already providing a dual VDI/SBC product. There is no reason for Citrix not to do this as well.

So, why am I writing all this down?

Well, I’ve written it recently internally (based on the trip report to BriForum). My concern is that this information will not reach the right people easily. I also would deem that this kind of stuff is not secret and should be openly shared. Pretending that people don’t know is perhaps one of the most severe mistakes any organization can ever make.

Having come to the end you might be curious what I think of the title.

My answer is that it should really be “SBC and VDI”. The versus implies turmoil and in this case it should really be overlapping circles of coverage.