Evolution of user interfaces in Haiku and other Operating systems

Blog post by PulkoMandy on Sun, 2010-06-20 16:11

This blog post talks about the changes that have been hapenning in recent versions of others Operating Systems, and wether Haiku should copy them or not.

A long time ago, in 1984, Apple designed the user interface of the Macintosh. This was not the first one, (the first was at Xerox PARC) but it was widely known and set the standard for many other OSes. Amiga Workbench and GEM borrowed the menu at the top of the screen, everyone started to use cursors and icons, and titlebar for windows with buttons to close and resize them. BeOS, of course, also got a lot of inspiration from this user interface being created partly by former Apple employees.

However, each of these systems grew up its own way, keeping many differences with the others. Amiga had a system of screens, where each application had a desktop on its own and windows inside it ; GEM kept single-task and most applications ran full screen instead of using windows, mac tried to integrate some multitasking while keeping the GUI as simple as possible.

In 1995, there was a new version of Windows, introducing a bar at the bottom of the screen, and allowing to switch between applications more easily. It also included a start button to run more apps, without having to find the "Program Manager". Most modern Linux Desktop Environments are based on this layout (Gnome, KDE, XFCE and LXDE, at least). The deskbar in BeOS and Haiku is also somewhat similar.

In 1999, Apple released Mac OS X, featuring a big update to the previous UI : the dock. It allowed to see all the available apps, and lauch them by a single click, or raise an existing instance if there was one. Note the dock had been available for several years in NextStep.

Finally, we now have Windows 7, which borrowed the dock idea from Mac OS X, but also brought in some other changes.

Over all these years, we can see that Mac OS and Windows have changed a lot, while Haiku is still really near to the old BeOS. Should we get some of the ideas from other OSes, or is it better to keep going our own way ?

Document-Centered interfaces
An important change in the way we use computer is that there is now a lot more multitasking. In the first days of the Macintosh, it was not possible to run more than one application at a time. It is now common to have a lot more. At the beginning, people used computers a bit like typewriters : only one document at a time, and the others available on the desktop for reference. But now, most documents are inside the computer, and you often have more than a single one open at a time.

This creates a distinction between an application, a window and a document. An application may have multiple windows open at a time, and each window can show one or more documents. For example, in a word processor, it is common to have one separate window for each document, while in a web browser, it's more common to use tabs inside the window.

To the user, it makes more sense to have a document-centered interface, where a window is bound to a document. However, this can quickly get messy on the desktop if one opens a lot of web pages. Fortunately, we already have a solution for that, one that most other operating system are missing : it's Stack and Tile. Stack and Tile will allow to stack a lot of windows to make them part of the same frame, and act like tabs. This allows each window to still be a document, while having the tabbing to keep them in a manageable order.

The other part of this is the adoption of the dock system. The dock is a fusion of the deskbar with launchbox. It hides the difference between a running application and a not running one. This distinction is not really important anymore, and it will disappear in the future. Applications are launching really fast in Haiku, so it doesn't matter if you have to load the app from disk or just raise a window. Moreover, we're going to a system where apps are always running. PalmOS has been doing it for years, when you quit an app, it's just snapshotted to disk, and you can reload it later to find it exactly like you exited it, even if you rebooted the computer in between. Speaking of rebooting, this also means that shutting down your computer will be the same thing as putting it in "deep hibernation" state.

The end of the Title and Menu bars
In windows 7, Microsoft decided to rework a lot the way things are working. The most important changes, apart from the adoption of a Mac OS X similar dock, is the removal of menus and, to some extend, of title bars. The idea behind the removal of menus is to give more exposure and easy access to the features of an application. You can immediately see what you can do. It makes the app easier to use if you're not at ease with a mouse. And it is also a lot simpler when you use a touchscreen, which is becoming more common every day. However, menus are still much more simpler to use so, I don't think this is a feature we should keep.

The other part of this change is that it allows applications to play a little more with the title bar. For example, the Opera web browser chose to draw tabs inside the title bar itself. This somewhat reminds Stack and Tile, and gets back to the idea that a window is a document, but that windows can be sticked together.

Features that got lost over time : Amiga Screens
I find the Amiga really interesting, because they really developped their own system about the same time the Macintosh was being created at Apple. The two systems are similar, but still different. And the guys at Commodore didn't always copy the features from Apple. One of the really interesting things in the Amiga is the screens. They are a bit like Haiku's workspace, but pushing it further, you can grab a screen and move it to see the one behind. An application usually runs in its own screen, but it is possible to move windows from one to another. Screens have an user-defined name and it is possible to cycle through them with a small button at the top right of the screen. This button is sometimes much more practical than the workspace switcher : it takes a lot less space, and allows you to reach your target easily. As apps always open in their own workspace, it's easier to make use of the feature : you don't have to think about it and decide where to put the windows yourself. The ability to split the dispay and see multiple screens at a time allows you to quickly navigate from one application to another, without having to endlessly switch workspaces. It is also possible to keep a small screen always on top, with some status info, and use the rest of the display space for the app you want to see.

Overall, Haiku has the chance of being a fully integrated system, so it can move a lot faster than most others, particularly UNIXes with a lot of different graphical toolkits. So, it's time we switch to a document-centered intreface and see where it brings us.

In the end, we're left with two things to look at : Smalltalk and NextStep. They already did most of what I'm talking about.

Comments

Re: Evolution of user interfaces in Haiku and other ...

Apple is not the original source of GUIs, Xerox was. Please read about Alan Kay's work in original Small-Talk 80 books to get an idea what was developed at the start. Notice also that Apple was porting Small-Talk to the 68000 before 1984 according to their own research paper included in the book.

Modern GUI-OSs are still missing features found in the original Small-Talk.

The feature I would like to see most in modern GUIs was it's use of MIME types to not only record what type of file you had on the drive but ***SEPARATE*** MIME value/pointers to the file's Creator program, it's Editor program and it's Viewer program.

I find 'Open With' too messy if I have a large number of programs on my drive all that can handle the file's MIME type.

Re: Evolution of user interfaces in Haiku and other ...

Quote:

It hides the difference between a running application and a not running one. This distinction is not really important anymore, and it will disappear in the future.

No, no, no, no, no!! This is still important, and one of the weaknesses (in my opinion) of the OSX and Win7 user interfaces.

A UI should show you what's running without needing much investigation.

Quote:

Apple is not the original source of GUIs, Xerox was.

If you're going to correct PulkoMandy on this, I'll correct you by pointing out Xerox Parc's work on the UI was directly inspired by Doug Engelbart's work at Stanford Research Institute. In fact, the people who worked on the Xerox Alto computer worked under the direction of Doug Engelbart first.

Re: Evolution of user interfaces in Haiku and other ...

Right now, it's just about making it visible or not, but the long-term goal is to totally remove the notion of a "running" or "closed" application. This will be done by snapshotting the application RAM to disk when closing it, so when you launch it again, it will be in the exact same state you left it last time. Some apps already started doing it : Firefox saves your open tabs, Open Office is able to "emergency recover" a document (to the point that I know people that kill the process instead of exiting properly just to benefit from that feature). PalmOS and Smalltalk have been doing the same for years : on the Palm there is no hard disk at all, everything is stored in the RAM, and the only way to have a long-term backup is to sync the device with your central computer.
In the case of modern computers with internet connections, this permanent backup will likely be somewhere on the Internet, the "cloud", as they say. So you can pick any computer anywhere and find your workspace exactly like you left it, even if you're hundreds of kilometers away.

I'm not saying we should do the same ; I'm just trying to figure out what's happenning to other systems and why they decide to make such big changes to their UI design, to decide if we should do the same or not.

As for who started the whole GUI thing, it was possible to display pixels on the PDP-1 long before the Xerox PARC experiments... and we can move back like this for a long time. I thought I was clear enough when saying that Apple were not the first to make GUIs, but theywere the first widely known computer. It's still all about communication ;)

Re: Evolution of user interfaces in Haiku and other ...

I dislike this idea of saving application states...its handy for somethings but in most cases you just want the application to come up into a *known* good state not the previous one which may be that you screwed something up...

I also feel that the dock in Mac OS X is a terrible idea... personally I run KDE3 most of the time and have a launch bar dock that autohides and a task switcher dock... I find this highly optimal I can see where my apps are at all times and when I want to lauch an app I just snap up to my launch bar. Note that KDE3 is STILL awesome and stomps the living daylights out of KDE4.4+ I think KDE4.5 surpasses it in some real regards (not just bling)with improved window managmet. KDE3 is also still maintained by the trinity project for the latest debian and ubuntu releases.

Running apps and non running apps should be clearly separated ram and cpu ability are not infinite and never will be if fact if you look at a performance curve of CPUs for the last 20 years you will find that it is leveling off and doesn't even progress at the same rate as transistor count or Mhz.

While the haiku dock is nice (can drag to different locations/formats, has a tray,fairly decent menu,) I find it clunky in many ways mostly that its hard to acess if for instance an application is covering it although autoraise somewhat alleviates this. Acessing separate windows of applications is also clunky with deskbar as it stands. Those are the areas I would consider improving instead of hiding how your computer really works ala MS and Apple which really makes things confusing and difficult to explain.

A run dialog that auto completes integrated into deskbar might be nice.

Re: Evolution of user interfaces in Haiku and other ...

cb88 wrote:

I also feel that the dock in Mac OS X is a terrible idea... personally I run KDE3 most of the time and have a launch bar dock that autohides and a task switcher dock... I find this highly optimal I can see where my apps are at all times and when I want to lauch an app I just snap up to my launch bar. Note that KDE3 is STILL awesome and stomps the living daylights out of KDE4.4+ I think KDE4.5 surpasses it in some real regards (not just bling)with improved window managmet. KDE3 is also still maintained by the trinity project for the latest debian and ubuntu releases.

Have you used a recent version of OSX a lot? Coming from KDE3 I thought the OSX Dock was the complete opposite. Compared to KDE3 I feel that I have much more free space on my screen compared to KDE. I should mention I keep my dock to the left though. The OSX dock also autohides.

Apple is not the ori

Apple is not the original source of GUIs, Xerox was. Please read about Alan Kay's work in original Small-Talk 80 books to get an idea what was developed at the start. Notice also that Apple was porting Small-Talk to the 68000 before 1984 according to their own research paper included in the book.
Modern GUI-OSs are still missing features found in the original Small-Talk.
The feature I would like to see most in modern GUIs was it's use of MIME types to not only record what type of file you had on the drive but ***SEPARATE*** MIME value/pointers to the file's Creator program, it's Editor program and it's Viewer program.
I find 'Open With' too messy if I have a large number of programs on my drive all that can handle the file's MIME type.
frank verdin

Re: Evolution of user interfaces in Haiku and other ...

Take the GUI one step further. Forget applications. Make everything 'functions'. Say you have an 'index card' on disk. It shouldn't matter whether it's a file, a document, an email, a hyperlink, a game, a folder or cabinet of related things, or even a portal to the rest of our universe or even to another universe. When you wish to examine, view, open, print, erase, truncate, expire or do anything with that item, the system knows which function to load to work with that item. It shouldn't matter if the item is fresh or you made unsaved changes last year. Everything is stored and versioned. The system keeps loading functions into memory until it runs out; then it drops least recently used functions until there is enough memory. Saving changes is automatic and versioned. The longer something's been 'idle', the less CPU time it gets. Suppose you kicked off a full-monty build of Haiku, but then got distracted by something unrelated for a couple weeks. The build falls into the background and slows sheds CPU cycles as you demand them for your current task. When you later return to the build, it will have made some progress or even completed.

As to finding what you've been working on, that'd be a 3D view of your 'planet'. The surface shows when you are presently looking. Toward the core is the past, away from the core is the future. Nothing is ever deleted; everything is versioned. Your digital pictures? The originals are never touched. If you scale them or tweak them, the changes are stored as versions and forks; the commands, methods and functions (the 'undo' history) used to tweak them are stored.

Perhaps it's time to stop thinking of application silos and think more about functions that can be applied to something. Gamma/brightness/contrast/hue can be applied to pictures and movies. But if you think about it, they can be applied to *anything* visual, including text.

Most of these concepts have been present in one OS or another over the years: DOS, MacOS, VMS, TOPS-10/20, UNIX, Linux, and BeOS, for example, but never together. Much of the persistent GUI work started at PARC. A fellow student actually got one of those systems in the lab for testing/investigation back around '80-'82. So when the Lisa came out in '83, it was already old hat to me; I still have never gotten used to that stupid, ham-handed, single-button mouse.

Dare to be different. Dare to explore the unknown. Turn the UI on its side and flip it inside-out. Figure out where the UI needs to go. Then go back to 'the present' and start tweaking it a little at a time so that people can learn it and get used to it. You've the opportunity to define the true next generation of virtual HCI and blaze the trail that gets there. So get to it!

Re: Evolution of user interfaces in Haiku and other ...

Great post PulkoMandy. I'm not sure if anyone on OSX is confused whether an application in the dock is running or not, it's incredibly easy to distinguish running applications from not running applications.

I'm actually working on something similar to the OSX dock and also an "Activity Monitor" (the name of the app in OSX), meant as a replacement for the current Deskbar which I'm personally not very fond of. When or if these two apps will be done I do not know.

Re: Evolution of user interfaces in Haiku and other ...

Well, semplicity *must* be the key, IMHO.

SkyOS look&feel could be a good starting point:

http://www.skyos.org/?q=node/404

And last but not least Robert Szeleney (the SkyOS' "coding-machine" author), which has already caught "something" from Haiku (OpenBeFS), should be in our developers' team...

Re: Evolution of user interfaces in Haiku and other ...

Why not take a look at the idea of Sony's XMB (cross media bar)? One of the most original ideas for a GUI; it's clean-cut, straight-forward, and intuitive. My parents, who have never used that type of GUI, navigated it their first time to watch a movie.

Even the main developer from SkyOs was seriously considering the XMB.

Just throwing the idea out there.