Under The Microscope

Dashboard In The Sky With Diamonds

There is a growing belief that Tiger’s Dashboard is a desktop software development platform that is “for the masses”.

From Dori Smith:

“It’s about all of us, programmer and non-programmer, scripter and non-scripter, being able to, for the first time, create little useful applications on our own Macs, using simple code and markup (i.e., HTML, CSS, and JavaScript; i.e., not AppleScript) that we probably already know something about, and then being able to share those widgets with anyone who has Tiger.”

From Daring Fireball:

“Do you see how huge this is? How it opens the door to gadget development to anyone with web design experience? Indeed, I’ve read the preliminary Dashboard developer documentation (generously provided by a source attending WWDC), and it is outstanding from the perspective of making gadgets easy-to-create.”

But alas, I am afraid it is not to be. The confusion seems to start when people first hear the Dashbard gadgets are created using standard web page technologies: HTML, CSS, JavaScript. Now I can argue that HTML, XHTML, CSS1, CSS2, CSS3, JavaScript, and the Document Object Model, are not light-weight concepts that most people are going to be able to learn in-depth. But there’s an even more fundamental problem here – as far as desktop software development goes, those things only get you half-way.

Here is an example to illustrate. Let’s say you keep a personal TODO list in a file on your Desktop (I know you use iCal, but I’m trying to keep this simple). Now, you want to throw together a Dashboard gadget that will display this TODO list file nicely. If Dashboard is really this great development platform, it shouldn’t be too hard, right?

So to make this gadget, we start with a web page with some JavaScript. This JavaScript has to read the file, and then dynamically generate the HTML to display it. To read the file we…fire up XCode and start coding a Cocoa plugin for our Gadget.

What, did I lose you there? Ok, I’ll slow down. First thing you have to know is, JavaScript has no way to access your hard drive. And this is actually a Good Thing™, otherwise when surfing the web, you’d have to worry if a website was poking around in your files. So now our TODO gadget has hit a snag already, namely, how do we access our TODO file? Or, how do we ask iCal for it, or maybe read it from Mail, or off the web, or any other way? There is one and only one solution: a Cocoa Gadget plugin which will give our JavaScript access to these things. This is how the Address Book and Stickies gadgets work, they delegate their “backend” work off to Cocoa.

As I was saying, HTML, CSS, and JavaScript are only half the solution when it comes to desktop software. They’re the “frontend” half, that lets you throw content up on the screen. What Dashboard is missing is the “backend” half. Easy access to your hard drive, a way to execute AppleScripts or shell scripts, ways to download and parse data off the web, database access, and so on. In short, everything that makes a “rich development environment” like python, or Cocoa, or RealBasic, “rich”.

Now, I’m not trying to be critical of the design of Dashboard (I think it’s just right), I’m merely trying to point out what it is and what it isn’t. It is certainly possible that Dashboard could become a rich development environment, either through changes by Apple, or from plugins by 3rd party developers. But currently, out of the box, Dashboard is only half of the dream.

Our Software