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.”
Android is selling, but it does have a terminal emulator. Google wrote one:
It may be that on some build or other it is not accessible but it could be if the manufacturer or the user wanted it.
I doubt most consumers would pay attention to whether or not there was a CLI interface on their computing device. Many users of that other OS certainly are unaware of it.
Pogson, could you POSSIBLY do more hoop jumping trying to prove your way is right? first of all how many Android users are actually gonna hunt out some CLI emulator on the back page of some Google server? How does that in ANY change the fact that the slightest thing that goes wrong in Linux and you’ll be staring at Bash? That is like saying "well..well..Windows has a terminal too!" Yeah, and how many AVERAGE user actually know it exists, much less EVER interacts with it?
Second of all, what are you, 15? I hate to burst your bubble, but Redmond is NOT in Mordor, and the CEO is NOT named Sauron, okay? Your insistence on constantly saying "Other OS" like Gates is just gonna jump out of the closet and bite you is frankly more than a little nutty. Say it with me…Windows. See, you’re not bleeding from the eyes or anything!
Third and finally that doesn’t change the facts. FACT: Linux has had 15 YEARS of the CLI guys getting final word, and what is the desktop number again? Oh yeah, a lousy 1% of the market. The world has spoken and CLI is listed as DO NOT WANT on the desktop. Both Windows AND OSX are stomping the heck out of you, even though by using your OS why?
Allow me to tell you, it is because it is an AWFUL desktop for end users! Sure it is pretty on top IF you only use a tiny AM ount of approved Linux hardware AND you don’t have the developers drop support or break the drivers you need AND you use nothing but the repos AND are only web surfing or running a server. See how quickly you just lost share?
Either give the public what they want, or accept you have a hobbyist OS that is only really used in servers and embedded and move on. If you want a shot at the title you gotta get in the ring.
There is a problem with CLI too. A lot of application **do not work well** with one, if they where not CLI to start with. This is especially true with Windows, but.. In such cases you often need a different tool, which does the same thing, but lets you CLI it. Some applications, like photoshop, Blender, etc. get around this problem by doing something much more interesting. Instead of trying to expose every bell and whistle of the application "outside" the GUI, as a CLI, they provide ways to run CLI like scripts "inside" their own environment.
Would it be nice if CLI had a ubiquitous way to talk to applications, so you didn’t need to worry if it had a GUI or not? Sure. Never going to happen though, since no one write them that way, generally, and the CLI for some things gets stupid complex, for what is actually "simple" in in the GUI. Would it be nice of the GUIs all supported internal script? Sure. Also never going to happen, in most cases. Its more limited that a full CLI, it may not add anything to the process.
But, if I where to go for one or the other, I would say "main CLI", which has some way to deal with the GUI **too**. Ironically, you can do this more with Windows, with something like Autoit, but that is *precisely* due to the fact that Windows doesn’t have many restrictions on what control responses can be fed from one application to another. I.e., what could be argued is a security hole, is the only reason you can even automate the GUI. Pretty sure this is probably harder under Linux, but I haven’t really needed to look into it.
But, yeah. You kind of need both, if you want real control *and* simpler access, when you don’t need all the damn control. Right now, you tend to get one or the other. Either complete control, and very little simplification, or almost *no* control, to the point of being *too* simple.