I think the most important feature of XAML as a declarative language/object model map is the ease with which it can be tooled. There is really no value added over the standard forms designer and imperative code if XAML doesn’t have a designer associated with it a la Blend or Cider. Likewise, XAML would be superfluous if Windows Workflow didn’t have its designer.
What is the common thread among these frameworks? They both have design tools that are immediately familiar to people who normally work in the associated domain. XAML is what those tools spit out, providing a lingua franca between people who know UI design or workflow design, and people who know programming. Basically, everyone involved in creating an application has his or her own…wait for it…domain specific language. Graphic designers speak vectors and gradients and paths, workflow engineers speak activities and decisions and synchronization, and programmers speak objects and functions and variables. The only person missing from the picture is the business analyst.
What do BAs know? They take written requirements and turn them into use cases with actors. A use case lends itself very well to the Command pattern an actor performs a specific action against the application’s domain and expects a certain result.
What if we were able to take the language of the business analyst and provide the foundations of an application? Without leaving their comfort zone, a business analyst could define the core domain objects, commands, and services that the application is expected to provide. All that would remain is for an Architect to map those domain objects (possibly refining them) against a datastore, a UI designer to create the look and feel, and a developer to code the logic that drives it.
Orcas will provide an O/RM tool and supporting framework (in LINQ to SQL and its associated designer) that will look as familiar to a data architect as their common tools. All that is missing is the BA design tools and a supporting framework. This is where Application Foundation comes into play. It will provide a toolable framework (through XAML) for creating the core architecture of an application. As they say "code is the only currency". Until I give you something that works…I’m just theorizing and daydreaming. BTW, I recently read an article…book…blog posting or something that spoke about this concept, and for the life of me I can’t find my original source. But my search for that source has led me to find that it is a mantra in the open source community. Anyway, let me get some working code in front of you guys so we can talk more.