Peter, this is an outstanding post! Thank you!!
I've written a lot on this topic over the years and am glad to see the enthusiasm.
I will offer a few notes for anyone who cares to research the topic.
sgML is the parent definition of all MLs.
XML derives from sgML.
xaML, axML, htML, spreadsheetML, and others derive from XML.
Such nuances aren't important but I think it's helpful to know the roots.
Generating XAML isn't quite as easy as CSV, but sure, ultimately one is just building a text block.
XAML has nested structures, opening and closing tags which must be tracked, and a much more rigorous syntax.
Anyone who is inclined to generate XAML from BASIC has been able to do so since the '90s.
The better approach to doing this is with templates where you pull in a pre-defined node of interest and populate it with detail.
But in the context of recent discussions, mobile development, etc. There isn't much need to generate XAML at all.
Usage of XAML is a choice, not so much a requirement. It allows a UI to be hand-crafted or developed visually It's a modern equivalent to drag/drop Windows Forms where there was auto-generated code continually updated as we visually modified the UI.
Once the XAML has been established, it serves more as just a starting point for a running app.
For _dynamic_ UI management we use code. This is where the object model comes in. For example, if you want to put a button on a form you can hard-code XAML something like this:
<page><form><button>...
Or you can do it in code something like this:
var page = new Page() { // params }
var form = new Form() { // params }
var button = new Button() { // params }
form.add(button);
page.add(form);
(contrived names and syntax which is different for various targets, just demonstrating the structure)
In summary on that, skills in both XAML and code are required, but again, how much XAML is used is a choice. This is similar to other languages and frameworks. In
ASP.NET we can visually design a page and/or we can do the same thing from code-behind. In PHP we can hardcode HTML and other page components, or we can do it with PHP code.
What we're seeing is that we have many Options. And that brings me to Windows Forms and WPF. I do not believe you will find statements from Microsoft that WinForms or WPF are being superceded, obsolete, etc. As with all technologies, when something new comes around there is a spike in adoption, and older tech goes into maintenance mode. But over several years Microsoft has not followed the common approach to deprecating the old in favor of the new. Rather, they are constantly presenting us with new options, not forcing replacement. MVC does not replace
ASP.NET WebForms, it's an alternative. WPF does not replace WinForms. They still support tech that we've considered dead for years. WinForms, WPF, and
ASP.NET are all still alive and well in the .NET Framework v4.6. To this they have ADDED options for .NET Core and Xamarin, supporting all of these underneath with the .NET Standard Library.
All that said, yeah, Silverlight is going away, once supported as the answer to a lot of issues but the world has moved on and Silverlight does not represent our collective forward direction.
But as to "XAML is better", please note that XAML was/is core to Silverlight in exactly the same way as it's core to anythig else discussed here. This comes back to a comment I made in another thread that XAML isn't a universal solution in itself, it's merely a definition for layout which is used differently by different platforms. The syntax is consistent but as with any language framework, you'll find the actual object names and properties are all rather different across platforms. Silverlight just had different objects and properties from Xamarin but it's all still XAML.
So I encourage you to shift from looking at all of this as old-to-new, but rather as opportunities to try something new and then to make choices about which tools (together or apart) you feel are better to respond to specific business and technical challenges.
All of this comes back to my mantra over the last couple decades - it doesn't really matter which technologies you adopt, just pick one and move forward. Whether we're talking about Viságe or DesignBais, FlashCONNECT or mv.NET, Osmosis or
ASP.NET Webforms,
VB.NET or Java, JavaScript or Adobe Flash/Flex. For all of the rhetoric about what's "better", too many companies still haven't done anything. Picking up on any of these and moving forward is far better than waiting for the perfect one that never did come or never will come, all while MV end-users are walking away from their VARs. This is as good a place as any to just hop on the train and go.
Regards,
T