The Bottom Line
There are some particular perceptions among many non-Linux users that in order to use Linux one must be
- Willing to resort to the command line to accomplish mundane tasks
- A computer science major
- Able to find and rely on others to use their own system
While I disagree with these views on the whole, I think there is a degree of merit provided one applies a more level-headed tone to the rhetoric; instead of discussing that I’d like to consider why these perceptions exist. I propose that a major cause is the vast fragmentation of the Linux platform.
While Linux fragmentation offers truly — without exaggeration — unparalleled freedom of choice when it comes to customizing one’s computing interface and workflow, this can make offering help to any individual through their particular GUI very cumbersome. Consequently, the terminal becomes the common denominator since there are only a few common Linux filesystem layouts in use by the various distributions and the GNU Core Utilities can be assumed to be installed on any Linux system. This makes offering terminal commands the most direct approach for most people offering assistance to others, and this helps bolster the aforementioned perceptions: if everyone is receiving help through terminal commands, surely this is the only way to fix these problems.
The best we can do is accept that some people will feel this way and attempt to educate them on the benefits of computing diversity and choice; whether this is important to them or not is their choice, and perhaps they’ll come around to appreciating this diversity.
Keep reading for a more thorough analysis.
A Particular Case
Today I was reading a question about permissions from a new Linux user having troubles with reading some files on external storage drives. What really caught my eye about this wasn’t the subject of the question itself but rather a comment in the first reply:
have not tried the command line method from >terminal. Don’t understand the structure.
I’d suggest learning the rudiments of using the command line. Most folks here that can help you out will need you to enter commands from said command line.
This is a very common phenomenon: a new or otherwise terminal-illiterate Linux user runs into a problem and asks around for help, and often this help comes in the form of commands to enter in the terminal to help diagnose the problem. This in turn leads to negative attitudes toward Linux even from people merely observing this sort of thing:
- You can’t use Linux without using the terminal
- Linux is only for computer science majors
- Nobody could use Linux on their own
There’s a degree of truth to each of these points provided you add some reasonable and level-headed qualifiers. I propose that Linux fragmentation is one of the leading reasons that users asking for help receive it via terminal input.
An Open Platform
Let’s think about the two major computing ecosystems in play for end users: desktop and mobile.
Mobile: iOS Compared to Android/Linux
Disclaimer: I’ve used both Android devices (in the Nexus family) and an iPhone 4S; I happily prefer Android
iOS is of course a very locked-down and closed platform — no sane person would argue this point. You get your One Interface and you had better like it; the ability to customize it is minimal and the options in general are very limited. The OS, which most users are generally on the latest version of, resides on one of just a few hardware variants. This makes it very straightforward to troubleshoot any problems — which, in principle, should be few and far between since the software is tailored for about as many hardware variants as you have fingers — since you can always direct them to a predictable menu or whatever is needed.
Compare this to Android where there is a much broader representation of OS versions in use and for each version it might be on any number of hardware variants even per device model; the Samsung Galaxy S III shipped with different chips in the Korean version and the US version. Finally, you have different manufacturer skins (HTC Sense, Samsung TouchWiz, etc) that have wildly distinct interfaces, and on top of that you could have carrier-specific bloatware that may need to be taken into consideration as well. This results in a massive range of distinct ways to go about addressing an individual’s problem; even if you’re trying to help someone with the “same exact” device as you, carrier bloatware alone could render one individual unqualified to offer assistance. Finding a common denominator to start at when giving assistance becomes a daunting task indeed.
Here are some reference stats and figures about the distribution ofAndroid and iOS versions. It must be said that Google has been improving the situation recently and we can expect it to improve more going forward, but based on recent data we have:
- 78% iOS 7
- 18% iOS 6
- 04% Earlier
- 01.4% 4.4 KitKat
- 59.1% 4.1.x-4.3 Jelly Bean
- 16.9% 4.0.3-4.0.4 Ice Cream Sandwich
- 00.1% 3.2 Honeycomb
- 21.2% 2.3.3-2.3.7 Gingerbread
- 01.3% 2.2 Froyo
Additionally, TheVerge has put together superb interactive figures illustrating Android fragmentation in terms of model, OS version, and screen size, and I invite you to have a look at them if for no other reason than to see best-in-class examples of how to meaningfully illustrate data. In any event, the differences are clear.
Desktop: Mac OS X Compared to Desktop Linux
Here when I refer to the “desktop” I include laptops. I’m going to ignore Windows for the purpose of this comparison as I feel it has additional variables not relevant to this topic, such as being the top target for malware, that must be weighed for a fair comparison.
Mac OS X, like its mobile cousin iOS, is a tightly closed OS that runs on a very limited range of hardware — you might need both toes and fingers to count the variants this time though! The same points apply: there are few customization options and excepting those who enter the realm of Homebrew or MacPorts and take things very far, you can easily predict the interface and system of someone you’re trying to help.
Finally we arrive at Linux, the most diverse computing platform in existence. Consider the prominent factors that vary from system to system:
- Hardware: Every desktop PC hardware combination is liable to have Linux installed on it
- Distribution: Do yourself a favor and look at the GNU/Linux Distribution Timeline: diversity incarnate. Every line that terminates on the right edge should be an active and supported distribution. Whether the distribution is based on Red Hat, Debian, Ubuntu, Arch, Gentoo, etc, the layout of system files, software versions, and maintainer patches will vary
- Desktop environment: Each distribution is liable to have any of a number of desktop environments installed; GNOME, KDE, Unity, and Openbox are among the more popular, but rest assured there are plenty of alternatives
- Version: Most distributions are liable to support many versions of the OS at a time; Ubuntu for instance is currently set to support three Long Term Support releases and up to three in-between point releases that are released every 6 months and supported for 9
- User Software: Users are liable to install any number of fundamental software (file managers, web browsers, package manager frontends etc) beyond the defaults; the variety here is again far greater than any other OS
Alright… I think you’re starting to get the picture.
Too Much Choice?
The clear benefit of this choice is that if someone is willing to search around the variety of Linux installs they’re very likely to find a setup that feels optimal for their uses. It’s like Goldilocks: Windows or Mac OS X is likely to be “too hot” or “too cold” in some respects (even if the user isn’t aware of it due to never having experienced an alternative), but with enough experimentation Linux can offer that wonderful “just right” setup.
This freedom of choice comes at a clear cost: if you try to help someone in need of assistance and you try to help them in terms of their particular system’s GUI, you’re likely to spend more time figuring out the particulars of their setup than you are actually solving the problem.
The Great Unifier: The Almighty Terminal
So it comes down to this: what’s the easiest way to help someone with a problem? Their GUI is subject to so many degrees of variability, but at the end of the day they’re running a Linux-based OS with only a few major variants of the file system’s setup to deal with, and they’ll always have GNU Core Utilities. This means you can, without much guessing, give the user commands that they can copy and paste into a terminal to extract relevant diagnostic information or to outright solve the problem if you’re given just the distribution and version.
Combine this observation with the unavoidable fact that a lot of advanced Linux users find themselves drawn to work in software engineering or system administration, where there is a substantial amount of work liable to be done optimally or necessarily via the command line, and you have a community of very knowledgeable individuals who have several strong reasons to offer help using the command line if there isn’t a clear and unambiguous GUI solution available.
Conclusion: A Perception We Must Endure
It’s my belief that most technically-inclined users who experiment with Linux and stick with it for any meaningful period of time will gradually be drawn to doing more work in the terminal; one of the critical factors in this is typically finding readily-available help in the form of terminal commands. I think I’m not alone in remembering my early days of copying
chmod commands into the terminal, utterly bewildered by those mysterious numbers or letters.
I don’t think that this will ever change so long as the Linux ecosystem maintains or increases its current level of diversity. Therefore, I arrive at the conclusion that we’ll need to simply accept the fact that some people will look down on the platform because so many new users are offered help that isn’t strictly GUI-based; we can try to educate them on the causes of this and offer our opinions on the benefits of diversity — perhaps one day these individuals will have some interest in experimentation and will come to appreciate computing variety for themselves.