Chris Anderson didn’t really talk too much about what’s wrong with XML. He used simple, large-font slides and did a lot of hand-waving. The great thing about Chris is that he understands things at a very deep level, and that he can cogently and clearly explain them. He and I worked together when we were both on the VB6 team at Microsoft. He built (and I debugged) a nifty VB tool called the DHTML Page Designer — a weird amalgamation of a web page and downloaded VB code that is now safely dead and buried.
Chris’s big beef with XML is that XML must be processed in isolation, using special purpose tools and languages such as XSLT. In order to use these special things, developers must become domain experts in a rich and complex space that is essentially unrelated to the application itself.
The alternative to this is to use some kind of object model — but as Chris says, this is like using a straw to get to relational data through ADO.
Applications do a lot more than just process XML and Integrated programming models are key.
XML and .Net are not a good match! XML can be characterized by:
- XML type system
Whereas .Net is more like:
- CLR type system
We are really talking about documents vs. programs — there is a disconnect; no clear way to use one single programming model for both.
XML is an integration technology; it lets you get between two endpoints; it is a plumbing technology like TCP.
Sells says — “Its about information, not code. ” He cited Technorati as an example, and speculated that there was probably not a lot of code inside. A member of the audience made it clear that Technorati has MySQL and Perl inside. Chris was shocked and momentarily nonplussed for some reason.
Finally, Chris moved on to XAML. They had noticed that user expections for UI continue to rise; want designers and creative people to build the UI, not the developer. Grey boxes on the screen are no longer sufficient; designers and users want rich UI’s, embedded video, and so forth. Therefore, XAML is for interop between graphic designers and developers, and for integration between applications & ecosystems.
XML is somewhat human legible and very machine legible.
Developers see XAML as a new primary programming model and they believe that th e programming model should dictate the markup: Markup == OM. The markup is derived from and reflects the object model.
Chris gave some examples of the XAML declaration for buttons, and showed how XML attributes could used for simple property settings, and then turned into nested tags to set the same properties in a richer way. For example, making a button red would be done with a property; putting an embedded graphic or texture wold use nested tags.
Question from the audience, Why not SVG? Its good for doing vector markup, not for element-based UI. Could use SVG + XUL + HTML + some app / event markup. XAML Was supposed to be a unified and integrated thing.
The XAML programming model is .Net; this is the platform foundation and the XML is a reflection of that. XML is a data format, not a programming model.
So developers don’t hate XML, they hate the systems that make XML be the heart of the platform — you have to understand namespaces, transformations, and lots of other stuff.
What about other people implementing XAML? Not speaking for Microsoft, Chris hopes there will be a rich ecosystem of tools around XAML; doing it in xML enables this. Building a runtime for something not yet shipped is not a good way to guarantee compatibility.
Chris used the Java Swing and AWT toolkits to make a good point about the difficulties inherent in guaranteeing functional compatibility and pixel-for-pixel correctness across platforms. Avalon not designed to be cross platform.