[Interpost] Stupid argument in defending CLI over GUI


Sample of BASH through a shell in GNOME. Scree...

Image via Wikipedia

A few weeks ago an article was posted in a website about how CLI is a backward way of interacting with a computer, citing “C-prompt” as an example. Then (as expected) as huge swarm of CLI-huggers strikes back. Some gave technical counter-arguments, most of the others however resorted to using one of the classic and cliche arguments about CLI is “it’s no C-prompt”, citing the UNIX CLI’s superiority and stuff.

In any case no matter how CLI-huggers deny it, C-prompt is indeed a CLI. I wonder why bother to deny it and why bother to compare one is better than the other when they’re generally the same? They refused to acknowledge C-prompt as CLI but C prompt is undeniably CLI. They denied it just because it’s not as powerful as UNIX CLI, but that is just a proof that CLI is not always more powerful than GUI. They can be more powerful or less powerful depending on how they’re made. That said, the same design principle also applicable to GUI. It can become more powerful than UNIX GUI, if they’re done right.

UNIX GUI is just an example of CLI-done-right, yet it’s not the proof that CLI is always superior. C-prompt’s existence is enough to tell the world that there existed an inferior CLI.

CLI in equivalent to the real world is rods in neighborhood without the signboards. You have the address but you have to know exactly where to take turns to reach your destination. You’re lucky if you have the map with you but without it you wouldn’t know where to start. GUI on the other hand is like the road signboards. Even if you don’t have the map, as long as you know the address you’d be able to reach your destination.

Yet another cliché argument by CLI-huggers is “GUI can’t do many things that CLI can”, implying that it’s impossible for GUI to do everything that CLI can do. That is lame. Why? Say there are 2 chefs battling against each other in a culinary challenge. Chef A has a grille set and a cooker. Chef B has a cooker and an oven. Chef A prepared grilled beef because he has the tool but Chef B prepared something since he has no grille set. In that situation are you saying Chef B incapable of preparing grilled beef? He only didn’t have the tool. Give him the grill set and he’ll be able to do the same thing. The same also applies to GUI. A GUI being incapable of doing things is not the weakness of the GUI itself but because the necessary tools aren’t made available for it.

Despite all the rages by CLI-huggers, they never clearly tell which part of CLI that can’t be substituted by GUI. Instead they only gave vague answer like “it’s just impossible” repeatedly, even gone as far as citing lame arguments like “things you can’t do with a GUI”, as if there’s nothing a CLI can’t do. As far as I understand, as long as it’s just  textual command, it can be replaced by GUI, unless you’re saying that texts can never have graphical representation. That said, what else CLI can do other than processing textual commands? I found no technical restriction in transforming CLI into complete GUI. The only limiter is the programmer.

Now into a more personal matter, what didn’t I like about CLI? Or rather why I prefer GUI over CLI? Referring to the analogies I’ve given above, GUI is easy enough to figure out how to move about in with a couple of minutes of experimentation. Most of the time I never had to out any documentation. It would be fine if CLI commands are “figurable” using only common sense (like if they mimic real life conversation). Entering system specific and syntax strict is a pain especially for those who aren’t into programming. Take note, MOST people only want to use computer to make it work for them, not to make themselves work for their computers.

The GUI usually built on object-oriented design. Why not also have a CLI that does that? I mean as far as I know, there’s no CLI designed that way (correct me if I’m wrong). Most of the CLI commands and syntax doesn’t actually make sense. Well, at least not for me the joys of grokking grep, egrep or furtling with fsck, or ambling around awk. No, I used commands like “find_file” and “fix_partition” and, well, I never did find an equivalent for awk; possibly because awk is such a sad, anoraky waste of time and space. Maybe VOS had a command called “waste_your_time_and_space,” but if so, I was never tempted.

Now back to the CLI vs GUI thing. I can’t stand how it infuriates CLI huggers. They said “You’ll never learn anything about your computer like that!”, as though anybody really wants or needs to learn such esoterica. And as though it’s vitally important to understand that the “*” in a find ./ -file “foo*” (it’s a file-name glob) is actually not the same thing as the “*” in an xargs grep “foo*” (it means zero or more repetitions of the second letter ‘o’). Yes, that’s l33t knowledge for you.

I admit that there are things you can do with a CLI that you can’t do with a GUI (at least, not without significant contortions). There shouldn’t be, in fact it doesn’t have to be like that but (sadly) there are. Well, it’s not because it’s impossible but because there are people who are still too stupid to accept that the idea of GUI going to replace CLI. Don’t tell me about the automation and scripting crap. They are only for minorities, which I believe should not interfere with general computing affair at large. After all majority computer users are just users, and we can’t expect or force them to embrace CLI just because we as sysadmin think it’s superior. You may think that politics has nothing to do here but sadly it has to be that way. Otherwise computers would just remain as geek’s toy (like Arduino) and would never went mainstream. (No mainstream computing means no gaming/multimedia for you. How’s that sound, you CLI freaks?)

My final words, for me an operating system without GUI is incomplete, perhaps not worth or qualified to bear the “operating system” title.

All Linux distros should follow the way …


All Linux distros should follow the way of Windows and Mac OS X by default, where applications are installed from a single downloaded file where when double-clicked, bring up an installation wizard program with graphical prompts, rather than the traditional package management systems that many Unix-like systems use.

Linux should learn more from Windows too…


Linux should learn more from Windows too; ie. to use proper, corresponding icon for its executable files. Executable files are programs that comes with applications, together with their own set of icons. The problem is the icons are only available for applications menu and desktops but why not the executable files as well? I remember having a hard time browsing the usr/bin folder searching for the executable file of Transmission (the bittorent client) by looking at file names instead of trying to notice the familiar Transmission icon. Yeah I found it but I can do it much faster in Windows thanks to the usage of corresponding icon for Windows applications. Besides in Windows applications are usually sorted out properly in their own program directories with proper application naming (Program Files/App name) instead of dumping all cryptically named executable files in only one place. Besides why the heck the system still use almost-cryptic acronymic naming of directories like ‘usr’ instead of ‘user’ or ‘bin’ instead of ‘binary’ or ‘lib’ instead of ‘library’? (And strangely enough they can use four-letter words for some other directories like ‘home’ and ‘root’?). And what the heck the ‘sda’ is actually? (yeah, I know what ‘sda’ is but that one is just me exaggerating to show you how cryptic directory naming in Linux can be). Linux is already decades in development yet the developers still refuse to abandon UNIX system convention? C’mon, it’s just a matter of a few additional letters so it shouldn’t hurt for that much of extra work. And isn’t modern Linux is supposed to be a hybrid and pragmatic standalone system instead of being heavily and strictly modeled after UNIX? It’s been decades since the first version of Linux being coded so today it should be made less like UNIX now while still remaining POSIX-compliant. Heck, even Mac OS X and Windows NT* are completely POSIX-compliant but managed to exist as a completely different system. In other words, modern Linux should be partially modeled after other systems as well if it wants to ‘seize’ the OS market domination from Windows.

*WinNT may or may not fully POSIX-compliant but I don’t fuss over the details. Nobody really care whether I’m correct or not because there’ll always be people disagreeing with me whether I’m right or wrong.