This post originated from an RSS feed registered with PHP Buzz
by Lewis Franklin.
Original Post: CLI vs. GUI, Part I
Feed Title: Lewis Franklin's Blog
Feed URL: /default.aspx?a=www.grouporg.org
Feed Description: Admin Blog for GroupOrg
I have been using Microsoft Operating Systems for as long as I can remember. I remember when we bought our first computer (486DX2 66) it was no time before I was custom writing batch files and had one set up in my autoexec.bat file so that I could avoid booting up to WFW 3.11 and set the optimum memory settings for each game I wanted to play.
I begin this post with that reminiscing to give some credence to what I am going to say. One of my complaints of Linux has been the lack of a GUI interface. There are times that I don't mind typing in commands from the command line, but there are times that I simply want to use the mouse. Plus, some tasks performed on the computer are naturally intuitive to using a GUI interface. Any type of editing, be it writing a letter or writing code, seems to be best done in a GUI to me. The GUI has the advantage of being able to run multiple processes at a single time with the the end user knowing. I can run a spell checker with the click of button. I can undo my last 42 changes with the (repeated) click of another. With yet another I can preview my work in a new window (be it previewed for printing or for the internet).
There are some very solid GUI apps on Linux no doubt. I have intentionally tried to install software that is cross-platform whenever possible so that if/when I do use Linux, I know that my favorite apps will work there as well. However, in spite of these great programs, there to me still seems to be a lack of solid GUI interface overall. When I first installed Linux on my PC, I would spend quite a bit of time IM-ing a friend of mine how to complete a rather simple task and his reply would more often than not be "Well, that's easy. Just type this into bash". No. I shouldn't have to open up a stupid bash window just to perform some simple functions. Put a GUI wrapper around it. It really isn't that hard. I've done it at work. I have developed a GUI wrapper around a custom rsync CLI we had. If I can do it, so can the Linux community.
I know there are those out there that believe that a CLI is far superior to a GUI, and they have their proof as well. However, my personal experience has led me to believe otherwise. Take for example my mother. She is a wonderful woman that has made great strides using the computer. She types up Sunday School lessons in Word, uses PC Study Bible for research, surfs the web with Firefox, emails all the time, and even instant messages me from time-to-time. While she is able to use the computer fairly effectively, she is a prime example of the need for a GUI. When she got her digital camera, I tried to teach her how to copy her photos from her memory card to her computer. I told her to insert thememory disk, click on the new window that opened, hit Ctrl+A, Ctrl+C, open My Pictures, make a new folder, and then hit Ctrl+V. She told me I lost her on Ctrl+A. I then showed her how to select the files with the mouse and drag it over to the new window. Success. While this is not an example of CLI vs. GUI, I do think that there are some parallels. To me, keyboard shortcuts serve the same function as a CLI. While not having the pretty interface, there are some definite advantages. I am able to work quite abit quicker with keyboard shortcuts. I can do things very easily with keyboard shortcuts that I cannot do with a GUI. I think that those arguments, along with some others, are applicable to both keyboard shortcuts and CLIs.
While those advantages do exists, they were lost on my mother. I see my mother as the "typical" computer user. If a program ever wants to become mainstream, it needs to work to put a GUI layer onto even the most simple tasks. The end user should not have to know what a command prompt is. This is not to say that the program should do away with the CLI, but at least the most common tasks need to be able to be accessed from a GUI. A GUIs advantage is two-fold. First, it allows for an easier level of entry for the new user. If I have to do everything from the CLI, I probably won't use it (unless they make me at work) and I'm an experienced computer user who makes a living programming. Secondly, a GUI can handle functionality that a CLI cannot. Any application that required repeated interaction, such as word processor, graphics editor, or instant messaging client, is best handled by a GUI.
For part two, I will turn the tables and complain about GUIs so before my loyal reader says anything, wait for more to come! :)