Philosophy
Uncle Unc is based on the simple observation that much of the time we spend with computers is spent organising and categorising data, pushing data from one box to another, and invoking actions on that data. Arguably, we ought to spend less time doing this sort of thing and get out into the fresh air more! At the very least, we should be able to do it efficiently and effectively. The more energy we expend on wrestling with the user interface in order to get these low-level jobs done, the less we will have to deal with the high-level problem-solving tasks that can make the difference between work and gainful productivity.
Let's call this low-level categorisation activity as 'stamp collecting', at the risk of offending philatelists. Most user interfaces attempt to represent stamp-collecting activities for a single type of data, such as a mailbox, a filesystem, a relational database, a network of computers or a music collection. Uncle Unc provides a framework that makes it easy to interact with any data source at this level.By doing it once, we can take the time and effort to do it well, so that it doesn't intrude on the user's activities unduly.
Computing is a rapidly changing field, full of powerful new uses for computers such as digital multimedia, realistic graphics and artificial intelligence. And yet much of the time that we use computers, we are performing essentially the same stamp-collecting tasks that we did twenty years ago.
Even when dealing with the new high-powered uses of computers, this is the case. How much of a digital music player program's code is devoted to playing the music, compared to sorting through and organising album playtracks (and which does the user spend most of their time doing?). 3D graphics and neural network designer applications have a similar requirement to present their internal information in a useful way to the end-user.
There is currently little cohesion in the way that software developers address these tasks. Each application codes its own listings widgets. Some have sortable fields. Some have filters. Some can divide the results into pages. Most do some things quite well, some badly, and some not at all. Most will present the interface in a single medium - as a desktop application, or a HTML web interface, a java applet, a flash movie, or whatever. Most will run on a limited number of platforms, Operating Systems or browsers.
This situation restricts the exposure of the application behind the interface, by tying it to that interface. It also limits the exposure of a front-end to a single application. The proverbial wheel is frequently re-invented, and often under tight pressures of time and resources, with less than desirable results.
The Trouble with Widgets
Widget toolkit design made great advances in the 1980's, but has advanced little beyond then. The basic set of tools - textfields, drop-down lists, push-buttons etc. - have only gradually been augmented with items such as tables and trees, but the emphasis is still strongly on low-level interactions, that is, interacting with a single property or method of the application.
At the same time, the much bigger breakthrough has been in tools for assembling these components in an intuitive ad hoc fashion. The result has often been that user interfaces have been slapped together quickly in a way that restricts the ability of the user to fully exploit the underlying application processes. This issue is explained further with great eloquence by Pawson & Matthews in their book Naked Objects.
Uncle Unc is an attempt to create a set of higher-level widgets designed for structured data sets, that allow a much greater degree of flexibility in matching clients to services, while at the same time, providing the maximum expressiveness and flexibility to the end-user. We are using these widgets ourselves to create sample ready-to-use javabean components with a common look and feel, and a desktop application and web server application that can navigate between heterogeneous data sources.

