One my talks at last week's symposium was an overview of Naked Objects. If you haven't played with them yet, Naked Objects are worth a look. The ideas aren't totally new: graphics systems such as ThingLab (and Lemmings) have exposed business objects up to the client in the past. You could even argue that the original airline reservations system architecture of adding and manipulating travel segments in an agent assembly area is a form of naked objects system. But Richard Pawson's Naked Objects is a brave attempt to do this in commercial applications. And it may be an idea whose time has come: the talk seemed to be well received.
After the talk, Erik Hatcher said I should look at Spring. It's an interesting idea. Imagine a series of panels, each containing a number of images. Each image represents some kind of resource or object: a person, a place, a thing, and each image has a set of built-in behaviors. Drag a person to a restaurant's image, and the system might offer to invite them to dinner. Spring is also not bad as a drop target: you can drop an RSS feed's URL on a panel, and Spring will show the feed's image, updating the headlines behind the scenes. You can drop items from Amazon's store onto a panel, and Spring will keep it there so you can buy it later. Associate that item with one of your buddies, and Spring will offer to send it to them over AIM. For me, one of the most compelling Spring examples is the Kansas City portal: imagine a panel containing an area map, live weather feeds from major surrounding cities, live stock quotes from local companies, and a selection of local restaurants. Is Spring a Naked Objects system? In some senses, it certainly is. Each object is identifiable, and has behavior that can be invoked by the end user. Although I found this version frustrating to use (the set of interactions could be richer, and the system really should be better at giving visual feedback of what interactions are supported), the idea is is excellent, and could well show us the shape of desktops to come. And I did like Spring's "suggest an action" feature: link two objects that don't know how to interact, and Spring will invite you to tell it what you expected to happen. This information is then sent on to the developers for consideration in the next release. Ultimately, Spring and Naked Objects overlap some, but are really oriented at different user domains. Both are definitely worth a serious look.



Comments