I’m getting better at inflammatory titles, don’t you think?
I know that I will probably get some flak for saying this, but I really do not think that proprietary plug-ins like Flash and Silverlight are the future of the web. While I do believe that they have their place in the Internet ecosystem, I don’t believe that they are going to be the future solution for developing web interfaces. Adobe has made some big strides with Flex and their recently introduced AIR, which takes web application back offline. Microsoft has put a huge amount of work into silverlight, even creating a mini-clr that they are building into Silverlight 1.1. The tools will most certainly be there to create these rich internet applications, but are people going to accept more closed formats at this point?
One the problems is that they are trying to bundle the display technology together with the back end programming model. This approach allows to them have a richer, more integrated development experience but this is also what holds them back. HTML had many reasons for succeeding and one of which was its simplicity. The HTML spec merely defined a document and how it was to be displayed (this has now been superceded by CSS but the spec still lets you defined visual style in HTML) it was not tied to any back end technology and it didn’t require any fancy tools in order to create it. At the time HTML pages were all static, but it was quite easy for computer programs to generate these simple files. (Parsing and rendering them is a completely different story) Since it was so easy to render these files it was no time before it was happening everywhere and since HTML was just a file spec, anyone could do it. HTML cemented the trend for an open, interoperable internet and now it seems like companies are trying to reverse that. But don’t be fooled, these closed standards are far from the only competitors on the block, check out some of these open and closed options below.
XAML: Microsoft has made XAML a standard, but it is anything but open. If Microsoft completely controls a standard then a large portion of the developer world will never embrace it, no matter what. And you may be asking, but I thought you just said that Silverlight is not the future of the web, well, XAML and Silverlight are not one in the same. In fact, XAML can be used without any supporting back end technology as it already has been with eFace. XAML is merely a way to represent interfaces, or really any vector based objects using its XML based markup. Microsoft has invested considerable resources making sure that XAML has everything it needs in order to build rich interfaces. Considering it is the display technology behind Vista, lets hope they got it right.
XUL: Some of you may have already heard of XUL. It stands for XML User Interface Language. It is a standard that was developed by Mozilla and has been implemented in Firefox. While the XUL Spec is open, its only full implementation is in Gecko (the rending engine for Mozilla browsers, including Firefox). The XUL 1.0 spec was created in 2001 and as of now it appears that XUL 2.0 is still on the drawing boards. Whether or not this will ever catch on outside of Mozilla is still waiting to be seen, but currently there does not seem to be any push to make this happen.
SVG: SVG stands for Scalable Vector Graphics and does pretty much what it says. It is an XML based format that is designed for displaying 2D graphics in vector form. The original draft of the 1.0 spec was released in September of 2001 and the 1.1 spec was released about 2 years later. While Opera, Gecko, and Safari (in Safari 3) all have support for SVG, Internet Explorer does not and it appears that Microsoft has no plans to support it. This could be a significant stumbling block for this every becoming a valid platform for building interfaces.
SMIL: SMIL stands for Synchronized Multimedia Integration Language (with a sexy name like that, it is amazing it hasn’t caught on </sarcasm>) It is XML based and is more of a complementary technology for HTML or SVG. It allows you to define animations, shapes, timelines, etc… It is very similar in this sense to something like Flash or Silverlight. As of current writing SMIL has been integrated into Quicktime, some other lesser known media players, and (according to Sonic Solutions’ white paper) forms part of the engine that drives HD-DVD’s menu system. According to what I can gather from several searches, Gecko also supports a good deal of the SMIL 2.1 spec.
Canvas element: This is probably the reason why Safari didn’t get support for SVG until Safari 3. Apple decided to implement their own way of displaying vector graphics and included the Canvas element into Webkit (which is the project behind Safari). The canvas element has since made its way into Gecko and Opera but has no support in Internet Explorer. Since the canvas element is now part of the HTML 5 spec, Microsoft will most likely support it in a future version of IE, even though they are mum on supporting HTML 5 currently (Come on Microsoft).
CSS Transforms: The latest entry (and the post that sparked this post) is CSS transforms from Webkit. While I have not played with them yet (I’m not in the habit of downloading Webkit nightly builds just yet) it appears that they allow you to transform (scale, rotate, etc…) other html elements using CSS. While this may not have the full 2D drawing capabilities of some of the above solutions, it may end up being part of a larger picture. As history has taught us, people are more likely to accept technologies that build on what we already know that those that completely throw away everything we have done before. Unless of course your old technology sucked and you are dying to get rid of it. For example COM and ASP classic. (before I get yelled at, this is *mostly* a joke)
Also, before I start being accused of being anti-Flash and anti-Silverlight please keep in mind that I believe that these technologies definitely have a place on the web. Just look at YouTube, none of that would have been possible without Flash (or a similar technology) because audio/video plug-ins/codecs are currently not standardized in the browser. Creating a cross platform solution for audio and video was hard enough the likes of Adobe and Microsoft it may be a while before we see a cross platform open standard emerge. (And yes, I do realize that Adobe opened up the Flash spec, but they explicity state that you cannot use it to create any competing free technology. So I would not really call this an open standard either.)