With the announcement of Dashboard in Mac OS X 10.4 Apple, like many other companies, seems to have gone for a standards based approach. Dashboard is said to be based on HTML, CSS and javascript. A webpage in all but location. Microsoft tried something similar of course back with windows 98. You could display bits of webpages or activeX controls or java applets on the desktop. It didn’t prove all that popular then, but those pagelets were slow and clumsy. I very much imagine that dashboard is neither slow nor clumsy.
More importantly though, dashboard objects have two interesting features. The first is that they use interpreted, not compiled, languages. The second is that they are essentially cross platform. I know that there doesn’t seem to be any particular other platform that can they can actually be moved to at the moment, but I feel fairly confident that before next year’s release of Mac OS X 10.4 someone will develop a suitable runtime for linux and quite likely windows as well.
The dashboard concept seems to fall very much into the current fashion for application development. You write the interface in html, xml or something like it; then write the code in javascript or some kind of interpreted language. Then you provide libraries written in C or Java that provide the core functionality to the system. Mozilla’s XUL and Microsoft Avalon (windows xp next generation user interface) both use this approach. The Apple iTunes store also uses xml to describe the interface.
It’s easy to see why this approach is popular. Building user interfaces from xml makes it much quicker to produce interesting results than having to change C++ code and rebuild. Multiple tools can be written to access the format and the result can be modified without rebuilding the main application. (Given modern build times always an advantage).
One possibility is that dashboard may be something more than just a widget system. I have no inside knowledge whatsoever, but what if in future you could write whole applications using the dashboard system. What if you could create windows that were written in html/css/javascript and then tied to cocoa applications, much as we currently tie interface builder nib files to cocoa applications?
Alternatively there is this mysterious business with Mozilla, Apple and Opera. The three have decided to work together to improve plugins, but what if they are actually considering a future application development and deployment system to compete against Microsoft’s .net? Combine the open .net implementations with something like dashboard and you have a cross platform development system that might offer developers a good incentive to develop for.
I have no knowledge of the future though, so I guess I’ll have to wait and see