XAML – the next big thing?

Microsoft has finally introduced their vision of next generation tools with the release of Vista. Included is a rework of fundamental Windows development called .NET Framework 3.0. A significant part of this framework is the visual development toolkit called Windows Presentation Foundation, WPF. For those involved in the XML world, and especially SVG, this release represents a next generation development technology. WPF includes xaml which is the declarative graphics XML equivalent to SVG in Microsoft’s scheme of things. However, xaml has much broader ambitions than just vector graphics.

    As the visual basis for MS Vista, WPF has a very good chance of success in the market. Despite the growing restlessness of Microsoft users, Vista will realistically be the OS for a majority of desktop/notebook users within a couple of years.

    Microsoft has learned from the previous generation of XML graphics and expanded it in several useful ways. Some would claim a conspiracy of “extend and embrace,” while others would see it as a logical and clear sighted advancement of the graphical interface. Without a doubt declarative xml graphics, whether SVG or XAML, is making the next generation of webservices easier to build. Perhaps unintentionally Microsoft is setting the stage for the eventual demise of the local OS as the dominant software platform.

    From an interface developer perspective the most visible addition is a complete set of graphic widgets. From buttons, menus, and tree lists to dockable panels, toolbars, and shape canvases, xaml includes every commonly used interface gizmo and widget known to developers. 2D vector graphics is a seamlessly integrated part of this larger tool bag. These widgets and graphic controls are interchangeably and recursively nestable in an object tree. This provides a much more comprehensive interface capability than previously possible using combinations of html and svg.

    Microsoft intends developers to use xaml for both desktop applications and online browser web applications. The earlier w3c graphics standard, SVG, was intended primarily for an online world. SVG was developed to fit into a constellation of public standards including xhtml, fop, and css. In contrast Microsoft seems to have ignored the world of standards and developed a much more integrated but proprietary interface resource.� Because of Microsoft’s ubiquity in the OS market they have the luxury of setting defacto standards determined by need and efficiency rather than committee based standards bodies. Vista may represent the last opportunity for a single company to impose such a comprehensive vision.

    This has a down side. Many eyes can help to see a larger spectrum of potential pitfalls. Microsoft employs many eyes, but it is a larger world out there, and open standards bodies benefit from a larger audience. On the other hand Microsoft can move across artificial boundaries and scope limitations of public standards to integrate tools and schemas across much broader segments of the development world. For example abandoning css in favor of an xml based Resource Dictionary puts style definitions on a proper xml footing but leaves css stranded in a backwater.

    Abandoning javascript for C# is even more dramatic. It effectively cuts off the large world of javascript development. Many would say it’s about time that a new and modernized development language is made available for client side web development. It will certainly allow development of more complex client side interfaces to the Web 2.0 world. However it separates Microsoft substantially from the open world. The risk is that xaml/C# will forever remain a separate subset of the larger internet community. Apparently the risk perception is high enough for Microsoft to introduce a scaled down WPF known as WPF-E which makes javascript available for xaml interaction but does not allow hardware acceleration.

    Developers have much more capability with xaml/C#, but their audience may remain a smaller subset of the world at large. C# CLR has been released to a standards body, however, it lacks presence outside of Microsoft Windows/Vista. Mono holds some promise but Java is apparently too entrenched for any large migration to C#.� HTML, CSS, javascript will continue to have the advantage of shear numbers for a long time to come, but xaml/C# has a strong advantage in technical capability. Perhaps C# as a client side scripting language will have a beneficial side effect of increasing momentum for the open source Mono C# compiler project. C# as a client scripting engine makes sense and if adopted outside of Microsoft would provide some incentive for C# adoption on the server side as well.

    Bridging this gap will keep many employed over the next several years. Javascript has already been migrating to a more abstract level with framework tools such as dojo. The advantage of such tools is their ability to encapsulate the differences between a variety of browsers, IE, Firefox, Opera, Safari , etc while at the same time providing more sophisticated controls than the increasingly antiquated html. Dojo for example has been gradually supporting svg in its widget library and has the architecture to eventually support many interface controls in either svg or xaml with fall back to html.

    From a user perspective there will be a big jump in interface capability. Eventually users will find it difficult to recognize the difference between an online webapp and a desktop application. In addition dynamic interaction based on DirectX is much faster and more responsive. For the first time developers can take advantage of hardware graphics without deep pockets and specialized tools. WPF is built on DirectX which makes use of the client GPU to power graphics interaction. A variety of media can now be incorporated seamlessly into the interface including audio, video, and 3D graphics.

    Vista pushes the hardware envelope by requiring a lowest common denominator graphics processing unit� in order to take advantage of the power of WPF. This is not unlike previous major releases of Windows. GPU capability has been substantially commoditized and with Vista will become just another integral part of every computer. Does anyone still remember FPUs? For those of us struggling with the promise of SVG this affords two major enhancements, 3D graphics and hardware acceleration.

    The impact for web applications is substantially for the better. As a long term proponent of svg, I am glad to see the promise of declarative xml graphics take the next step, but I’m sorry to realize that svg may be left behind. Since Adobe abandoned svg in favor of flash there has been no powerful technology backer for svg. It is increasingly adopted in the open source community and in combination with xul will be the most obvious way that open source can offer anything close to the capabilities found in WPF xaml.

    The comparable ease of �incorporating controls, styling, and client side scripting make xaml a viable choice over svg, while the addition of easily incorporated media, 3D, and hardware graphics acceleration makes xaml a clear technology winner. It only remains to be seen if globalization and a rising Microsoft xenophobia inhibits Microsoft’s ability to dictate defacto standards just one more time.

    Sample xaml port of svg OWS interface

Posted in WPF