Kizmo

Almost Good 

Jun02

Posted at 10:55 am by Jack. Filed under Development.

XAML was unveiled with great fanfare and greater promise back in 2003, a key component of Microsoft’s advanced presentation layer for Vista. It promised to lower the barrier of entry for developing GUI-based applications for Windows. It’s aim to simplify the workflow of the designer/developer relationship, enabling teams to develop better and more attractive interfaces in shorter times. Advanced tools were previewed that, while rough, hinted at a world where a non-engineer could assemble fully-functional, attractively designed interfaces without resorting to the cumbersome verbosity of GDI or Windows Forms.

Using XML markup to describe both appearance and interactions, XAML offers the developer a new way to develop Windows applications. When coupled with the advanced rendering capabilities of Windows Presentation Foundation, it provides development teams with a path to creating richer application experiences than previous iterations of the Microsoft frameworks allowed for.

There’s little doubt that the XAML/WPF workflow is the future of application development for the Windows platform. Microsoft is investing heavily in XAML and it’s web-oriented sibling Silverlight, often subsidizing the development cost of new projects just to get some decent examples of the technology into the marketplace. And while adoption has been slow, there is a growing caucus of developers using these tools and discovering their benefits and drawbacks.

Over the last year I’ve joined this caucus, developing a large, sufficiently complex interface within the .NET 3.0 framework and utilizing XAML. Coming from a traditional UNIX background, with strong roots in web development and design, many of my colleagues have expressed passing interest in my work. The questions were numerous. From the mundane to the deeply technical, the questions all seemed to boil down to how XAML compared to other frameworks and languages such as Flex, Cocoa and traditional Windows development. Developers have a peaked interest in any technology that may reduce their work and are more than willing to bleed on the cutting-edge if the benefits outweigh the drawbacks.

And well, it’s almost good.

XAML is largely an act of envy. While desktop developers have been stuck in the programmatic mire of writing line after line of verbose code, web developers have been advancing on their territory. The low-barrier of entry for authoring HTML, combined with the growing number of do-it-for-me frameworks such as Rails, Django, CakePHP and Flex has made the task of developing for a web audience remarkably approachable and the last five years has seen an explosive growth of fully-formed web applications — many of which offer comparable experiences to their desktop competitors.

XAML is not a competitive response to this sea-change. Microsoft has it’s own horse in the web development race with ASP.NET, and it’s relatively popular. It’s more me-too than anything else. XAML seeks to make desktop development as approachable as web development by co-opting its main benefits.

HTML and CSS are simple. While you can create incredibly complex layouts using them, each operates on a small set of easy to learn syntax rules. Open bracket, tag, end bracket. Rule name, brace, rule, brace. And while it could be argued that certain programming languages are no more difficult, none match the shallow learning curve of HTML.

Authoring a new layout in HTML is as easy as opening a text editor and typing something. Open that file in a web browser and something will display. If it’s not quite right, a new developer can tweak their code in numerous ways, discovering how different elements appear and how minor changes to their code can affect the layout. Nothing crashes. There are no cryptic error messages.

As more and more developers work in both worlds, the difference between developing desktop and web applications becomes stark, rather embarrassing and incredibly frustrating. We want to be able to create a window and place an input within it as easily as we can make a new page and insert a table.

It’s here that XAML was intended to shine. And it’s here were some of the most frustrating oversights and poor design decisions impede the platform. More on that later.

We're hiring!