Wednesday, March 25, 2009

Avoiding the GUI

I wish someone would write a book on avoiding the GUI. I wish even more that I could find fairly recent programs, even for linux, that don't depend on GUIs.

I dislike graphic interfaces, and though windowed programs are sometimes very useful, there is no necessary connection between windows and graphic interfaces. Unfortunately, they have become so conflated in people's, even programmers', minds that they are automatically considered together. One example is the X Window System for UNIX and Linux. You have to be running the graphic desktop to use programs written for X, and because of the libraries and reduced programming overhead, most programmers now write programs for X, rather than for linux. (I'm referring specifically to application programs, in case that wasn't obvious from the context.)

This is NOT an improvement, except in the rather narrow sense that replacing metal with plastic in kitchen appliances or tools is an improvement - it makes production cheaper.

Also, the use of graphics inside a program is not always using a graphic interface. I would prefer that command buttons in programs be replaced with a small command line text box - anyone who has lost information because they accidentally clicked the wrong button can probably understand why, even if the idea never occured to them. I have even opened the wrong program, which I then had to close and open the one I meant, by clicking the wrong icon on the desktop.

Another problem with GUIs is that they are what Mike Gancarz in The Unix Philosophy refers to as captive user interfaces - you have to sit there and keep clicking, you can't just tell the shell what to do and let it run. Including you can't pipe it together with other programs to do a more complex job. In fact X violates most of the UNIX Philosophy.

One of the reasons GUIs have become popular is that everyone seems to think that more users is better, so they are trying to make it easier to get started, apparently figuring that as they gain expertise the suckers (err..., "users") will stick with what they are used to rather than switch.

A better tool is harder to use at first, but as you learn it, it becomes more natural and quicker to use. Typing in a command is much faster than cascading menus and, for someone more than marginally literate, more natural. As far as keyboard shortcuts - most importantly, they should be easily personalized. There are too few reasonably memorizable shortcuts to cover everything, and each expert tends to work in a slightly different (or wildly different) area and will find different shortcuts valuable.

Neal Stephenson's In the Beginning Was the Command Line... gives an interesting perspective on this. It is only fair to add though that he has since changed his stance on some of the issues he raised in the book; though the note I saw didn't say in exactly what respects. I think it excellent as it reads.