The annual MVP conference at Microsoft's campus is Redmond is a great opportunity for the twenty-or-so Terminal Server MVPs to spend a few days with Microsoft's Terminal Server product group. While most of the conversations are NDA, one cool thing that the TS team has done over the past few years is that they (Microsoft) have asked us (the MVPs) to make a 45-minute presentation to them about where we see the industry going, what's important for Microsoft to do, and what features we'd most like to see in future versions of their products.
This year was no different. Specifically, the Microsoft TS product team asked us "What do we need to do to Terminal Services in the next three-to-five years. How can we improve it? What do we need to focus on?" We MVPs jumped on this opportunity. We set up an email distribution list to share, shape, and discuss our ideas which lead to our presentation.
What's cool is that while a lot of the MVP conference was NDA, our presentation was not. (After all, we MVPs wrote it!) In this article, I'm going to share the elements of the presentation that we gave to Microsoft. (In other words, if the Terminal Server MVPs ran Microsoft, this is what we'd do in the next three-to-five years.)
Before we look at the specifics, I'd like to point out that even though I am the author of this article, all of the Terminal Server MVPs had a hand in shaping its content. And I'd specifically like to call out Tim Mangan and Steve Greenberg (both first-time MVPs!), as they were the two primary folks who put the presentation together.
That said, let's take a look at our world.
Microsoft Terminal Services: our five-year plan (from the Terminal Server MVPs)
We broke our presentation into two pieces:
- The "short term" 1-3 year plan (Windows Server 2008 R2?)
- The "long term" 3-5 year plan (Windows Server 2013?)
The first thing I should point out is that we just made up the terms "Server 2008 R2" and "Server 2013." We have no idea if/when/what these things will be called. We just wanted to point out that we're suggesting two types of changes--short-term tactical things and longer-term strategic stuff.
The 1-to-3 year Terminal Server plan
We feel there are three areas that Microsoft should focus on in the near-term for Terminal Services:
- Get Calista out the door!
- Clarify app / Vista licensing
- Many “little” TS Features
Short term: Calista
Microsoft bought Calista in January. Calista was not a shipping product at the time of the acquisition. But we really, really want this technology to be built into the core RDP protocol that's available from Microsoft. And we want this as soon as possible. (For those who don't know, Calista has the potential to add full multimedia support to RDP. Read the analysis of it here.)
Short term: Licensing
We feel that Microsoft has done a great job with Terminal Server licensing in Windows 2008. So no problems there. But we put "licensing" on our short-term tactical list because there are still a lot of "ecosystem" licensing challenges. Things like Office 2007 on Terminal Server--how is that licensed? And the whole super-confusing VECD thing. So even though these aren't Terminal Server licensing problems per se, they definitely affect the practical usage of Terminal Server in the real world. Maybe there's something the TS team can do to help clarify all of this?
Short Term: Little Featurettes
The last short term goal for Microsoft with regards to Terminal Server should be just to continue to make the Terminal Server features better. It's not even really worth listing everything here since they're listed ad-nauseam elsewhere on the web. (Plus the list is endless. Millions of people want millions of features!)
The 3-to-5+ year Terminal Server strategic plan
We blew through the first part of our presentation in just about five minutes because to us, the 1-to-3 year plan is just "business as usual," and really they don't need us MVPs to feed them the laundry list of "feature-level" improvements.
Instead, we asked Microsoft WHY they were trying to add all these features into the core product? If you look at Windows Server 2008, it has new features like TS RemoteApp, session brokering, TS Gateway, TS Web Access--these are all things that people initially get very excited about. But when you actually dig in to these features, you see that they're so basic that they're not really usable, and what Citrix, Quest, Ericom, and the other third-party companies offer are much, much better.
So why is Microsoft wasting time and energy developing TS features on their slow multi-year product cycle which best case are not even as good as the features that are available by third parties today? How does that help the customer?
Is this what Microsoft should be doing?
To us MVPs, we broke posed this in the form of a question that Microsoft has to answer. We called it "core versus third party." What features should Microsoft add to the core Windows product, and what features should Microsoft leave to third parties?
This question is important to us because in reality, many of the "hard" problems that we've been dealing with for years are still there, even in 2008. So why isn't Microsoft tackling these hard problems that affect 100% of their user base? Why are they wasting time building super basic featurettes that only probably 5% of their customers care about?
So what "hard problems" are we talking about? Things like application integration, user profiles, application-specific user data, application (in)compatibility, and simultaneous user sessions on multiple servers.
Because these problems remain unsolved, today's Terminal Sever-based solutions are never-ending brute force attacks on the problems. We endlessly and haphazardly cobble together solutions including:
- Layering SoftGrid application virtualization on Terminal Server
- Complex configuration for OS/server builds
- Custom scripting for application installation
- Custom scripting for application run-time
- Complex profile management
All of this affects complexity, performance, ease of management, adoption rates, and the general sanity of Terminal Server SEs.
So what do we MVPs think Microsoft should focus on? It's quite simple. Forget making all these lame featurettes and instead focus on the hard problems that have been at the core of our world for the past ten years. We broke the hard problems down into three "specific revolutions" that we'd like to see from Microsoft:
- Virtualization at the session level
- Inherent separation of machine, OS, application, and user data
- Universal presentation virtualization
Virtualization at the session level
When we say that we'd like virtualization at the session level, it's first important to define and understand what a "session" is. In the world of Windows, anytime a user logs onto a system in an interactive way, they have a session. A session includes a shell, a user profile, an HCKU registry hive, user security tokens, etc. Furthermore, a session always runs on a Windows OS, which has drivers, an HKLM registry, program files, etc.
When you logon to your Windows XP laptop, you're running a session. But when you connect to a seamless windows published application through Web Interface, you're running a session on that remote Terminal Server too. (Even though you don't see it, you're running a shell, you have an HKCU registry loaded on that remote system, you have a user profile, etc.)
The problem today is that a user session has too many dependencies on shared system components and configurations. It depends too much on the underlying OS. It depends too much on the applications that are installed on that OS. And it's too tightly tied to the host system, since one “greedy” session can ruin a lot of good ones
So when we say "virtualization at the session level," we'd like Microsoft to properly isolate and protect the user session, whether that's a single user logged into a Vista workstation or one of hundreds of users logged into a Terminal Server. We'd like "SystemGuard-like" behavior at the session level instead of the application level. ("SystemGuard" is the technology that SoftGrid uses to isolate and virtualize applications into their own little bubbles.) And we'd like to have session-level performance controls.
Inherent separation of machine, OS, application, and user data
Continuing the thinking that we began to outline for the previous item, we'd like Microsoft to ensure that all the various "layers" of a session are properly isolated and separated from each other. Think of it like this: Right now, you start with hardware. You install an OS which is "locked" to that hardware. (i.e. you typically can't just drop that installed OS onto a different piece of hardware without problems.) Then you install apps onto that OS, and again, they're locked there. Then users logon and get their profiles and environment set up, but that's again highly dependent on the lower layers.
Machine virtualization (hypervisors and VMMs) do a great job separating the OS install from the underlying hardware. Application virtualization (SoftGrid, Thinstall, Altiris SVS, etc.) do an OK job separating apps from the OS layer, although they don't all work all the time because some apps are too tightly tied to the OS too. (After all, why's an app asking for a reboot?)
And then when you get up to the user layer, the profile problem is just laughable. Again, a lot of this happens because the user profiles are specifically tied to the lower layers (apps and even OS), so it's all very complex.
Instead, if Microsoft was able to ensure that each of these layers was truly self-contained and separated, we could start to do some amazing things. App compatibility would be a thing of the past. We could easily "flow" between multiple sessions on multiple devices, grabbing elements of each layer from wherever we needed them. One user could have multiple instances, multiple session types, and multiple execution locations. (And in fact, something like LUFlogix becomes a reality too.)
Universal presentation virtualization
Finally, we asked Microsoft to create what we termed "universal presentation virtualization." What this means, quite simply, is that we want a consistent application experience--regardless of the app's core technology, regardless of what rendering technology the app uses, and regardless of how it's accessed.
For example, today Vista Aero glass is only available for application / user sessions that are local. You don't get it via RDP. Oh wait, ok, well yes, you can get it through RDP to a VDI solution, just not a TS solution. Well, ok, it only works with VDI solutions based on blades, not based on VMs...
The point is that the experience a user has with an application (the performance, the look and feel, the interface) today is highly dependent on how that application is being delivered. In the future, we want full visual fidelity across all use cases. We want Win32, WPF, Java, Silverlight, AIR, .NET, Gears, etc. apps all look, feel, and behave the same.
So how do we get there?
What we're asking for won't be easy. Microsoft asked us MVPs to suggest some future directions for Terminal Server, and instead we came to them and said "We think you should fundamentally change many core aspects of Windows that have been in place for fifteen years."
The biggest challenge is the fact that even though we presented this to the Terminal Server team, what we're suggesting is much bigger than "just" Terminal Services. It would be a major cross-group initiative that would have to come from much higher up within the organization. And really, it would involve so many different groups, including:
- Terminal services
- Hardware virtualization
- User session
- SoftGrid / app virtualization
- Probably more that we’re forgetting here
Can Microsoft do it? Should Microsoft do it? Will Microsoft do it?