Here’s an expansion of the idea of extensions for the UI. Basically, you start with a clean UI. I think we can keep BeOS’ default look and behavior for this, because it’s very simple but unique (although certain things should be changed). However, the combination of themes and extensions could set it up so that it can look (and act) like any operation system GUI out there. This would make Haiku the most flexible GUI out there.
The core OS has a default behavior, and extensions add options to that behavior. These options, once installed, would override the default behavior. Deciding which behavior should be built-in and which behavior should be available as an extension should be determined with the following questions:
-
Does this feature create no noticable hit to the basic performance of the GUI?
-
Does this feature add easily recognizable benefits to the end user?
-
Is this feature within the limits of an accepted end user experiences and does not radically diverge from what most users would expect?
If you can say ‘Yes’ to all these questions, then you have a UI feature that should be added as default behavior. If you can’t say ‘Yes’ to all of them, then it’s best if this feature is available as an extension.
Here is the first picture, it’s a mockup of the system preferences window. I really like the Apple system preferences for Mac OS X, and the way it cleanly stays within the same windows, so I modelled it after that.
Now, in picture #2, let’s say we downloaded a plug-in which has a series of effects for minimizing and maximizing windows. This creates an option called ‘Window Effects’ to System Preferences->Desktop.
If you click on it, you get the settings for this plug-in, but you don’t necessarily know that it’s a plug-in. It might be good for plugin sections to have like a certain outline or subtlety that differentiates them from built-in system preferences. On the other hand, it might be better to make the whole thing seamless to the end user.
Also note, that the idea is if you clicked on ‘Behavior’ to manage extensions, chose the ‘Minimize/Maximize’ extension, and clicked ‘Configure’, it would take you to the same window.
Now in the fourth, let’s say that we downloaded another plug-in for drop shadow effects, which also puts it’s configuration in System Preferences->Desktop->Window Effects. These options will show up in the same section where the genie effects are.
So this is what I mean about an extensions based UI. The main obstacles are: How do you create a really clean way to manage a lot of extensions, as some desktops will eventually include. Also, how do you balance security concerns? Keep in mind that users downloading and installing extensions isn’t much different from people downloading utilities like Desktop Manager or Quicksilver. This just streamlines the process.
Also, should extensions use the scripting language, or should they use the Haiku API? Or maybe both? Simple extensions could use a built-in scripting or extension language, and more complex or performance oriented extensions could use the Haiku API.
That’s it for now. I’ve got a whole lot more ideas, so they’ll come with mockups and descriptions in the near future.