Fog Creek Software
Discussion Board

GUI design (Linux)

I have been thinking about how to design a GUI for Linux. I know you're all microsoft people so you probably don't care, but this is what I thought:

Why not have multiple modes for the GUI, depending on the different types of user?

1. a mode for people who only ever use their computer for word processing.
2. a mode for people who only ever use their computer to play games
3. a mode for people who only ever use their computer to surf the net and send email and chat etc...
4. a mode for computer programmers
5. a mode for system administrators
6. a mode for graphic artists
7. a mode for musicians
8. a mode for business people

So the layout of the desktop and what features are available depends on what mode you're in. Then you make your imaginary characters and get designing. Things irrelevent to your purpose are invisible so that they're not distracting.

Of course there should ALWAYS be abuser mode. IE the shell (or X with 4 x-terms running on on of the virtual desktops, and documentation open on the other 3)

Friday, November 21, 2003


I am a musician as well as a  programmer that runs a business and also does some system administration.

What mode should I use ?

Saturday, November 22, 2003

The best place to start designing a GUI for Linux is to get rid of X!

That steaming pile of crap is the biggest impediment to the development and acceptance of the Linux desktop.

Saturday, November 22, 2003

Mmmmph. I think this idea is likely to crash and burn for the same reason as "novice" vs "expert" user interfaces; see and note particularly that "we are not novices or experts with regard to whole systems or applications, but go through the learning and automatic phases more or less independently with regard to each feature or set of similar features."

I believe the same is likely to apply with regards to the "modes" you've put forth here; people may have one mode that's their primary mode of use, but they want to be able to painlessly do many other things as well. (See also eMachines, demise of, for an attempt to attract users who "only use the computer for email".)

Chris Hoess
Saturday, November 22, 2003

Sounds like a job for Microsoft Bob.

Saturday, November 22, 2003

Sounds like 'Perspectives' in Eclipse/WSAD.

Ron E.
Saturday, November 22, 2003

I think this is the completely wrong approach from a usabillity perspective.

The desing should be simplified, not specialized. Often, I think, the things that annoy the pro and confuses the noob are one and the same.
Boil things down to core functionality and the noob will have a sporting chance to actually learn and understand how it works. The pro will appreciate the lack of fluff and bloat.

my 2c

Eric DeBois
Saturday, November 22, 2003

I think the problem is the limited scope that you are suggesting that users desire.  For example:

"1. a mode for people who only ever use their computer for word processing."

Do you remember when the typewriter market was falling off but before the widespread adoption of PC's?  There were word processors on the market that did just that -- gussied-up typewriters, really. When PC's became affordable for businesses and the mass market, word processors went the way of the typewriter. You one will want to spend $100's on a fancy typewriter.

Cowboy Coder
Saturday, November 22, 2003

But how often do we actually see the desktop nowadays.

When I upgraded to W95 I thought it really great to be able to have all these icons to click on the desktop, but with the increase in hardware specs I now find I've always got a slurry of programs open, and scarcely ever see the bare desktop.

The big problem you have with the Linux GUI is basically that you have a whole pack of cards tottering there. You've got the shell, and then the X Window manager on top of the shell, and then KDE or GNOME and then the application. Compare that to NT/2K/XP where the video driver has ring 0 access.

Anyway Linux desktops are skinnable, and you can have four different ones running tabbed at present. The complaints are much more to do with unresponsiveness, unreliablity and difficulty to code for.

Stephen Jones
Saturday, November 22, 2003

"The best place to start designing a GUI for Linux is to get rid of X!

That steaming pile of crap is the biggest impediment to the development and acceptance of the Linux desktop."

So true.  It bears all of you reading it again.

..and again

Saturday, November 22, 2003

If you want your video driver to be in ring 0, you can have that on Linux too - Nvidia's X support runs in-kernel; probably others do too.

Thing is though, as soon as you introduce third-party code to the kernel, you're asking for trouble - and it doesn't matter if it's Linux, Windows or the Mac. The only proper crashes I've had on OSX have been while running random extra kernel code, and my experiences on Linux and Windows are similar.

It's a shame that current systems don't make more use of the various levels of privilege available, so less-trusted drivers could be isolated.

Chris Andrews
Saturday, November 22, 2003

"The best place to start designing a GUI for Linux is to get rid of X!"

And why is this, and what do you think is going to replace it? Seriously, why do you think X is so useless? BTW don't bring up the network overhead troll, that's not true, when running on the same machine the client and server don't use network sockets to communicate.

Saturday, November 22, 2003

I've heard there is a great alternative to Linux, it's called UNIX, anyone heard of it?

Saturday, November 22, 2003

> what do you think is going to replace it?

Apple did a pretty good job of replacing it in Mac OS X. I suspect that was key to making the OS usable with a GUI.

As for why it sucks, there is a whole chapter about it in chapter 7 of the Unix Hater's Handbook:

Tim Sullivan
Saturday, November 22, 2003

"BTW don't bring up the network overhead troll, that's not true,..."

When the X server is on the same machine as the X client, the "unix sockets" are used in place of TCP sockets.  There is a performance improvement of about 2:1 over TCP, but still slow.  (Unix or local sockets are like a named pipe, with a better interface).

This thread is so filled with inaccurate and false statements, its not even worth unwinding.

Saturday, November 22, 2003

Alice, go do that development (of the multiple UI's) and get back to us when you're finished and have put Microsoft in its place. Thanks.

Saturday, November 22, 2003

As has been said many many times before, the network transparency does not affect the local transport. The X team amongst others have done tests (you know, where you measure things), and the implementation (using unix sockets, which are massively efficient data-transports, and shared-memory (no transport at all)) is as fast as you can get. It's within the theoretical margin of error of the peak performance of the system. Nothing goes faster.

I can't say this any simpler. X is massively efficient on the local channel. Direct-X on the PC is a different name for the same thing - an API into the low-level drivers.

You might argue that the low-level drivers are in need of optimisation, and I might agree in some cases, but that would still be the case for any new system. X itself is pretty bloody good at getting the maximum performance out of any hardware you throw at it - try running the 2-D blit in X11perf, then multiply the area * bitdepth * fps, divide by your AGP bandwidth and read the number you get .... You'll be surprised if you're running nvidia or ATI cards. Even venerable matrox cards push the bandwidth limit ...

Saturday, November 22, 2003

Alex did you cut and paste that from slashdot? Or were you the author of the exact some post on slashdot?

Saturday, November 22, 2003

Stanford's Life Stream is at one extreme of personalization. Where the navigational system will probably make the life behind you (yesterday, day before, etc) and the project you deal with populate the day ahead. You'll have threads that are very personalized to you that exist throughout time and you can just fast forward and rewind. On the other hand you can have a gui everyone must use like Mac Desktop. Some how the designers of the future will probably settle on something in the middle.

Li-fan Chen
Saturday, November 22, 2003


Indeed you may  be correct.  I'll take a look into it.  Though, I have benchmarked X versus linux framebuffer, and X compares very poorly for the exact same operations.  The framebuffer operations are nearly 2x faster (2D operations).

But, as it is, I have some experience with X driver development (for a proprietary chip set), and I'll have a chance to do some measurements of my own in the near future.

Sunday, November 23, 2003

Wow! I'm suprised that 19 people replied to my post in only a day.

Firstly. People DO spend riddiculous amounts of money on glorified type writters. Most of the people I know who use computers ONLY use them for word processing and email. Even websurfing is relatively rare.

Secondly, there should be an easy and obvious way to change modes, so if you are a business man and a musician then you can switch between the two modes. How often do you *really* compose music and do stock market forcasts at the same time?

Linux is already multi-everything so you could always have musician mode running on one virtual X terminal and business mode running on another one.

Sunday, November 23, 2003

I have developed applications with different interfaces for different users.  They actually work quite well.

One problem with software is the 'one size fits all' interface, usually described as a steaming dog turd.

One system I did had one screen for sales, another for accounts, and another for technical.  (You could easily change screens if you wanted to).  Each screen had slightly different info.  A good example was contact info.  Accounts wants to ring the person who pays the bills.  Tech want the person who knows where the fuse box is.  Sales wants to call someone to take them to lunch.  The company needs all three contacts, but individuals don't.

It's easy to add new screens for different classes of employees.

One I'm working on now has 2 data entry screens, a dummies one and a normal one.  The dummies one is for someone just off the street (temps), where you can plonk them down with the minimum of training.  No weird jargon, mouse driven, etc.  It's slow, but ok.

The normal screen is 100% keyboard.  No point hiring a fast typist if they need to touch the mouse.  Fields autotab when full.  Text is autoselected.  For a fast typist, to correct the previous field they hit shift-tab, and re-type it.  None of this trying to correct it like in the dummies screen.

The dummies screen is also good for showing at trade shows and to the CEO.  See, it's user friendly!  The normal screen isn't, but that's the point.  Once users get familiar with the job (not the application) they move from the dummies screen to the normal screen.

Sunday, November 23, 2003

Computers are no longer typewriters, they're massive information storage databases and communications tools. (read: you use it to get on the internet) Word processing is the least of their functions.

Instant messages, email, web browser. These are the hub of the modern day computer. The typewriter, unless you were a secretary, stayed in the closet most of the time and came out two or three times a year.

Perhaps if you want to change the UI for different sets of users, you should think of modifying the UI depending on whether or not what you're doing is online, or actually is paperwork.
Sunday, November 23, 2003

*  Recent Topics

*  Fog Creek Home