MyXAML Lead Weighs In on MSXAML Debate

Gerald Bauer <[email protected]> Mon, 25 Apr 2005 18:33:11 -0700
Newsgroups gmane.comp.lang.xul.general
Message-ID <[email protected]>
Hello,

    Marc Clifton who leads the MyXAML project weighs in on the MSXAML  
debate and writes in the MyXAML blog:

    Allow me to chime in on something Joe said:

"XAML provides for very clear and distinct separation of data,  
functionality, and presentation via explicit parts of the language"  
and also:"[XAML] goes a long way toward declarative programming, and  
provides some very nifty ways of making sure the two stay separate".

I find this a bit difficult to swallow and that quite the opposite to  
be true.  A XAML application is an entangled mess of UI state  
management via property triggers, data binding, and UI definition.   
Look at a typical example and you'll see the entanglement of binding  
(data), property triggers (functionality), and presentation (object  
graph).  I don't think this helps the concept of declarative  
programming.  It looks more like an example of “how not to write  
applications“ if it were written imperatively.  But then again, this  
is pretty typical.  Just pop open the Visual Studio designer and  
start adding data sets and SQL connections and you get code that is  
the antithesis of what Microsoft recommends with their application  
blocks.  It looks like XAML isn't going to be any different.  You CAN  
do declarative programming  that way, but a serious programmer would  
cringe.

I think there's a lot of great things that can be done with xml and  
object graph mapping, but to entangle property triggers and data  
binding along with the object graph representation is not good  
architecture.  And frankly, as I gain experience with MyXaml  
applications, I'm also concerned with DIRECT xml element/attribute to  
class/property mapping.  The resulting xml is too dependent on the  
underlying class/property definition.  While you can do cool things  
with it (and it is a tool, after all), there's a lot to be said for  
defining a schema that is INDEPENDENT from the underlying class  
definition.  I'd love to see what happens to XAML applications build  
with Avalon 1.0 running under Avalon 2.0.  If there are changes to  
class names, properties, or even their functionality, XAML code will  
break just like imperative code.  However, if Microsoft had chosen to  
abstract XAML and actually create a schema that can be nailed down,  
then there would be good decoupling.

Oh wait, but then you'd have an SVG clone.  :)

Another benefit to a well defined schema is you can then plug in  
different toolkits.  In fact, you can use toolkits that aren't  
declarative programming friendly by writing a wrapper layer  
specifically for that toolkit.  If you want to use a different  
toolkit later on (like a docking manager, or a planner control, or a  
data grid control) or if you want to support a different platform  
(like web), then there's some chance at least that the same schema  
can be used regardless of implementation.

Oh wait, but then you'd have something like GTK# or QT# or many of  
the other XUL motors.

With MyXaml, I'm looking at a compromise--using xml element/attribute  
to class/property mapping for things that are mostly  
“stable“ (like .NET), but writing wrapper classes for things that  
aren't as stable, like third party toolkits.  We'll see how it goes.

So, my point is, don't be fooled that XAML goes a long way toward  
declarative programming.  It doesn't.  As other posters commented,  
it's just a serialization format.  Treat it as such.

    Source: http://myxaml.com/marcclifton/archive/2005/04/25/1938.aspx

    Any comments?

    - Gerald

-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id396&op=click