Is "component" a misnomer? Is a higher level term needed?

Colin Clark colin.clark at utoronto.ca
Wed Sep 19 19:17:49 UTC 2007


Hi all,

I agree with Daphne's comment that there are two separate threads to the 
discussion:

1) From the technical perspective, what is the scope of a reusable 
component?

2) From the UX walkthrough perspective, how do we best ensure that the 
results point to meaningful design solutions for our users?

I think having both discussions is productive. I've spent a lot of time 
talking with people about components from both the user perspective and 
the technical perspective, and particularly their relationship to design 
patterns. This is one of my favourite topics! :)

Here are some thoughts on the technology side, prompted by Antranig's 
post last week.

Antranig's response sums up an ongoing conversation that he and I have 
been having since well before the Fluid Project started. I'm thoroughly 
enthused by the notion of self-contained, reusable chunks of user 
interface that can be easily adapted to suit the various interaction 
patterns that we see in lots of places throughout an application. 
Manipulating files and content is a classic case, common to all kinds of 
applications, especially on the desktop. Imagine how frustrating it 
would be to work with content without the embeddable components within 
desktop GUIs for loading, saving, picking, and manipulating files!

In my thinking, the Fluid conception of a component specifically makes 
an attempt to correspond more closely with the kinds of workflows and 
activities that users engage in while using our software. This will 
naturally be at both the smaller and larger scale, from calendar pickers 
to file viewers on up to larger-scale multi-step wizards and flows. 
Thus, components aren't just widgets, but larger assemblages of UI 
behaviour.

It seems to me that the way to achieve this from the technical 
perspective is with cooperating client and server-side frameworks. On 
the server, I envision the ability to easily address chunks of service 
logic and markup-generation capabilities independent of the current 
boundaries for a portal or a tool.

On the client, we can take advantage of the flexibility and late binding 
of JavaScript to build richer user interfaces that can directly 
query--through the "open URL space" of an application--all of the logic 
needed to enable useful interactions with the system, without requiring 
users to break out of their current workflow to do some related but not 
co-located task.

I will be honest in saying I've essentially given up in coming up with a 
more suitable terminology than "component" on the technical side. While 
I think it's entirely worthwhile (there are so many preconceptions about 
what a component is), I just haven't come up with anything succinct and 
coherent enough. "UI Unit" is just about as good as I can get, and 
that's not very good. :)

> ii) The permissions system similarly has a single "one-size-fits-all"
> view full of a huge heap of tickboxes. These cannot be placed
> "close to the tools", unless the tool defines within itself a
> completely custom view, which once done, conversely cannot be
> dispatched back to a central location!

The issue of permissions seems in some ways similar to the problem of 
where to locate preferences, something my team has been talking a lot 
about recently. There are so many cases where the "Control Panel" or 
Wizard approach to specifying preferences is really inconvenient. Such 
preferences might be best stated directly in context of the work the 
user is currently doing, so that the effect of the preference change is 
immediately visible.

Colin

-- 
Colin Clark
Technical Lead, Fluid Project
Adaptive Technology Resource Centre, University of Toronto
http://fluidproject.org



More information about the fluid-work mailing list