{"id":315,"date":"2011-12-18T10:59:12","date_gmt":"2011-12-18T17:59:12","guid":{"rendered":"http:\/\/10.43.101.63:24469\/?p=315"},"modified":"2014-12-18T12:13:51","modified_gmt":"2014-12-18T20:13:51","slug":"linux-is-not-windows","status":"publish","type":"post","link":"https:\/\/aarontc.com\/archive\/2011\/12\/linux-is-not-windows\/","title":{"rendered":"Linux is Not Windows"},"content":{"rendered":"

Yesterday, Mark pointed me at the following article, which I feel is quite relevant to most Linux versus Windows debates that go on these days. In particular, the analogies of cars versus motorbikes, and paid support (no community) versus free support (community), seem to do a fantastic job of explaining why it’s so hard for a Windows power-user to understand and enjoy Linux without putting in some time to relearn how to use a computer, as well as how to ask for help. Just another example of how the “common-sense, intuitive” line of thinking can get us into trouble \ud83d\ude42<\/p>\n

The article is located at http:\/\/linux.oneandoneis2.org\/LNW.htm<\/a>, and the contents are posted below for posterity.<\/p>\n

(The article is Copyright \u00a9 Dominic Humphries, licensed as Creative Commons Attribution-NonCommercial-ShareAlike 2.5, which permits me to share the contents while linking to the original.)<\/small><\/p>\n

In the following article, I refer to the GNU\/Linux OS and various Free & Open-Source Software (FOSS) projects under the catch-all name of “Linux”. It scans better.<\/em><\/center><\/p>\n

\"Linux\" != \"Windows\"<\/p>\n

(Linux is Not Windows)<\/h1>\n

Derived works<\/a><\/small><\/p>\n

\n

If you’ve been pointed at this page, then the chances are you’re a relatively new Linux user who’s having some problems making the switch from Windows to Linux. This causes many problems for many people, hence this article was written. Many individual issues arise from this single problem, so the page is broken down into multiple problem areas.<\/p>\n

Problem #1: Linux isn’t exactly the same as Windows.<\/strong><\/h3>\n

You’d be amazed how many people make this complaint. They come to Linux, expecting to find essentially\u00a0a free, open-source version of Windows.<\/a>\u00a0Quite often, this is what they’ve been told to expect by over-zealous Linux users. However, it’s a paradoxical hope.<\/p>\n

The specific reasons why people try Linux vary wildly, but the overall reason boils down to one thing: They hope Linux will be better than Windows. Common yardsticks for measuring success are cost, choice, performance, and security. There are many others. But every Windows user who tries Linux, does so because they hope it will be better than what they’ve got.<\/p>\n

Therein lies the problem.<\/p>\n

It is logically impossible for any thing to be better than any other thing whilst remaining completely identical to it. A perfect copy may be equal, but it can never surpass. So when you gave Linux a try in hopes that it would be better, you were inescapably hoping that it would be different. Too many people ignore this fact, and hold up every difference between the two OSes as a Linux failure.<\/p>\n

As a simple example, consider driver upgrades: one typically upgrades a hardware driver on Windows by going to the manufacturer’s website and downloading the new driver; whereas in Linux you upgrade the kernel.<\/p>\n

This means that a single Linux download & upgrade will give you the newest drivers available for your machine, whereas in Windows you would have to surf to multiple sites and download all the upgrades individually. It’s a very different process, but it’s certainly not a bad one. But many people complain because it’s not what they’re used to.<\/p>\n

Or, as an example you’re more likely to relate to, consider Firefox: One of the biggest open-source success stories. A web browser that took the world by storm. Did it achieve this success by being a perfect imitation of IE, the then-most-popular browser?<\/p>\n

No. It was successful because it was\u00a0better\u00a0than IE, and it was\u00a0better\u00a0because it was\u00a0different. It had tabbed browsing, live bookmarks, built-in searchbar, PNG support, adblock extensions, and other wonderful things. The\u00a0“Find”functionality appeared in a toolbar at the bottom and looked for matches as you typed, turning red when you had no match. IE had no tabs, no RSS functionality, searchbars only via third-party extensions, and a find dialogue that required a click on\u00a0“OK”\u00a0to start looking and a click on\u00a0“OK”\u00a0to clear the\u00a0“Not found”\u00a0error message. A clear and inarguable demonstration of an open-source application achieving success by being better, and being better by being different. Had FF been an\u00a0IE clone, it would have vanished into obscurity. And had Linux been a Windows clone, the same would have happened.<\/p>\n

So the solution to problem #1: Remember that where Linux is familiar and the same as what you’re used to, it\u00a0isn’t\u00a0new & improved. Welcome the places where things are different, because only here does it have a chance to shine.<\/p>\n

 <\/p>\n

Problem #2: Linux is\u00a0too\u00a0different from Windows<\/strong><\/h3>\n

The next issue arises when people do expect Linux to be different, but find that some differences are just too radical for their liking. Probably the biggest example of this is the sheer amount of choice available to Linux users. Whereas an out-of-the-box-Windows user has the Classic or XP desktop with Wordpad, Internet Explorer, and Outlook Express installed, an out-of-the-box-Linux user has hundreds of distros to choose from, then Gnome or KDE or Fluxbox or whatever, with vi or emacs or kate, Konqueror or Opera or Firefox or Mozilla, and so on and so forth.<\/p>\n

A Windows user isn’t used to making so many choices just to get up & running. Exasperated\u00a0“Does there have to be so much choice?”<\/em>\u00a0posts are very common.<\/p>\n

Does<\/em>\u00a0Linux really have to be so different from Windows? After all, they’re both operating systems. They both do the same job: Power your computer & give you something to run applications on. Surely they should be more or less identical?<\/p>\n

Look at it this way: Step outside and take a look at all the different vehicles driving along the road. These are all vehicles designed with more or less the same purpose: To get you from A to B via the roads. Note the variety in designs.<\/p>\n

But, you may be thinking, car differences are really quite minor: they all have a steering wheel, foot-pedal controls, a gear stick, a handbrake, windows & doors, a petrol tank. . . If you can drive one car, you can drive any car!<\/p>\n

Quite true. But did you not see that some people weren’t driving cars, but were riding motorbikes instead. . ?<\/p>\n

Switching from one version of Windows to another is like switching from one car to another. Win95 to Win98, I honestly couldn’t tell the difference. Win98 to WinXP, it was a bigger change but really nothing major.<\/p>\n

But switching from Windows to Linux is like switching from a car to a motorbike. They may both be\u00a0OSes\/road vehicles<\/strong>.\u00a0They may both use the same\u00a0hardware\/roads<\/strong>.\u00a0They may both\u00a0provide an environment for you to run applications\/transport you from A to B<\/strong>.\u00a0But they use fundamentally different approaches to do so.<\/p>\n

Windows\/cars<\/strong>\u00a0are not safe from\u00a0viruses\/theft<\/strong>\u00a0unless you\u00a0install an antivirus\/lock the doors<\/strong>.\u00a0Linux\/motorbikes<\/strong>\u00a0don’t have\u00a0viruses\/doors<\/strong>, so are perfectly safe without you having to\u00a0install an antivirus\/lock any doors<\/strong>.<\/p>\n

Or look at it the other way round:<\/p>\n

Linux\/cars<\/strong>\u00a0were designed from the ground up for multiple\u00a0users\/passengers<\/strong>.\u00a0Windows\/motorbikes<\/strong>\u00a0were designed for one\u00a0user\/passenger<\/strong>. Every\u00a0Windows user\/motorbike driver<\/strong>\u00a0is used to being in full control of hiscomputer\/vehicle<\/strong>\u00a0at all times. A\u00a0Linux user\/car passenger<\/strong>\u00a0is used to only being in control of his\u00a0computer\/vehicle<\/strong>\u00a0when\u00a0logged in as root\/sitting in the driver’s seat<\/strong>.<\/p>\n

Two different approaches to fulfilling the same goal. They differ in fundamental ways. They have different strengths and weaknesses: A car is the clear winner at transporting a family & a lot of cargo from A to B: More seats & more storage space. A motorbike is the clear winner at getting one person from A to B: Less affected by congestion and uses less fuel.<\/p>\n

There are many things that\u00a0don’t<\/strong>\u00a0change when you switch between cars and motorbikes: You still have to put petrol in the tank, you still have to drive on the same roads, you still have to obey the traffic lights and Stop signs, you still have to indicate before turning, you still have to obey the same speed limits.<\/p>\n

But there are also many things that\u00a0do<\/strong>\u00a0change: Car drivers don’t have to wear crash helmets, motorbike drivers don’t have to put on a seatbelt. Car drivers have to turn the steering wheel to get around a corner, motorbike drivers have to lean over. Car drivers accelerate by pushing a foot-pedal, motorbike drivers accelerate by twisting a hand control.<\/p>\n

A motorbike driver who tries to corner a car by leaning over is going to run into problems very quickly. And Windows users who try to use\u00a0their<\/strong>\u00a0existing skills and habits generally also find themselves having many issues. In fact, Windows “Power Users” frequently have\u00a0more<\/em>\u00a0problems with Linux than people with little or no computer experience, for this very reason. Typically, the most vehement\u00a0“Linux is not ready for the desktop yet”<\/em>\u00a0arguments come from ingrained Windows users who reason that if\u00a0they<\/strong>\u00a0couldn’t make the switch, a less-experienced user has no chance. But this is the exact opposite of the truth.<\/p>\n

So, to avoid problem #2: Don’t assume that being a knowledgeable Windows user means you’re a knowledgeable Linux user: When you first start with Linux, you are a novice.<\/p>\n

 <\/p>\n

Problem #3: Culture shock<\/strong><\/h3>\n

Subproblem #3a: There\u00a0is\u00a0a culture<\/strong><\/h3>\n

Windows users are more or less in a customer-supplier relationship: They pay for software, for warranties, for support, and so on. They expect software to have a certain level of usability. They are therefore used to having rights with their software: They have paid for technical support and have every right to demand that they receive it. They are also used to dealing with entities rather than people: Their contracts are with a company, not with a person.<\/p>\n

Linux users are in more of a community. They don’t have to buy the software, they don’t have to pay for technical support. They download software for free & use Instant Messaging and web-based forums to get help. They deal with people, not corporations.<\/p>\n

A Windows user will not endear himself by bringing his habitual\u00a0attitudes over to Linux, to put it mildly.<\/p>\n

The biggest cause of friction tends to be in the online interactions: A “3a” user new to Linux asks for help with a problem he’s having. When he doesn’t get that help at what he considers an acceptable rate, he starts complaining and demanding more help. Because that’s what he’s used to doing with paid-for tech support. The problem\u00a0is that this\u00a0isn’t<\/em>\u00a0paid-for support. This is a bunch of volunteers who are willing to help people with problems out of the goodness of their hearts. The new user has no right to demand anything from them, any more than somebody collecting for charity can demand larger donations from contributors.<\/p>\n

In much the same way, a Windows user is used to using commercial software. Companies don’t release software until it’s reliable, functional, and user-friendly enough. So this is what a Windows user tends to expect from software: It starts at version 1.0.\u00a0Linux software, however, tends to get released almost as soon as it’s written: It starts at version 0.1. This way, people who really need the functionality can get it ASAP; interested developers can get involved in helping improve the code; and the community as a whole stays aware of what’s going on.<\/p>\n

If a “3a” user runs into trouble with Linux, he’ll complain: The software hasn’t met his standards, and he thinks he has a right to expect that standard. His mood won’t be improved when he gets sarcastic replies like\u00a0“I’d demand a refund if I were you”<\/em><\/p>\n

So, to avoid problem #3a: Simply remember that you haven’t paid the developer who wrote the software or the people online who provide the tech support. They don’t owe you anything.<\/p>\n

 <\/p>\n

Subproblem #3b: New vs. Old<\/strong><\/h3>\n

Linux pretty much started out life as a hacker’s hobby. It grew as it attracted more hobbyist hackers. It was quite some time before anybody but a geek stood a chance of getting a useable Linux installation working easily. Linux started out\u00a0“By geeks, for geeks.”\u00a0And even today, the majority of established Linux users are self-confessed geeks.<\/p>\n

And that’s a pretty good thing: If you’ve got a problem with hardware or software, having a large number of geeks available to work on the solution is a definite plus.<\/p>\n

But Linux has grown up quite a bit since its early days. There are distros that almost anybody can install, even distros that live on CDs and detect all your hardware for you without\u00a0any\u00a0intervention. It’s become attractive to non-hobbyist users who are just interested in it because it’s virus-free and cheap to upgrade. It’s not uncommon for there to be friction between the two camps. It’s important to bear in mind, however, that there’s no real malice on either side: It’s lack of understanding that causes the problems.<\/p>\n

Firstly, you get the hard-core geeks who still assume that everybody using Linux is a fellow geek. This means they expect a high level of knowledge, and often leads to accusations of arrogance, elitism, and rudeness. And in truth, sometimes that’s what it is. But quite often, it’s not:\u00a0It’s elitist to say\u00a0“Everybody ought to know this”. It’s not elitist to say\u00a0“Everybody knows this”\u00a0– quite the opposite.<\/p>\n

Secondly,\u00a0you get the new users who’re trying to make the switch after a lifetime of using commercial OSes. These users are used to software that anybody can sit down & use, out-of-the-box.<\/p>\n

The issues arise because\u00a0group 1 is made up of people who enjoy being able to tear their OS apart and rebuild it the way they like it, while group 2 tends to be indifferent to the way the OS works, so long as it\u00a0does\u00a0work.<\/p>\n

A parallel situation that can emphasize the problems is Lego. Picture the following:<\/p>\n

New:\u00a0I wanted a new toy car, and everybody’s raving about how great Lego cars can be. So I bought some Lego, but when I got home, I just had a load of bricks and cogs and stuff in the box. Where’s my car??<\/p>\n

Old:\u00a0You have to build the car out of the bricks. That’s the whole point of Lego.<\/p>\n

New:\u00a0What?? I don’t know how to build a car. I’m not a mechanic. How am I supposed to know how to put it all together??<\/p>\n

Old:\u00a0There’s a leaflet that came in the box. It tells you exactly how to put the bricks together to get a toy car. You don’t need to know how, you just need to follow the instructions.<\/p>\n

New:\u00a0Okay, I found the instructions. It’s going to take me hours! Why can’t they just sell it as a toy car, instead of making you have to build it??<\/p>\n

Old:\u00a0Because not everybody wants to make a toy car with Lego. It can be made into anything we like. That’s the whole point.<\/p>\n

New:\u00a0I still don’t see why they can’t supply it as a car so people who want a car have got one, and other people can take it apart if they want to. Anyway, I finally got it put together, but some bits come off occasionally. What do I do about this? Can I glue it?<\/p>\n

Old:\u00a0It’s Lego. It’s designed to come apart. That’s the whole point.New:\u00a0But I don’t\u00a0want\u00a0it to come apart. I just want a toy car!<\/p>\n

Old:\u00a0Then why on Earth did you buy a box of Lego??It’s clear to just about anybody that Lego is not really aimed at people who just want a toy car. You don’t get conversations like the above in real life. The whole point of Lego is that you have fun building it and you can make anything you like with it. If you’ve no interest in building anything, Lego’s not for you. This is quite obvious.<\/p>\n

As far as the long-time Linux user is concerned, the same holds true for Linux: It’s an open-source, fully-customizeable set of software. That’s the whole point. If you don’t want to hack the components a bit, why bother to use it?<\/p>\n

But there’s been a lot of effort lately to make Linux more suitable for the non-hackers, a situation that’s not a million miles away from selling pre-assembled Lego kits, in order to make it appeal to a wider audience. Hence you get conversations that aren’t far away from the ones above: Newcomers\u00a0complain about the existence of what the established users consider to be fundamental features, and resent having the read a manual to get something working. \u00a0But complaining that there are too many distros; or that software has too many configuration options; or that it doesn’t work perfectly out-of-the-box; is like complaining that Lego can be made into too many models, and not liking the fact that it can be broken down into bricks and built into\u00a0many other things.<\/p>\n

So, to avoid problem #3b: Just remember that what Linux seems to be now is\u00a0not\u00a0what Linux was in the past. The largest and most necessary part of the Linux community, the hackers and the developers, like Linux\u00a0because\u00a0they can fit it together the way they like; they don’t like it in\u00a0spite\u00a0of having to do all the assembly before they can use it.<\/p>\n

 <\/p>\n

Problem #4: Designed for the designer<\/h3>\n

In the car industry, you’ll very rarely find that the person who designed the engine also designed the car interior: It calls for totally different skills. Nobody wants an engine that only\u00a0looks\u00a0like it can go fast, and nobody wants an interior that works superbly but is cramped and ugly. And in the same way, in the software industry, the user interface (UI) is not usually created by the people who wrote the software.<\/p>\n

In the Linux world, however, this is not so much the case: Projects frequently start out as one man’s toy. He does everything himself, and therefore the interface has no need of any kind of\u00a0“user friendly”\u00a0features: The user knows everything there is to know about the software, he doesn’t need help. Vi is a good example of software deliberately created for a user who already knows how it works: It’s not unheard of for new users to reboot their computers because they couldn’t figure out how else to get out of vi.<\/p>\n

However, there is an important difference between a FOSS programmer and most commercial software writers: The software a FOSS programmer creates is software that he intends to use. So whilst the end result might not be as ‘comfortable’ for the novice user, they can draw some comfort in knowing that the software is designed by somebody who knows what the end-users needs are: He too is an end-user. This is very different from commercial software writers, who are making software for\u00a0other people\u00a0to use: They are\u00a0not\u00a0knowledgeable end-users.<\/p>\n

So whilst vi has an interface that is hideously unfriendly to new users, it is still in use today because it is such a superb interface once you know how it works. Firefox was created by people who regularly browse the Web. The Gimp was built by people who use it to manipulate graphics files. And so on.<\/p>\n

So Linux interfaces are frequently a bit of a minefield for the novice: Despite its popularity, vi should never be considered by a new user who just wants to quickly make a few changes to a file. And if you’re using software early in its lifecycle, a\u00a0polished, user-friendly interface is something you’re likely to find only in the\u00a0“ToDo”\u00a0list: Functionality comes first. Nobody designs a killer interface and then tries to add functionality bit by bit. They create functionality, and then improve the interface bit by bit.<\/p>\n

So to avoid #4 issues: Look for software that’s specifically aimed at being easy for new users to use, or accept that some software that has a steeper learning curve than you’re used to. To complain that vi isn’t friendly enough for new users is to be laughed at for missing the point.<\/p>\n

 <\/p>\n

Problem #5: The myth of “user-friendly”<\/h3>\n

This is a big one. It’s a very big term in the computing world, “user-friendly”. It’s even the name of a particularly good webcomic. But it’s a bad term.<\/p>\n

The basic concept is good: That software be designed with the needs of the user in mind. But it’s always addressed as a single concept, which it isn’t.<\/p>\n

If you spend your entire life processing text files, your ideal software will be fast and powerful, enabling you to do the maximum amount of work for the minimum amount of effort. Simple keyboard shortcuts and mouseless operation will be of vital importance.
\nBut if you very rarely edit text files, and you just want to write an occasional letter, the last thing you want is to struggle with learning keyboard shortcuts. Well-organized menus and clear icons in toolbars will be your ideal.<\/p>\n

Clearly, software designed around the needs of the first user will not be suitable for the second, and vice versa. So how can any software be called “user-friendly”, if we all have different needs?<\/p>\n

The simple answer: User-friendly is a misnomer, and one that makes a complex situation seem simple.<\/p>\n

What does “user-friendly” really mean? Well, in the context in which it is used, “user friendly” software means\u00a0“Software that can be used to a reasonable level of competence by a user with no previous experience of the\u00a0software.”\u00a0This has the unfortunate effect of making lousy-but-familiar interfaces\u00a0fall into the category of “user-friendly”.<\/p>\n

 <\/p>\n

Subproblem #5a: Familiar is friendly<\/h3>\n

So it is that in most “user-friendly” text editors & word processors, you Cut and Paste by using Ctrl-X and Ctrl-V. Totally unintuitive, but everybody’s used to these combinations, so they count as a “friendly” combination.<\/p>\n

So when somebody comes to vi and finds that it’s “d” to cut, and “p” to paste, it’s not considered friendly: It’s not what anybody is used to.<\/p>\n

Is it superior? Well, actually, yes.<\/p>\n

With the Ctrl-X approach, how do you cut a word from the document you’re currently in?\u00a0(No using the mouse!)<\/p>\n

From the start of the word,\u00a0Ctrl-Shift-Right\u00a0to select the word.
\nThen\u00a0Ctrl-X\u00a0to cut it.The vi approach?\u00a0dw\u00a0deletes the word.<\/p>\n

How about cutting\u00a0five\u00a0words with a Ctrl-X application?<\/p>\n

From the start of the words,\u00a0Ctrl-Shift-Right
\nCtrl-Shift-Right
\nCtrl-Shift-Right
\nCtrl-Shift-Right
\nCtrl-Shift-Right
\nCtrl-X<\/p>\n

And with vi?<\/p>\n

d5w<\/p>\n

The vi approach is far more versatile and actually more\u00a0intuitive: “X” and “V” are not obvious or memorable “Cut” and “Paste” commands, whereas “dw” to\u00a0delete a\u00a0word, and “p” to\u00a0put it back is perfectly straightforward. But “X” and “V” are what we all know, so whilst vi is clearly superior, it’s unfamiliar. Ergo, it is considered unfriendly. On no other basis, pure familiarity makes a Windows-like interface seem friendly. And as we learned in problem #1, Linux is necessarily different to Windows. Inescapably, Linux always appears less “user-friendly” than Windows.<\/p>\n

To avoid #5a problems, all you can really do is try and remember that\u00a0“user-friendly”\u00a0doesn’t mean\u00a0“What I’m used to”: Try doing things your usual way, and if it doesn’t work, try and work out what a total novice would do.<\/p>\n

 <\/p>\n

Subproblem #5b: Inefficient is friendly<\/h3>\n

This is a sad but inescapable fact. Paradoxically, the harder you make it to access an application’s functionality, the friendlier it can seem to be.<\/p>\n

This is because friendliness is added to an interface by using simple, visible ‘clues’ – the more, the better. After all, if a complete novice to computers is put in front of a WYSIWYG word processor and asked to make a bit of text bold, which is more likely:<\/p>\n