Differentiating Avalon, XAML and Aero

One of the areas that I've seen cause a bit of confusion in the newsgroups and on blogs is the difference between three technologies that will ship with Longhorn: Avalon, XAML and Aero. I wanted to address this quickly in the hope that it helps us all get a little more precise with our terminology:

  • Avalon is the codename for the new graphics subsystem that will ship for Longhorn and as of today for current operating systems. In purely technical terms, Avalon is a series of assemblies that contain classes that form part of the System.Windows namespace. Avalon contains a layout engine that places controls within a window, a series of controls (such as CheckBox, TextBox), some document services (rich typography, compound documents, and document viewers), media services, graphics primitives and animation capabilities. In other words, it's a fairly big deal. For now, Avalon is bleeding-edge technology that is still some way off general adoption, but eventually we hope it will become a powerful service that integrates all these currently disparate services together into a unified stack.
  • XAML (which stands for "Extensible Application Markup Language") provides an XML-based way to specify declaratively a hierarchy of objects with properties and logic. We're positioning XAML as a user interface design language, because it is ideal for generating the kind of code that traditionally resided in a hidden #region area and was hard to maintain by both developers and tools. If you've ever wanted to edit the auto-generated blocks of code created by Visual Studio but been dissuaded by the warning comments writ large, or you've gone ahead regardless and been burnt badly when your tools refused to load your changes, you'll appreciate XAML. XAML is not Avalon, and Avalon is not XAML. It so happens that they come out of the same team at Microsoft, but they are not intrinsically wedded together. I've been asked before "where can I go to get the XSD for XAML?" and hopefully it's now clear that this question doesn't make much more sense than asking for the C# schema. XAML gets compiled into an object definition.
  • Aero is the name for the Longhorn user experience. At the PDC, Aero and Avalon sometimes got merged together in people's minds, perhaps because they both begin with the same letter and have to do with user interfaces. We're not talking a huge bunch about Aero for the moment; the link points to the Aero pages on MSDN.

Hope that helps clarify things a little...