Object[1] - something containing data, stored either by ObjectKit or DataKit. These represent data in the system, i.e. parts of documents. They are maintained by the environment.

What about 'Content'? We are already using the term Object in a programming context -- it would be good if we didn't have to always differentiate between the two when talking to others or explaining things.

Component - something which manipulates objects. A component either transforms the object, or provides a view of the object. Components each exist in their own address space, and may present a UI.

Filter - a component which has no user interface of its own. Filters transform one object into a different object (or the same object, in the case of the null filter).

What do we call Components that do present a UI then? If I said Filter, you would know exactly what I meant, but if I said Component, you wouldn't know whether there was a UI or not.

Right now it looks like:

Component
          |
         / \
Filter   ?

Component seems like an abstract, which is used as a term for both Filter (without UI) and ? (with UI). The big difference between the two (in my mind) is that the Filter uses a pre-defined value to modify the content somehow, while the ? lets the user enter their own values and interactively modify their content (ex: Photoshop filters, OS X Font selection), or even to change the mode in how they interact with content (ex: Photoshop tools palette). We should probably give the ? a name so that it can be differentiated from Filter in a concrete way. Ideas: Palette, Module.

Widget - a widget has its own internal state and UI, but does not interact directly with objects. A clock or a CD player would be an example of a widget. These are things that don't really fit with the component / document model. They could be called applications, but I don't want to call them that, because it would engender confusion with application-based environments. Unlike OS X, there is a clear use for widgets[2].

If we were looking at the Project-based Desktop or Narcoleptic Electron's proposal, Widgets would be things that existed outside of any projects, perhaps in a shelf like space -- like Dashboard. I just got Alex's email and he proposes Applet. I think that might be a better term. Additional ideas: Utility, Desktool.

Application - a program from a legacy environment. I would suggest that GNUstep applications run in Étoilé run with the old GNUstep theme, not Nesedah, to provide a visual clue that they are not full members of the Étoilé environment.

There is some validity to this (things that work different should appear different), but I would personally rather design a new theme than use the GNUstep one. Something that was a bit more integrated into Nesedah (just as modern), but maybe using a different color. Or, maybe not...

Since we are the designers of this system, we can say what can happen and what can not. As such, maybe we don't want legacy applications on the system at all, to make things easier on the user. Imagine you get used to making a new Document via the Workspace, then you make a new Document to edit images and realize, "Oh, wait, I can't do that, I need to start Gimp (or whatever) to do that". The user has to switch contexts in their mind and backpedal, and has to remember what can be made via Workspace and what requires an app. It seems like a lot of extra work for the user. I would use use legacy apps maybe as a temporary solution, but by a 1.0 launch, all support for them should be gone, having been replaced by Components.


J.

Reply via email to