Video streamVideo streamVideo stream
Question indexQuestion indexQuestion index

Interview transcriptInterview transcriptInterview transcriptDiscuss this interviewDiscuss this interviewDiscuss this interview
Chris Anderson - Architect on the Windows Client Team

As an architect on the Windows Client team, Chris Anderson's primary focus is on the design and architecture of the technologies used to implement the next generation presentation platform in Windows, code named "Avalon". Chris initially started at Microsoft in 1995 working in the information systems group as a tester on Microsoft internal software. After a brief leave from Microsoft to work on other interests, Chris returned to Microsoft in 1997 as a developer working on user interface controls in Visual Basic, transferring to work on Visual J++ and the Windows Foundation classes in 1998. After shipping Visual J++, he moved on to working on the .NET Framework, dealing with Windows Forms, ASP.NET, and the base class libraries. Chris is basically a slacker who failed to get a college degree, however he has lately been working on perfecting his rollerblading and Halo skills. Chris' wife puts up with his addictions, including digital photography, blogging, video games, and home theaters.

Chris, tell us a little bit about who you are and what you do at Microsoft.

Chris Anderson, I am an architect on the Avalon Team. Basically I am responsible for doing much of the design work on the next generation UI Platform that is going to be coming out as part of the WinFX bits that was originally what we talked about it at PDC 2003.

And that is scheduled to ship as part of Longhorn right?

That's scheduled to ship simultaneously with Longhorn and I believe right now the plan is for it to be on the disc with Longhorn.

So it is not something that would come as part of the OS?

There is still debate as to what it exactly is. We actually just, I honestly don't know the answers to how they are going to end up with that. I do not even have to lie about it, its great. I really don't know.

So tell me why do we need Avalon? What is the point of Avalon, why not just keep going with the whole Win32, GDI based, HWIN based?

We've got a lot of people who were bored and we wanted to give them something interesting to do to work on and so we said why don't we re-write all that software we had before and sell it again and they said that's a great idea.

TSS: And this ladies and gentlemen is how sausage gets made.

Really there is a, we reached the limit of what we could do. We have two main UI technologies at Microsoft. We had the kind of User32 GDI stack of technology which is what you are used to with traditional Windows desktop applications, and then we had the MS HTML, the Internet Explorer stack that was text rendering. It sounds a little weird to say it like that that those were our two UI stacks, but in reality the original kind of impetus for some for the new Internet Explorer features was a forms package that we were starting. It was going to be the replacement for VB years and years and years ago for that engine. Over time of course we morphed that code into being this HTML presentation platform and did all of these features with DHTML and things like that, but that engine had gone so far away from this UI origins, that you could not really build interesting applications with it from the standpoint of absolutely positioning elements was tough and the programming model was pretty rough for building large scale client applications. And on the Win32 side, we had reached our limit of what we could do, the number of HWINs you could put on the system, the richness of the topography, being able to animate in HWIN just didn't work. So we actually spent, before we started on Avalon, we spent probably, I don't know several months doing this analysis, this deep analysis of whether or not we could take either code base forward and create just evolve it and make what we have done with Avalon. I really dint think we could do it and so we looked at what was the right answer which was actually starting the stack. So the rationale for why we felt we needed to add these features were customers really wanted them. They wanted to be able to integrate text and graphics and media and UI controls all in the same application. Maybe five years ago, people would build all I want to do is put some test on the screen. It is not what they want to do. They want to have it all in one place. So we started from the ground up, built on top of DirectX, a fully optimized hardware accelerated vector graphics rendering platform with built in animation as kind of the base primitive, which none of those two technologies had as their base. And so having to rip out that level of plumbing really necessitated the divide.

TSS: Do all of this is built on top of DirectX.

It is all built on top, Yes. It is all built on top of the premise that you want to run on the hardware, on the video card, leverage the GPU and really make it run much faster and look much higher quality than you can do with just GDI. It is pretty fun if you look at a standard video card that are you have in your machine, this monster machine with huge fan of the on the GPU standing in these banks and banks of memory and in one little corner the video card is die about that big and that is your GDI section of the card. That is all the 2-D functionality of the entire video card. When you run Windows, normally that little tiny piece of the video card is all you are using and now with Avalon we really wanted to leverage the rest of it.

So like what kinds of things are you looking to get Avalon to do? I mean, you mentioned we wanted to be able to integrate text, graphic, all that stuff, but practically speaking to people who are out there writing business-type applications, what does that really mean? Does it just mean sharper fonts, I mean what is the point?

Bill Hill, if you want to hear about sharper fonts, you have to go Google for Bill Hill, sorry, search MSN.com and you can read all about the fonts because actually we are doing a lot of innovation in fonts and they do actually have a real impact on productivity of the people reading on the screen. On screen reading is a super important part of the document experience you have with the platform and so that actually was an important thing. I know you are making a little bit of a joke there. I look at Avalon as, the slowest pipeline in your computer is one between the wetware and the hardware and the ability for a person to interact with the computer is the thing that we have been trying to make better and better over time. I think Avalon have a lot of innovations both on the input and output side of that experience. On the output side, obviously we have the richer visualizations, the ability to take data and present it in ways that are very understandable. The text is very readable, you can create graphics that are very compelling, which actually does add value in letting them understand what they are being shown. On the input side, we have new technology for how to integrate with devices, so just kind of a new input stack being able to take advantage of some of the new input systems that are coming out as well as a whole new model for accessibility. Accessibility is a really huge part of the platform and with Avalon one of the things we were able to do is from day one we designed in the accessibility stack. So the ability to automate the UI, the ability for users with some sort of impairment to be able to actually interact with the system is going to be significantly better in Avalon than what we have had before, and before was even pretty good so we are continuing to evolve it.

You had mentioned new input devices, like are we talking new types of mice, are we talking stuff that we have never seen before?

I think there is some additional stuff like, I think there is now going to be the new whacky spinny mouse. I don't know. Somebody in hardware is thinking of some new button to add to the mouse, the palm button or something, I don't know. But it is also the stylus, so Tablet PCs is one of the things that stylus input is built into the platform. It is not kind of just separate thing that we have today. In addition, you are seeing with media center, the remote control interface and there are some new input devices coming in that space that we want to be able to leverage in the platform. Today in Windows there are really these two very desperate ways of doing input. There is the HID, which is human interactive device I think, which is a sort of COM interfaces for talking to input devices and in there is your traditional Win32, WM keyboard, WM keydown etc. And these two roles don't work well together. So one of the things we have really tried to do is make that a single stack for input such that your application will be able to leverage all these devices very seamlessly without having to play in these two roles. Again, it is just kind of more of an integration pitch.

TSS: More of unification of the two stacks.

Yeah.

Interesting. As far as you have mentioned some of the new output styles, are we going to see a new crop of UI controls that are coming with Avalon or I mean what exactly are we looking at there?

So right now were looking at arguably the base set of controls you're familiar with text box, list box, drop down, and things like that. What we have been seeing people do in demonstration apps and when they get the bits and start really trying to do build stuff out of it is they are building brand new types of controls. I did a demo recently at Win-Dev and I showed this news reading application that we wrote that demonstrated ability to project 2D onto a 3D surface such that you could see more information and then when you clicked on it, it would come to the foreground and you would be able to navigate through it in more interesting views. Just the ability, the flexibility of the platform should be able to very easily do things like scale down images and scale down text and it will still remain somewhat readable gives you, you can imagine time line base to be used and all sorts of different things. Today in Win32 if you want to try to build that, you have to start from the ground up, you have to rebuild everything to try to present that view and with Avalon hopefully you'll have more reusable pieces. So I think we will see more innovations in the market for these apps and these new views.

Do you think there is room, remember at the MVP summit a number of months ago, you and Don were giving some demos. We had one demo where you had Windows and then you sort of turned it on at the side and you got this look of these Windows from the side, so could see the Z ord to some degree. That sort of got me to thinking, we don't really make use of 3D at all in any of the, occasionally a game we will make use of it, but beyond that we don't really do any 3D stuff. Do you think that is something that Avalon will kick off and do you think that's a good thing?

There are going to be two main uses of 3D in Avalon. So Avalon is about building applications. It is about building software. The clarification I make is we are not trying to build a gaming platform. Our goal is not to be the next DirectX or OpenGL or something like that. That is not where we are going from a team perspective or from the technology and so let's remove the games from the equation from there. I think in traditional applications in productivity and line of business apps, the use of 3D has two main purposes one of which is to provide a rich visualization, so you can imagine a 3D chart control. There are actually some demos at WinHack of being able to present information with this 3D chart and being able to rotate around it and integrate 2D and 3D into that. So that is definitely going to be a place that Avalon will enable people to get to that 3D functionality in a way that was very difficult before, before you have to go learn about terians and all sorts of whacky stuff.

Yes. It's a little terrifying. So that is very interesting and in the other place that I see it being used is to provide visual effects like what you were talking about with Windows where you still have a 2D world, but you are using 3D to do some sort of transition effect. You can use it to kind of tilt something back so you can see more information, or the Windows you could visualize the Z-order and that's going to be something that I also think is going to be pretty popular. I don't think you are going to see a 3D button that when you move to the side you can actually see the button, the pressing down like. I talked to people, we don't as humans we actually don't have a good way of interacting with input in the 3D world in reality and if you think about almost everything you deal within on a daily basis, it is a 2D thing. You read on a 2D surface, you write on a 2D surface, light switches and things. You never have to move something in a little bit raise it up go to the side to try to do something, that really requires a lot of dexterity. You would not want that to be how you interact with your computer. The 2D input is actually relatively well suited for it and so I don't.

TSS: You don't see us going to like holographic user interfaces in the near future?

Never say never, 640k was a great thing, but I have a hard time imagining until there is some pretty significant changes to how people interact with computers. I just don't see that as being a core thing, by that time it will be 2050 and we will have at least shipped once.

TSS: We will all just be plugging directly into the network through the implants in the base of our skull.

We have got to be batteries for somebody.

TSS: Right exactly.

TSS: You have ranted from time to time about, what is the exact phrase? How the web applications are harming humanity?

I think I said something like that.

Why do you dislike the web applications so much besides the fact that you are trying to ship Avalon?

I actually, I can claim that I at least have a small amount of impartiality because I did work on the ASP.NET Team for a while, although I am sure that they do not want me to say that. So, I think when I talk about web apps, I think about what has now become the traditional HTML projection based UI. That is an abysmal user experience. The one I like to compare is Outlook versus Outlook Web Access. Outlook Web Access is from what I have seen the most advanced HTML interface that has ever been produced. It has reams and reams of Javascript and it uses XML over HTTP to do dynamic updates of the display and it is an awesome web app. It just does amazing things. You browse that thing with Internet Explorer and I think 5 or above it is great, but it just sucks in comparison to Outlook. I can't go offline, sorting and searching is a lot slower, how it manages windows is really bad, you accidentally click something you can lose windows and there are all sorts of problems with it from a standpoint of usability. And the fact that it is so hard to deploy client applications today that they are willing to tolerate that is to me the failure. And so that's the richest web app you can get. Most of them are these horrible interaction models where it is like type something in, click post, come back with an error, type in a new value, click post, it comes back, finally we submit it or it takes too long as you hit post twice and you end up ordering two copies of whatever you are trying to order. People have tolerated such a decrease in their experience of using their computer for the web just because of the connectivity and they've done it because there wasn't anything better at that time because they needed the connectivity and they could not tolerate the deployment issues and so hopefully I think .NET today is doing a lot to help with this, I think the next release, the Whidbey release in 2005 with Click-Once will be a huge step forward and then hopefully we will just keep ratcheting that up over time, making that easier and easier and easier for people.

Okay, what would you see I guess where would you draw the cut off point, like you mentioned Outlook versus Outlook web access, part of the reason we like Outlook web access is the fact that I can walk up to any internet cafe in the world and still be able to get that Outlook level of experience and clearly, correct me if I am wrong, there is still a place for the web, yes?

Oh yes, definitely, I would never advocate the web is going away. I think that when I talk to software vendors, when you talk to people who are producing software, their core value is rich experiences that you want to build on a software platform, those are the people who the message clearly is why are you spending time building these web things when the experience is always going to suck for your customers. But when I look at it from a holistically, let us look at the industry sort of thing like I actually think people should be able to access their information anywhere on any device however they want to do it. If just have my phone and it is not even smart phone or Java phone or whatever phone it is, it is just a regular phone I still want to be able to access my e-mail. Right, so you look at these technologies like Speech Server that we have at Microsoft where you can actually go and dial into your Exchange Server, talk to it and read your e-mail over your standard line phone. At one extreme I see that and then somewhere in there is the web and the projection model for getting at your data and somewhere along there you get into the rich experience that you really want to use on a daily basis and I don't think that is in an HTML interface.

Where do you think that line is, where do you think the line between rich and thin clients should be drawn?

I think it if the core value of what you are producing as a software experience and that is thing you are producing then I think that you should be building rich experience or building smart clients. If the thing you are doing is simply allowing someone access to some data for utilitarian purpose, you might think of something like a 401K app, that I check once a year, I navigate to it and it just tells me how much you have in your balance, done. Okay fine, that is the web app, no problem. What I really want to do is slice and dice the data about how it is comparing against the prospectus versus what I have in there and what is the trend over time and can I move the balances around and I start looking at that. The place where I have my 401k is still web based interface and it is actually pretty challenging to try to get it do what I want to do and clicking through all these levels of navigation and there are multiple sites, you actually have to sign in twice to try to manage it and all the stuff and it is not a very dynamic experience. It is pretty limited to what you can do. So, those are things were that company that I have my 401k with does not value software enough to build a great experience for me and I the customer suffer, so it is a little frustrating.

Do you really think that they don't value the customer experience or is it just that we have not solved these deployment issues yet?

I think it is a combination of both, I think it is that people we need new technology to make some of the stuff better. I totally agree with that and I think there are a lot people out there in the industry trying to solve some of the hard problems, but I really do think that there is a value proposition that some companies have and some companies don't about how much they want that customer experience to be great and I think about retail experience. Let us compare retail experience, which is if you go to REI for example to buy something, you buy anything at REI if it fails for any reason they will give you new. It does not matter how long it has been and what it is. You just go in, oh yeah, no problems here he go here is a new one. If we go to random other place and you have a problem with something and they do not value the customer experience that much and they actually you have to go through a bunch of paperwork or else they give you grief because you don't have a receipt with it and all of these things and there is this balance of how much you prize the experience the customers have using whatever service you are providing is and it is a priority thing right. Where do you put that on the profitability versus customer satisfaction balance?

So let me go through a little FUD exercise with you, let us talk about some of the major online sites and say do you think that they want a web front end or a rich front end, for example Amazon. Is this something that should be a web app or is this something that should be an Avalon app?

I think it should be an Avalon app definitely. I think Amazon values customer experience a lot. They have invested a huge amount in producing a set of web services and actually do have people already producing smart client apps to target Amazon back ends. You can do these really cool visualizations that you can see all the prices of products then compare and contrast two things in a very interactive environment. It is really cool. We actually demoed at PDC some examples of kind of shared vision around where we thought we could go in the Longhorn with Amazon as a rich client and they are definitely an example of someone who I think would value a lot. People shop a lot and they want a great experience they want to be able to compare products. They want to be able to slice and dice the data anyway they want.

You had mentioned your 401K, is that you thought this should be a richer experience? Slicing and dicing data in what sense, I just want to be able to, you are talking about doing different kinds of visualizations or I just I want to be able to draw my own kinds of graphs or what kind of slicing and dicing do you think needs to be done that is not already being done?

So let us look at example of investor.msn.com so they used to have two views. They had a bit map projection and they had an ActiveX control that they could download and when you have the ActiveX control you could do things like highlight a section of the graph, zoom in on it, add new lines interactively, the modifying of what you are viewing was a very quick response, it didn't refresh the whole page, there was a bunch of things they did, if you opted in for that richer experience of ActiveX control. I am not an ActiveX fan right now.

TSS: But it is what we have at this time.

Yeah, it was an example of the difference between rich experience and the non-rich, which when I hit it with a plain vanilla, no I don't want to install that piece of technology, I got the data, I got the static bit map but when I wanted something more interactive then I could opt into the richer experience.

Let's assume last FUD experiment, the flight reservations for your favorite airline site where you are going up and seeing whether or not the flight is on time, you incline to Avalon app?

Flight reservations to check whether or not my airline is on time I would actually prefer that to be a web service I can ping from my phone. I want to be able to text some number and have it come back and tell me if my flight's on time. I want continually updating. When I think about it if I am not at my desktop, lets take the other aspect of flight reservation, the side that I am actually booking my ticket. Oh my goodness I want that to be a smart client app. I go and even using, I have tried to book with Expedia and I have tried to book with Alaska Air online and all these different companies going to their sites and the experience is always the same. It's always far below what I want it to be, paging through multiple pages, having to go back, having to fill in data multiple times, selecting cities by having to guess, oh I think SFO is the acronym for that airline, oh no I have a different dialog that will prompt me with 3000 airlines and I have to pick thoru them to try to figure out where things are and actually those are the ones that you actually want to be a rich experience. I think most things actually benefit from having a good software experience.

I was gonna say said so far we're 3 and 0 with respect to...

TSS: I really believe that good software experiences allow you to differentiate. It used to be enough that Internet connectivity was the way you differentiated your application. Oh you're online I can go use you anywhere -- that was enough. That is not enough anymore. If you want to have compelling things that people going back to time and time again you have to continue to innovate, you have to have really rich experiences, you need to have experiences that are really end to end. I am a horrible Microsoft person for admitting this but I love iTunes, Apple's music, I think that is awesome. I see where MSN music is going and I think its going to get there, but I look at the experience of the online shopping portion, the rich client application, the device integration they have, being able to easily burn a CD, the entire model end to end is a great shopper experience that has really been thought out as being very continuous to the user. And in the middle of that I had to go to the web to try to browse my music site? That just seems, yeah it would no longer be that, that will be its okay, I guess I might as well go to Buy.com instead of going to iTunes , because its the same experience, the same music, you get the same everything else, but iTunes does a better job of it.

One of the interesting things because it plays in iTunes as well is, the one of the principal criticisms of the iPod and iTunes has been that it locks you into the whole Apple scheme, it doesn't support WMA for example it only supports three of the major formats out there and so forth and I am sure there are people in the world who will look at Microsoft in your preference towards the rich client application, the smart client applications and say yeah this is basically more of the grand conspiracy theory to lock people into a Windows front-end, because of the whole notion of reach right. A large part of the reason people liked the web was because of reach, they could go out to any machine, any platform and still be able to consume these applications. Clearly you thought about that problem to at least some degree, how do you address those concerns about I want to be able to reach more than just the Windows platform?

I think about reach in a different way. Reach to environments of lots of desktops and things like that is an interesting aspect of reach, it is one of the dimensions, its interesting. I think a lot of environments if you have to choose between rich in getting the last bit that you can't get to on some flavor of Windows platform is, there is value in getting at that information and I do think that is where the web does have a good experience. But I like to think about broad reach, broad reach to all kinds of devices, to all kinds of experiences that you wanna offer people, right. So I will get things like how can I access this data, how can I access information on my phone, on my PDA, on my TV, on my XBox, on whatever I need to be able to get this information, and I think that's the place where the web today really lacks. If you want to create an app that has an experience on your PDA or you phone, you effectively have to learn this entirely new programming model or this entirely new environment, people hit it on the web browsing streams on these devices is horrible, because web pages are designed for general purpose data export effectively and on a small device, I want a special purpose optimized UI for that device. And so I look at things like we build .NET code that runs on my phone or my PDA or my desktop machine, as how I think reach is really critical because that really allows you to have end to end solutions in that space.

Okay, but wouldn't that necessarily mean that I am having to learn multiple different programming models, if I have to learn something that is optimized for this small device versus optimized for general PC browse or versus optimized for the phone?

No, we have the same programming model on all those spaces. You can actually write WinForms apps on all three devices using the same programming model.

TSS: But I guess the concern there would be that's leading me towards the direction of I want to try to create one UI.

That is not possible... No no wait this is an argument, this is a theoretical thing, if anyone can solve this, actually this is a great one, if anyone can really solve this and have a compelling user experience, they can scale from a phone with 75 pixels x 75 pixels with 256 color up to my desktop with 1600 x 1200 display with a 256Meg video card that can do all sorts of stuff and you can create compelling experiences that a single version of it can span those devices. More power to you, that's an amazing thing. The only way I know to do that is to get so abstracted from the questions, the task your trying to do that you end up having a programming model that says ask the user for a number and that's your whole programming model, and you can - I can do it on my phone, I can do it on my PDA, and I can do it on my tablet, I can do in on my desktop, but if you want a really great experience on this phone, think about no matter what brand of phone you use, think about the calendar and applets built into that phone, works really well on the phone, it is optimized the little tiny display, the way it shows information, the way it interacts with the keypad, all of that stuff is very optimized for that device. Then you scale it to the next thing think about the difference of the calendaring app that is on your phone to your PDA, regardless of the phone PDA, it is very different, it shows different data, it has different interaction model, there is absolutely no keypad in most cases, and so you want everything to be based on gestures where I can't even do gestures on the phone, and then you go up to the next one and talk about your tablet experience where you are roaming on occasionally connected networks and you want the offline ability and the integration keys when you move to the next one, you think about a desktop, where I see, may be I am now seeing multiple peoples calendars exposed at all times, so that I can schedule across people and you are not going to have one app that spans those devices. What you want is a common sort of services on the back end, common set of data that is exposed and if you will be able to write optimized front ends that leverage that functionality, that's where I see web services playing a key role in enabling these smart clients.

I know that, people have often spoken of Avalon and Indigo in the same breath, that they are both theoretically gonna ship roughly at the same time as part of Longhorn or on the same CD or what not. What do you see in many respects as the great pairing between these two? Is this just the fact that Indigo is going to expose all those services or is there more beyond that? You could do this with DCOM and it would be roughly the same experience as far as you are concerned as the Avalon. I mean where is the great pairing between these two?

So the really great pairing is that Don and I like each other, and so we are now making the technologies work better together. No I think it is a lot about Indigo as the communication stack and the reason I think people put the two together is that we are both working towards the same goal of trying to enable this much different software environment then what we have today. I do think to some extend, even if you talk to the folks on the Indigo team like Don he will make the comparison. Indigo is the new COM right I mean it is the new way of communicating between machines, between services, between entities on your software and so from that aspect yeah, you can definitely do with COM. You could do it with LPC, you could do it with interface, you could do with .NET objects, so there a lot of options there. I think the thing that Indigo brings to the table that really makes it compelling from a software experience standpoint is it gives me a way to talk to any service regardless of implementation on the back end, it really gives me that service orientation model, where I can have autonomous, service assuring schema and etcetera, and I think Indigo there is a bunch of less touted features of Indigo that I think are actually super key to this environment, things like the new transaction model that Indigo is going to introduce, the new logging mechanisms for reliability. There are a bunch of features that are in Indigo from a standpoint of building enterprise quality robust apps that really we will be able to leverage in building smart clients. So I think that there is a lot of synergy from the standpoint of just building that next step. I can imagine people actually building apps on top of Avalon, talking to DCOM because they have a DCOM system in the back end.

What do you see, lets fast forward to 2006, you've shipped V1 of Avalon, what next?

Heavy partying for quite a while, we've been working on this for a long time. I am going to take some time off, go see the world, go to Cancun drink some Mai Tais.

What are you guys thinking about next?

I think, for Avalon I think a lot of it is going to be finishing. I think that V1 is a V1, were are replacing a huge technology stack and a huge amount of legacy functionality from the form of I think about all the details in the User32, in GDI, GDI+, in MSHTML and the all these platforms and there is no way we're going to get it all done in V1, it just isn't right, I think that we are going to have a huge amount of innovation in the 3D space in the future version. I think that's going to be a big push, is leveraging more and more the video card. The video card manufactures are just innovating at such a high rate and adding so much more functionality to the platform that it is going to be really challenging to keep up with those guys and figure out how to make that really exposed in simple way to developers. I also think that another place that we are going to start spending time on is building higher level application frameworks and I don't think that will necessarily be on the Avalon Team per se, but I think within Microsoft that will be a big movement that you will see is a kind of upleveling the developer experience and continuing to provide more productive extractions.

TSS: Okay, cool, Chris thanks for your time and good luck with shipping Avalon.

Thanks.


News | Blogs | Discussions | Tech talks | White Papers | Downloads | Articles | Media kit | About
All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map