12.16
I’ve heard some ridiculous claims concerning usability and the command line, my favourite being ‘It’s really usable when you’ve learned how’. Which is total rubbish when you think about it as anything is easy once you’ve learned it. Using that logic a machine running (say) Arabic Windows, complete in it’s RTL glory, is just as easy to use as one with English Windows installed as it’s just a case of learning it. Right.
The thing is the command line is the antithesis of usability. It’s the exact opposite of where modern computing is going and it is, quite literally, a regression of over 20 years of progress.
Here’s the thing. A GUI interface is decision based. You look at what you have and decide a course of action based upon the options presented. A CLI is knowledge based. You have to know exactly what you need to type before you type it. The beauty of a GUI system is you do not need a manual – you do not need to invest weeks learning concepts, commands and other irrelevant arcana. It’s the difference between following roadsigns and trying to get home blindfolded.
For example anyone reasonably confident could find how to change power settings, drive mounts, record some audio or any simple task on Windows (or any decent GUI based OS) in a few minutes without needing any help, manuals or other assistance. With the CLI approach you are no longer able to operate on your own volition, instead you have to seek out howto’s, manuals and ask for help in forums. If there is no documentation or someone to ask then commonly there is no way to solve your issue – more often than not it is impossible to figure out the solution on your own. Linux essentially strips you of your independence. And God help you if you have a problem that breaks your internet connection.
If you use Linux you are beholden to the technical elite and their whims. The depressing part is it is viewed that this can all be solved if only enough documentation is written when everyone else has figured out that documentation should not even be necessary in the first place. It should be obvious what you need to do.
The Walled Garden
Essentially, and unlike Windows or OSX, the Linux user interface paradigm is a dichotomy. Instead of having a unified interface that everyone uses you have a two-tier system where you have the ‘real’ Linux users consisting of developers and power users, who rely largely on the CLI, shell scripts, vi and other non discoverable, non intuitive, complicated and extremely difficult to master concepts. Then you have the normal users who get to use the GUI scraps off of the power users table.
Which is largely the problem. You have a GUI interface, but it is really just a flimsy facade put up over the CLI underpinnings. It’s a walled garden of ‘ease of use’ in that as soon as you need to do something outside the remit of what the GUI allows you are immediately dumped into nerd hell in which 99% of the population have no hope of ever understanding. Stuff which is incredibly simple on other platforms such as installing drivers, installing software, mounting partitions or even changing your screen resolution can quickly turn into half-day Google marathons on Linux if your needs happen to not be covered by the GUI (and thus are outside the garden).
Take NTFS-3G for example. Last time I tried to use that the volume I tried to mount was marked as dirty. The GUI tool had no handling exception for this so it just blurted a load of CLI comands into a dialogue box – since it is just a wrapper around the command line version. You see it all the time in Linux. Rather than the standard approach of writing an API and interfacing with that large swathes of the GUI is simply calling a CLI command and scraping the result. No wonder it’s so flaky all the time.
Essentially the problem is that users are viewed as people that need something stupid, something dumbed down, that essentially they have different needs than ‘real’ computer users and as a result you get this system of intellectual apartheid where the ‘dumb users’ only get to play in the padded room and ask an ‘adult’ for help if they have a problem.
Speaking as a user and a developer I am sick of the elitism, of the machismo, of the walled garden. I don’t want to read howtos. I don’t want to learn useless, arcane, commands. I don’t want to spend two days plugging in random commands in the vague hope that my wireless may start working at some point. It’s not that I don’t know how to use a CLI, it’s more that I have better things to do with my time than fight with the creations of developers too lazy to go the extra mile and understand the whole raison d’être of a modern OS, which is empowering normal users to get stuff done on their own without having to get a degree in CS first.
Update
I saw someone complaining about how it was so difficult to set up a manual IP on Windows with the GUI, how it was so confusing and how Linux was better. Guess what? You can easily do this with the Windows CLI also. As pointed out though, unless you know the exact command and the exact parameters you have no earthly way of figuring it out and if he had gone from Windows, where a GUI is available, to Linux, where it isn’t (or is broken), then he would have failed entirely rather than just taken a bit longer than normal.
