The Trouble With GUIs
"Like everything else in life, it boils down to having the right tool for the right job ... and the command line is like that all-purpose screwdriver that we all have," said Slashdot blogger Barbara Hudson. "It opens paint cans, makes a handy chisel, pry bar and wedge -- we grab it, get the job done, and move on."
It was only a month or so ago that Linux bloggers were feverishly debating the suggestion that perhaps it was time for the command line to go away. Here we are just a few weeks later, however, and it's the flip side of that question that's being discussed.
"Take this GUI and shove it" was the title of the InfoWorld post that brought the topic back to life again, this time with a focus on the oh-so-helpful graphical user interface.
"I find nearly all GUI management tools for network devices and servers more trouble than they're worth," wrote Paul Venezia, the author of the post.
"This preference isn't techno-codgerism, it's based on the reality of day-to-day network and server administration," Venezia added, citing a number of examples to support his case.
"GUI interfaces are fine and necessary in many cases," he concluded. "But they need to be built after a complete CLI is already in place, and they cannot interfere with the use of the CLI, only complement it. Otherwise, all you've done is make easy things easy and hard things much harder."
In what seemed like a matter of seconds, the thundering hooves of the Slashdot herds could be heard in the distance, galloping at full speed to have their say.
'The Worst of Both Worlds'
"Providing a great GUI for complex routers or Linux admin is *hard*," wrote alain94040, for example. "Of course there has to be a CLI, that's how pros get the job done. But a great GUI is one that teaches a new user to eventually graduate to using CLI."
Of course, "a bad GUI with no CLI is the worst of both worlds, the author of the article got that right," alain94040 added.
"What would be nice is if the GUI could automatically create a shell script doing the change," suggested maxwell demon. "That way you could (a) learn about how to do it per CLI by looking at the generated shell script, and (b) apply the generated shell script (after proper inspection, of course) to other computers."
'All But Brain-Dead'
Then again: "What would be REALLY nice for you all router manufacturers who are using Linux underneath the hood is to give shell access so that we could gain full access to iptables, vpn and routing," chimed in MightyMartian. "Just about every one of these Linux-based routers has all that power locked up in your crappy web-based configuration tools that render them all but brain-dead.
"Yeah, I know, there's DD-WRT and its various iterations, but these only work on a subset of Linux-based routers," MightyMartian added.
Remembering the vehemence of last month's command-line debate (just check out those comments!), Linux Girl felt the need for some liquid courage before digging any deeper. She made a beeline for the blogosphere's rowdy Punchy Penguin saloon.
'GUIs Are Rarely Able to Be Automated'
"As somebody that does a lot of scripting, I find that if a tool has a great command-line interface, it is *far* easier to automate the tool than a similar GUI tool," offered blogger Jeremy Visser.
"GUIs are rarely able to be automated (except in the case of simple web interfaces -- if you can call them GUIs at all), so automating a task to replace a GUI usually requires reinventing the wheel with a command-line script -- usually one I will end up writing," Visser explained.
"Definitely agree, with nearly every point," Slashdot blogger David Masover told Linux Girl. "The strength of the CLI is that it's both an interactive tool and an API, which means we can write tools and scripts, which means we can automate away part of system administration, which should cut costs, improve reliability, and make our jobs more interesting.
"I would rather have a command line for system administration in particular, and even where I'd prefer a GUI, it'd be nice if it was driving a command line, or if it at least provides a command line," Masover added.
'I Am More Productive Than With a GUI'
"When I was in college I learned command-line FTP before they brought in nice GUI clients," Chris Travers, a Slashdot blogger who works on the LedgerSMB project, told Linux Girl. "I found that the best GUI clients required several steps to what I could do with one short command on Windows 3.1's command-line client."
So, instead of "get foo.txt a:\bar.txt," Travers said, "I'd have to go through selecting where I wanted to download the files to, download the file, and then rename it. This is considerably longer than simply telling the computer what I wanted done."
Now, "when I write code, it's entirely at the command line (VIM)," Travers added. "I do this because I am more productive in these environments than I would be with a GUI."
'A Question of Density of Information'
In general, "I think it's worth thinking of the GUI vs the command line interface as a question of density of information," Travers suggested. "There are definitely times when the GUI gets in the way."
GUIs excel at "presenting information from the computer to the user, and are much better than a command-line interface in this regard, but the information they receive from the user is simpler and less dense," he explained. "A web browser is a perfect example of a tool which is generally far more useful with a GUI, but sound recording software benefits from having a GUI because the feedback that must be offered in the process of using the software is generally fairly rich."
Where a GUI breaks down is in user input, Travers asserted.
"A few keystrokes have far more informational value than several mouse-clicks in most circumstances, and it's usually faster to type out a rich, complex command sequence then to try to enter it via a GUI," he concluded.
'Typed Commands Do It Now, Instantly'
The GUI is "a great tool for multitasking," blogger Robert Pogson suggested. "However, the GUI is terrible if you want to *really* control a bunch of processes, or stop them."
For example, "I can 'pkill -f iceweasel' and kill all instances of iceweasel much sooner than I could close all its windows one at a time," Pogson explained. "Once a GUI has to deal with more items than fit in the window, it is hopeless unless CTRL-A does what you want."
In short, "the GUI is a great tool for most things, but it sags for power users, system administrators and little people who have a big job to do," Pogson concluded. "You can write a GUI tool to do some of these things but why bother? Typed commands do it now, instantly."
"It depends on what you're doing," asserted Barbara Hudson, a blogger on Slashdot who goes by "Tom" on the site. "For remote work, there's nothing that beats having a few shells open. WHM and cPanel more often than not make simple tasks harder -- or impossible."
"Like everything else in life, it boils down to having the right tool for the right job ... and the command line is like that all-purpose screwdriver that we all have," Hudson added. "It opens paint cans, makes a handy chisel, pry bar and wedge -- we grab it, get the job done, and move on."
Similarly, "whether a GUI or CLI is better depends entirely on who needs to access it," Montreal consultant and Slashdot blogger Gerhard Mack opined.
'I Still Have Nightmares'
On the server side, for instance, the author "is exactly right," Mack said. "As an admin, I hate GUI-only systems. I still have nightmares about a certain large computer maker offering 'enterprise' switches that were rebranded from another manufacturer and having to lock the switch down to switch port based VPN and having to go through ALL 24 ports on the switch one at a time to set the new VPN and a second time through all 24 ports to remove the default one.
"To be fair, they could have made a better GUI that would have cut my time down considerably, but that still pales in comparison to the 5 minutes it would have taken me with a decent CLI or the 10 minutes it would have taken me to script around a bad CLI," he explained.
For home users, however, "the GUI will always be better, and if we want Linux to attain more market share, we will need to continue to make the GUI better and more intuitive," Mack added.
'They Want Lots of Hand-Holding'
Indeed, "CLI is great for the server where there are these things called 'admins' that have actually gone to school and are getting paid to deal with it," Slashdot blogger hairyfeet agreed. "On the desktop? So full of fail it is practically overflowing."
For proof, one need look no further than the fact that "the ONLY Linux that is selling is Android," hairyfeet pointed out. "What is Android? It is a pretty, GUI-BASED phone with *absolutely NO access to CLI* by the common user. None at all.
"You have to give your CUSTOMERS -- which is what they are, folks -- what they want," hairyfeet concluded. "And what they DO NOT want is CLI. What they want is nice little wizards and lots of hand-holding and 'it just works' without needing a degree in comp sci just to run the stupid thing."