Originally posted here...
http://msdn.microsoft.com/Longhorn/understanding/pillars/ in 2001?
Avalon Defined
What exactly is Avalon? I like to put it this way: Avalon is to Longhorn as User.dll and Graphical Device Interface (GDI) are to Windows (1.0 through XP). I like this analogy because it underscores the significance of the place of Avalon in the evolution of Windows.
I've heard people say "Longhorn is as big a change as Win95," or, "the Longhorn release will be as big as Win2000." Bigger: Longhorn will be the first time since Windows 1.0 that Microsoft has replaced its entire presentation stack, from HWNDs to the DDI. This replacement, and the opportunities it created, make Avalon the most significant step forward for the Windows presentation platform since its inception. When you combine this with the progress made in other areas of Longhorn, such as in the storage subsystem (code-named "WinFS") and in the communications subsystem (code-named "Indigo"), you begin to realize that Longhorn has the potential of being as monumental as Windows 1.0.
So how did Avalon get to the point where it is today? No, we didn't wake up one morning and say "let's build a new presentation stack for Windows." There were several separate efforts that we consolidated to form the Avalon team: User, GDI, DHTML, and eReader. With this union, we had a great comprehensive view of the problem space.
Avalon is not the first time Microsoft tried a hardware-rendered desktop (Chrome, 1999); nor does Avalon mark Microsoft's first attempt at an element-composition–based UI framework (AFC, 1997); nor is Avalon Microsoft's first .NET graphics library (GDI+, 2000). Avalon is Microsoft's first attempt to do all of these things and more as part of a unified effort. When the Avalon team was formed, we set out to define our mission statement. Avalon's aggressive mission statement includes seven primary goals:
1. Exploit the hardware.
2. Integrate UI, media, and documents.
3. Integrate with the Microsoft® .NET Framework.
4. Enrich the declarative programming model.
5. Focus on element composition.
6. Ensure compatibility and interoperability.
7. Incorporate lessons learned over the last decade.
The Avalon Seven
Exploit the hardware
The Windows presentation platform was created in an era of CGA and EGA monitors with 286 processors screaming along at a whopping 8MHz (with the turbo button pushed on, of course). From 1985 to present, Microsoft has made significant advancements to this platform. Still, these ongoing improvements have been increasingly outpaced by ongoing hardware advancements. Today, the Windows presentation platform barely scratches the surface of the hardware power available to it. Windows did add Microsoft® DirectX® to the mix in 1995 in the form of an SDK addition to help third parties. But User & GDI themselves don't make use of DirectX. In fact, it's only when you're playing a game that you're really utilizing DirectX to take advantage of the hardware. Avalon brings the power of the hardware to the Windows application developer.
Integrate UI, media, and documents
We continue to see developers wanting to incorporate all three of these areas into their applications. From a EULA that shows up with rich formatting and in printable form on application install, to animations that create clearer UI transitions for the end-user, application authors want to add value through meaningful richness. This is why Avalon has concentrated on integrating the programming models for these three areas as tightly as possible. The result yields wins such as: a UI framework that builds directly on top of a Media foundation, UI elements that can be animated on a per-property basis, and documents that can contain UI.
Integrate with the .NET Framework
The primary long-term goal of Microsoft's .NET Framework is to provide a consistent and complete programming model for Windows developers. Avalon is committed to being integrated into the .NET Framework. Microsoft® Windows Forms and GDI+ have taught Avalon the value of this integration. In fact, across Longhorn, it will be hard to find the separation between the new Windows API and the .NET Framework. This is why, when developers ask us, "What should we do while we're waiting for Longhorn?", we tell them, "Move to managed code and target Windows Forms for your presentation needs." There is tremendous value in what is already in the .NET Framework, and Avalon's addition to the .NET Framework has given both parties a significant boost.
Enrich the declarative programming model
Microsoft's DHTML work especially has taught us the value of providing declarative definition of hierarchical content. Declarative definition is a more concise, readable, and maintainable way to express a hierarchy of objects than with imperative code. Windows today provides a rudimentary declarative form for UI in .RC files. Leveraging XML, along with the type extensibility of the common language runtime (CLR), Avalon has created XAML with the goal of using it to define not just content and UI hierarchies, but hierarchies of arbitrary CLR objects. There will always be developers who will choose imperative programming, and the Avalon API gives full access to all of Avalon's power. XAML gives an opportunity for those developers who have found markup to be more approachable, especially for the construction of object hierarchies, to use a markup abstraction over this API.
Focus on element composition
In Windows User today, the application author space and the component author space are separated by a wide chasm. Concepts introduced for the application author are rarely applicable to the component author. Rather, the component author finds herself/himself needing to reinvent the wheel within their component, redefining concepts like render, hit-testing, and input. Avalon has made a huge bet on element composition as the central extensibility mechanism. We've focused on making element composition work for not only the application author, but also for the component author. By taking this mechanism so deep, Avalon has created a smoother progression for the application author needing to move into the component author space.
Ensure compatibility and interoperability
There is a danger when the Windows team utters the word "replacement." Developers ask, "What will happen to all of my stuff written for what you've just replaced?" This is where the history of Windows compatibility should reassure those developers. Historically, changes could only be made to the Windows platform if they didn't seriously impact the functionality of existing applications. That same rule applies here. Interoperability is the key, and Avalon is doing a lot of work to ensure that Windows Forms-based and User/GDI-based applications interoperate with Avalon.
Incorporate what we've learned over the last decade
While we have been able to significantly improve the Windows presentation platform since its inception, there were limitations to how far we could take these improvements. The two main factors that limited us were compatibility and architecture. Compatibility is a great goal to have, but it does limit change. In terms of architecture, for stability and maintainability reasons, you had to justify architectural change with compelling reasons. This meant that some features could not be incorporated into the design because the change was too significant compared to the benefit. So we started to build a list of "cool features that didn't make the bar." The idea was that someday the list would grow to be big enough such that the combined benefit of the items in the list would be worth the cost. I'd be lying if I said that Microsoft never thought that time had come before Avalon. Cairo in the early days of NT was the first time we thought "now's the time." Win+ in the later days of NT was the second time. With Avalon, it turned out that the timing was right. So Avalon drew from this list to construct a powerful and comprehensive feature set, including such enhancements as size-to-content layout, dependency-based property system, rich databinding to any property on any object, navigation and journaling services for applications, and attachable editing services.
Putting It All Together
On January 17, 2001, the Avalon team was formed. Four hundred strong, we stood with these seven goals in hand and tried to envision the road ahead. Starting such a large team to achieve something so different in nature was unsettling. The Avalon team is a four hundred-cylinder engine. When the timing of those cylinders is on, it's going to make for one very powerful engine. But before that happens, you're going to have to spend a lot of time in the garage working on the timing, so that these cylinders don't work against each other. Well, we did spend many months in that garage, but it paid off. Sitting at the PDC last month, we saw the look in people's eyes as they got a glimpse of what this four hundred-cylinder engine had produced thus far. And the feedback we're getting now is the gas for this engine. We came back from the PDC to an energized team that has all eyes on the finish line. Looking back, I can't enumerate all of the right moves that we had to make to get to where we are today. Looking outside of Avalon to the entire Longhorn effort, it's even harder to articulate how we managed to put all of this together. But the feeling of accomplishment is incredible.
As you begin to dig into the bits that we delivered to you at the PDC, keep saying to yourself, "pre-alpha release." I'm reminding you of this, not to keep you from bashing us when you hit obvious bugs; rather, I'm reminding you of this so that you won't hold back on feedback because you think we're too late to do anything about it. With the PDC, we've opened the floodgates, and we're expecting to get deluged with feedback. So don't disappoint us; let us hear it all, good and bad.
I'd like to close with my personal success metric for Avalon. In my mind, Avalon will be a huge success if, at the launch of Longhorn, the following commercial is aired on every primetime slot (I still haven't come up with the ideal background music for the end of the commercial, but you have my word that it won't be Start Me Up):
Fade in on a 12-year-old boy sitting at a computer. The camera is positioned peeking out from behind the monitor, showing the back of the monitor and the boys face. The boy is slowly moving the mouse around and clicking. With each click, he exclaims, "Woah ... sweeeet ... beautiful." Fifteen seconds pass.
Enter Mother, stage left, coming in with a smile on her face, calling, "Jimmy, I'm back." Mother's smile turns to a look of shock as her eyes meet the screen. She hurries her last two steps to Jimmy's side, saying, "Well I never!" as she brings her hand to cover his eyes. Mother then uses this hand to turn Jimmy around in his chair until he's facing her.
The camera changes to peeking out from behind the Mother, showing her side and focused directly on Jimmy. Mother lifts her hand as Jimmy looks up at her and says, "But mom, it's just Windows." The camera pans to show the monitor with Longhorn running with "living windows" that make your eyes pop. Jimmy's voice fades out as he continues explaining to his mom. Fade in text with voiceover: Microsoft's New Windows: too sexy?
Inside Avalon
Jeff Bogdan joined Microsoft in 1991 as a developer in Windows. Today he is an architect on the Windows Client Platform team working on Avalon. He is responsible for the design and developer experience of the presentation components in Windows. When he's not playing with computers, he's playing with his two sons, relaxing with his wife, or inline skating as fast as his legs can propel him.
Chris Anderson joined Microsoft in 1997 as a developer in Microsoft® Visual Basic®. Today he is an architect on the Windows Client Platform team working on Avalon. He is responsible for the design, developer experience, and architecture of the presentation components in Windows. Lately he is working on perfecting his rollerblading and Halo skills. Chris' wife puts up with his addictions, including digital photography, blogging, video games, and home theaters.
post edited by gswitz - 2008/12/12 12:58:29