Over a million developers have joined DZone.

Rumors of XAML's Death Have Been Greatly Exaggerated

DZone 's Guide to

Rumors of XAML's Death Have Been Greatly Exaggerated

· Mobile Zone ·
Free Resource

It’s been several months since the demise of the standard public opinion of the Microsoft UI platform developers. That was a ridiculous statement I just started with, but it’s grounded in a lot of truth, what with all the perpetual noise from naysayers regarding Windows 8’s open-arms acceptance of HTML5 as a UIdevelopment strategy. All of it has me scratching my head in confusion, not about Microsoft’s decision-making, but about the wisdom of those whom I’ve been coding alongside all these years. (I myself don’t do much with XAML but I do develop on the Microsoft stack and I consider XAML developers my “compatriots”.)

Microsoft has always been a copy-cat, a late-to-the-party fat kid who shows up, rolls around, shoves his muddy butt up in your face, and then comes waddling over in an out-of-breath huff to the next party. There’s nothing new going on here with Windows 8. When Microsoft created Windows in the days of DOS, and recreated it again in Windows 95, and recreated it again in Windows NT, they were just playing along with what the cool boys were already doing. The Macintosh pretty much defined the whole market and everyone has been playing along with its notions ever since. With the advent of the iPhone and its iOS touch-oriented platform, a reimagineering of the Windows Mobile platform was an absolute necessity—people say that Windows Phone 7 was too little too late, and I can only agree with the “too late” part. The “too little” part goes away over time, since no major software manufacturer can come up with everything in one shot.

Apple has always led, as have people who rely heavily on the Mac platform where their focus on creativity is not shoved aside by some unnecessary technical feature set. Microsoft’s leadership skills are on occasion a little bit embarrassing. Remember Windows Live Spaces blogs? Remember when Microsoft was trying to compete with Wordpress.com? That was funny. The editor was sloppy; even after porting my sister’s blog over from Windows Live Spaces archives to a WordPress account I am still cleaning up the Microsoft Office pasted stylizing mishmash crap that Spaces emitted all over my sister’s content. Yes, it was so sickening it was funny. But what was funnier was when Microsoft handed everyone on their Live Spaces servers over to WordPress.com. “You not only win, you can have our customers’ blogs, here you go.” Hilarious.

That was a bit of a tangent since WordPress is not Apple. Nonetheless, when it comes to platform delivery, Steve Jobs is usually right. It doesn’t matter that Objective-C is one monster of a strange-looking language, that didn’t stop the many developers from making the iOS platform one of the most successful new operating system platforms to be adopted in the history of computers, measured according to successfully adopted software applications. Ironically, however, it was not Objective-C native applications that Apple started its folks off with. It was Webkit and Mobile Safari solutions.

Apple made a conscious decision from iPhone’s get-go: Start people off on a stable common denominator, one that outsiders can understand, one that performs well, and one that can be extended to look and feel similar to a native experience. Developers were angry at Apple for this (including myself). “We don’t want just a bunch of Javascript and CSS extensions, we want to write real code!” It wasn’t until shortly before the 2nd generation of the iPhone came out that Apple finally released a native SDK. And then all the feather-flapping stopped. Everyone quickly shut the @#$% up and started working diligently on their native apps, which soon started showing up on the App Store. The question is, was Apple in error by supporting and extending the common denominator (HTML+CSS+Javascript) on their platform first, or were they smart? I think they were smart, and their subsequent success upon opening up the native development experience says a lot. I think it says to developers “you can go broad, or you can go deep, either way, you can go, and we’ll back you.”

With Microsoft, you have a similar story, although parts of it are a little backwards. Microsoft had their “native-esque” programming experience with the Silverlight and XNA SDKs for the Windows Phone 7, but that wasn’t enough, and eventually, finally, Microsoft acknowledged that they need to meet the initial if difficult requirement for a lowest common denominator—the Webkit equivalent of the Internet Explorer Mobile Edition Marketed Version Nine for Windows Phone Seven Super Edition Service Pack 1 Episode Three Ninth Season 2011 Squared. At least, I’m hoping that they made this acknowledgement, because when I tried building out some prototype Silverlight apps on the Windows Phone 7 platform and I used the Internet Explorer mobile control I found myself quickly missing Webkit’s and Chrome’s reliability in adherence to standard and extended APIs.

Regardless of Windows Phone 7—which Microsoft has certainly used as a testbed for future evolution of the Windows desktop platform, much as Apple has done with iOS and OS X—it seems obvious to me that the Internet Explorer team has lately been given the go-ahead and adequate funding to make their platform adequately competitive with the rapid advances of the web platform that has been commonly referred to—incorrectly, I might add—as “HTML5”. Internet Explorer 9 is a good web browser. It’s not shabby. It’s no match for the likes of Chrome and even Firefox but it’s still a good browser, right in there with Opera, I think, which has almost as many quirks despite its other advancements. Meanwhile, Internet Explorer 10, as well as Microsoft Windows’s amazing advancements on the ARM processor chipset, really prove to me that Microsoft is well aware of what they are up against in this highly competitive market.

When you look at the features of Android, iOS, Linux, Mac OS X, and Windows, there are several cross-compiled manufactured solutions for producing cross-platform software applications and resources. Java is the first that comes to mind, but the pile of horsepoo that they dumped on Microsoft in the late 90s for Microsoft’s desire to see Java do wonderful things on their platform scared off a lot of Microsoft devotees from the Java platform. Likewise, people are scared of .NET, especially with Mono not having a stable backer for a solid amount of recent time. Then there are wxWidgets and Qt, but these are C++, bleh. Hence, people choose to use what they feel most comfortable with, which is usually the platform that is most likely to be there waiting for them in “weird OS land”, on the other side of the fence, not sticking its tongue out at them but rather showing consistent programming and UI experiences. On each platform, you have HTML+CSS+Javascript. And where HTML+CSS+Javascript doesn’t feel native enough, you have the likes of Adobe AIR and similar toolkits making the platform look and feel beautiful again.

WebOS is an amazing testament to the power and inspiration that the stack has. WebOS is kind of like iOS, except that all software applications are HTML+CSS+Javascript, period, no exceptions. The fact that they pull it off frankly makes me want to start building software that targets WebOS and then port from WebOS to other platforms since it’s a ubiquitous platform.

People tend to pooh-pooh the power of HTML5 but they need to spend a few hours (in Chrome) scouring some of the more powerful HTML5-based software applications that are available right now and that look absolutely spectacular on modern hardware. It’s been referenced on my tech blog many times buthttp://www.chromeexperiments.com/ is still a great site to check out and see the power and flexibility of the HTML5 platform.

Further, I might add, HTML5, with it being more a Javascript+canvas+SVG+networking stack than a tagging scheme / markup language, antiquates and deprecates the arguments that “HTML was not designed for software applications”. The WHAT-WG, or Web Hypertext Application Technology Working Group, came about in the iPhone/iOS early days independently from the W3C to address the very concern that “HTML is not for applications”, and HTML5 is the literal fruition of work that came out from that group. The argument just does not stand anymore; the HTML5 stack is indeed for applications, although the HTML5 markup language is most definitely not. Readable/printable documents have no use for a canvas, nor for long-term large offline storage, nor for bi-directional network sockets, and so on, these being HTML5 features that were previously reserved to browser extensions and hacks that end users had to authorize.

Is Microsoft wrong for embracing a well-adopted programming and screen layout standard? Of course not. Should Microsoft be ashamed for trying hard (even if not quite their hardest) to make sure that their platform is the best platform to experience applications that target this common programming and screen layout standard? NO!! So what is all the fuss about? Microsoft has a limited staff and limited budget to keep fostering the marketing and market growth of the Silverlight and WPF platforms when the most current area of focus is something else entirely. That does not mean that they have abandoned Silverlight or WPF, nor for that matter does it mean that WPF and Silverlight are going away. All it means is that Microsoft has “seen the light,” that they cannot keep pretending that the world around them doesn’t exist. They have finally stopped holding their hands up to their ears shouting “I can’t hear you, I can’t hear you, blahathathahthatahta”, they’re paying attention to changing trends, they’re adapting, and they might even be going through an internal overhaul to support the necessary changes that are taking place for a constantly evolving software marketplace.

Do I hope that native and managed-code development comes back to tantalize Windows developers? Absolutely, and I think that it’s inevitable that it’ll all return really soon, even within the next year. They’ll have to because outside of Adobe there are no serious development tools that foster native-like HTML5-on-the-desktop experience development like WPF and Silverlight have, and until that changes—and it will, I promise—we are stuck with the XAML-based tools that we have, so stop complaining and keep enjoying them.

Incidentally, it saddens me when I hear stories from within the walls of Redmond about how and why the Windows platform team and the .NET / WPF team never really “got along” and weren’t on the same playing field, and how so little software straight from Microsoft is actually managed code. The fact that they didn’t get along and stay on the same page explains a great deal about how abrupt and disappointing it was that Windows 8 would showcase HTML 5 and not XAML-based managed code—it’s almost as if the Windows team said, “Since we never liked you, but we need to support a lightweight and easily understood stack, we’re just going to skip over you and jump straight onto the ‘Webkit’-esque bandwagon.” It’s not only sad, it’s a bit insulting to the XAML crowd. At the same time, however, I cannot argue that it wasn’t wise, because ultimately at the end of the day—er, at the end of the fiscal year?—Microsoft’s goal is to make Windows the best platform for building and running any type of software, period. One can argue that “they already tried it on the desktop and failed with Active Desktop”. That’s a bit like saying Silverlight was doomed from the beginning because Microsoft had already previously toyed with a vector art creator/editor that was ugly, crappy, and a gigantic flop. The reality is that once Microsoft makes a hardened choice to go in a specific direction and not waver, nothing will stop them from gaining critical mass. (On the other hand, Active Desktop received Microsoft’s full clout, and it still failed, but I suspect that it was because it was ahead of its time. Meanwhile, the Vista and Windows 7 sidebars/gadgets are still fundamentally HTML+CSS+Javascript and those didn’t go quite so poorly.)

Windows is a do-it-all platform. Most people don’t know it, but Windows 7 is even UNIX-compatible, just turn on the UNIX-compatibility feature and you instantly get the ability to compile to UNIX. You even get a C-Shell. (This may be going away with Windows 8, though, sadly, perhaps because no one knew about it and Microsoft probably didn’t want to support it if they did. For that matter, Cygwin and MinGW were arguably better anyway.) Windows has never been good at minimalistic, pretty software, for that go to Mac. If you want purely utility software, fire up an old distro of Linux. But Microsoft has made Windows excel so well at retaining such a huge market share on the desktop by being the platform that is least likely to fail when you grab some software off the shelf and forget to read the label—or I guess in 21st century terms, when you click the Download link and find the first download option.

Windows won’t run Obj-C/Cocoa Touch software, but at least Windows can fire up and run software that was built for the “any-platform” platform that runs on Mac and iOS, too, and that in my opinion is a rock-solid first goal for a new OS version since it most readily embraces non-Microsoft developers who have been developing on “all platforms”. Once Microsoft gets past this hurdle, let them go back to making the platform proprietary and unique again. But dang it I don’t want to be using a desktop operating system that is great for proprietary-built software but crap for running software that was built for the common application stack. I like to know that Microsoft knows a few things about being on top—on top as in king of the hill—of what everyone else is into. Right now that means the HTML5 programming stack. Get in the game or get off the train and find a job selling sushi.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}