Linux is Not Windows

If, as I do, you spend any amount of time on a Linux forum, you’ll eventually grow exasperated, as I did, by the number of posts that run something like this:

"Hi! I’ve been using Linux for a few days, and it’s mostly great. But, it’s a shame that [something or other] doesn’t work like it does on Windows. Why don’t all the developers completely rewrite all the software so it acts more like Windows? I’m sure Linux would get lots more users if they did!"

You may even have had a go at answering these questions, only to be shot down in flames by a Linux newbie who takes it as read that his idea, based on years of experience with a different OS plus a few hours on Linux, is revolutionarily brilliant, and you only don’t like it because you’re an "old-school Linux user" who thinks that GUIs are the spawn of the Devil and everybody should be forced to stick to the CLI.

This article is aimed at explaining to those newbies exactly why their ideas tend to get flamed rather than embraced.

First and foremost, the most cherished argument: "If Linux did this, it would get lots more people converting from Windows!"

So, allow me to explain something that is fundamental to understanding Linux: The Linux community is not trying to provide the average Windows user with a replacement OS. The goal of Linux is not "Linux on every desktop".

Really. It honestly isn’t.. Yes, they’re both an OS. Yes, they can both be used for the same things. But that makes Linux an alternative, not a replacement. It might seem an insignificant distinction, but it’s actually a vitally important one.

Linux <=> Windows is like Motorbikes <=> Cars: Both are vehicles that get you from A to B via the roads. But they’re different shapes, different sizes, have different controls, and they work in fundamentally different ways. They are not freely interchangeable. They have different uses and different strengths & weaknesses, and you should pick whichever is appropriate, not pick one and expect it to do everything that the other can do.

Somebody who drives a car might be sitting in a long queue of traffic someday and see a motorbike go sailing past him. He might envy the biker’s ability to largely ignore something that is a crippling problem to a car. If that driver then said "I know all about cars, so I must know all about motorbikes!" then he’d be wrong.

  • If that driver bought a bike and then found that he was confused by the accelerator being a hand-controlled twist-grip instead of a foot-controlled pedal, he might complain that motorbikes should be fitted with a gas pedal.
  • If that driver had a wife and two kids, he might find the bike’s single passenger capacity a flaw. He might suggest that bikes be re-built so they could carry four people, two abreast.
  • If that driver were to try and drive away, only to find that he fell over because he wasn’t used to having to keep balance, he might suggest that bikes should be re-designed with four wheels.
  • If the driver were to find himself leaning around the corners, he might suggest bikes should be fitted with stabilisers to keep them upright when cornering.
  • If the driver wanted to keep his bike from being stolen, he might complain that there were no doors to lock potential thieves out, making his bike much more likely to be stolen than a car.
  • If the driver found a crash helmet an encumberance, he might suggest that an airbag in the bike’s handlebars could be fitted as an alternative to the annoying helmet.

And in every case, he would be wrong. Because he thinks that a motorbike replaces a car, he thinks it can and should do everything a car can do. He thinks it can work in the same way that a car does, that ‘missing’ car features can just be grafted on.

In the same way, well-meaning Linux newcomers make suggestions about making Linux more like what they’re used to. And they get nowhere, for all the same reasons. Linux and Windows might both be used for the same purposes, but so are a car & motorbike. That doesn’t mean you can swap directly from one to the other, and it doesn’t mean features can or should be swapped directly from one to the other.

Too many people think that migrating from Windows to Linux is like switching from a BMW to a Mercedes. They think that the controls should be the same, their experience should transfer directly, and all differences should be largely cosmetic. They think that "I need a car to use a road, I need an OS to use a computer. Cars all work the same way, therefore OSes should all work the same way." But this is not accurate. "I need a vehicle to use a road, I need an OS to use a computer. I know how to drive a car, I’m ignorant about motorbikes. I know how to use Windows, I’m ignorant about Linux."this is accurate.

A Windows user must realize that he’s only an experienced Windows user, not an experienced computer user; just like a car driver is only a car driver, not an all-road-vehicles driver. A Windows user on Linux must realize that he has just become a novice again, just like a car driver on a motorbike. A Windows user must be willing to learn that there are different ways of accomplishing the same task, just as a car driver must get used to the handlebars replacing a wheel and the need for a crash helmet he never had to use before. And they have to be prepared to accept that "different" does not mean "inferior".

This simple fact causes great difficulty for the more established Windows users. They come to Linux with many Windows habits ingrained and an attitude of "I know exactly how to use a computer, thank you very much." The problem is, they don’t. They only know how to use Windows. When they come to a different OS, these "power users" can be the ones who have the worst problems: They have far more to unlearn.

Where a newbie will just say "I don’t know" and start exploring or asking on forums, the Windows Power User will say "I know how to do this, I just do this, this, this, and then. . . It doesn’t work! Stupid OS!" And then they’ll say "If knowledgeable me couldn’t get it working, a newbie will stand no chance! Linux is nowhere near ready for desktop use!". They don’t realise that all their knowledge is working against them, causing them to have more problems than the less knowledgeable users. They’ve made the mistake of thinking Linux is different software doing the same thing as Windows, when it’s actually different software doing different things. It’s not doing a bad job of the same tasks, it’s doing a good job of alternative tasks.

Linux is an alternative to Windows, but not a replacement. It will never be a replacement, because it has incompatible goals. Microsoft’s goal is to get their software onto as many PCs as posible, as their priority is profit. Linux has no such goal, because Linux is free. It has a different priority.

To understand this is to understand FOSS . It’s perfectly understandable that Linux newbies don’t understand it yet – they’re new to it. They’re used to thinking in terms of proprietary software. So let me explain it:

Typical FOSS software is created by somebody who looks around, doesn’t find any pre-existing software he likes, and so writes his own. Then, because he’s such a nice guy, he throws open the source and says to the world "Help yourself!". He can do this, because it costs nothing to duplicate software, so it costs him no more to give it to the whole world than it would to keep it to himself. He doesn’t suffer by giving his software away.

However, the important thing to remember is: He doesn’t benefit from giving his software away, either. Whether it gets used by one person, or by one billion, makes no difference to the developer. Oh, sure, he gets the satisfaction of knowing he’s made a popular product: The number of people using it can be a nice ego boost; a way, if you will, of keeping score. But it doesn’t make him any money: It’s FOSS.

If the software is a success, other people get interested in it, and they help improve it. That’s the biggest advantage of FOSS: Every user is a potential developer. Everybody can chip in and do their part in making software work better, do more, be less buggy. It’s great when a piece of software attracts a community of developers. But it’s great for the software. It makes the software better. It doesn’t make the developer richer. It just creates more demands on his time.

FOSS is the exact opposite of proprietary software like Windows: FOSS is all about the software. It’s not about the number of end users. Software that works well but has only a few users is considers a failure by commercial software standards, but a success by FOSS ones.

FOSS is about making good quality software, software that can DO things. If you want to use it, you’re expected to invest time in learning how to use it. It was created and given to you, free of charge, by people who invested a lot of their own time in it for no personal gain. The least you could do to repay their contribution is invest a little time of your own before you complain that it doesn’t work like the parallel Windows software.

"Aha, now I’ve got you,"says a newbie smugly. "There are Linux projects with the goal of replacing Windows, not just being an alternative."

It’s easy to see where that idea comes from. KDE and Gnome, for instance, provide a desktop environment that’s far more Windows-like than typical Linux window managers and the CLI. Linspire is a distro based almost entirely around the idea of making Linux Windows-like.

However, paradoxically, these prove my point better than they prove the newbie’s.

Why? Because these projects are normal FOSS projects, revolving entirely around making the software better. The only difference is, one of the definitions of quality in these projects is "How easily can a Windows user use it?"

As soon as you factor this in, you can’t help but agree that these are 100% typical Linux, with the sole aim of improving software. These are projects made by even-more-selfless-than-usual Linux developers: They aren’t making software for their own use, as they know Linux very well. Instead, they’re making software entirely for other people’s benefit: Software that makes the transition from Windows to Linux easier.

These developers have recognised that there are Windows users who want to move to Linux, and they’ve put a lot of effort into creating a Linux environment which Windows users find comfortably familiar. But they haven’t done so to try and replace Windows, though the end result might give that impression. The end goal is what makes the difference: The goal is not to make a Windows replacement; the goal is to ease the Windows-user’s transition to Linux.

It’s not uncommon to see community hostility towards these projects. Some of it for rational, understandable reasons ("KDE is a resource hog, so use Fluxbox") but some seems to be an irrational, hostile, "Windows-like software is bad" attitude. This isn’t, actually, an anti-MS or anti-Windows attitude. Instead, it’s the far more compehensible dislike of what isn’t understood.

The ‘typical’ Linux user is a hobbyist: He uses computers because computers are fun, programming is fun, hacking is fun. And Linux is a far better OS for a hacking hobbyist: He can take it apart to its most fundamental level, and reassemble it exactly as he sees fit.

However, the current influx of Linux users has a large percentage of non-hobbyist non-hackers. They want a computer that Just Works, a computer that works like Windows. They aren’t interested in spending time setting up Linux to make it work the way they want it, they want it to work like that out-of-the-box.

And that’s perfectly okay, but from the typical Linux user’s perspective, this is like somebody who wants a Lego car that comes pre-assembled and glued together so it can’t come apart. It is alien to their understanding. The only way they can react is with a baffled "Why would anybody want that?"

It’s baffling. If you want a ready-made model car, buy a toy car. If you want a car you can build and take apart, buy Lego. Why would anybody want a Lego car that can only be used as a toy car? The whole point of Lego is that you have fun assembling it yourself!

This is how a typical Linux user reacts to the "Why can’t it Just Work?" brigade: "If you want it to Just Work, use Windows. If you want to hack it, use Linux. Why do you want to switch to Linux if you have no interest in taking advantage of its open source nature?"

The answer, usually, is that they don’t actually want to move to Linux. They just want to get away from Windows: They’re running away from viruses; they’re fleeing malware; they’re striving to be free of restrictions on how they use their paid-for software; they’re trying to escape from the clutches of the E.U.L.A. They aren’t trying to get into Linux, they’re trying to get out of Windows. Linux is simply the best-known alternative. 

More on that later. . .

You might think "Okay, that explains why developers don’t make a deliberate effort to make their software work like Windows. But surely Linux software could be given a GUI that’s WIndows-user-friendly without it interfering with FOSS principles?"

There are a few reasons why this isn’t the case.

Firstly: Do you really think that somebody who creates a piece of software deliberately gives it a lousy user interface?

When somebody devotes a large chunk of his own time to create a piece of software, he will make the user interface (UI) as good as possible. The UI is a hugely important part of the software: there’s no point having functionality if you can’t access it via the UI. You might not know what it is, but there is always a reason why the UI works the way it does. That reason? Because it is the best UI the creator could create.

Before you insist that a more Windows-like UI would make the software better, bear this fact in mind: The creator of this software, a coder who, by definition, knows far more than you do about this piece of software, doesn’t agree with you. He might be wrong, but the odds are against it.

Secondly: There already ARE nice, Windows-user-friendly GUI frontends available. I can’t think of any function off the top of my head that you can’t control via a GUI, no matter how high-level. You can compile a kernel (make xconfig), set up your firewall (fwbuilder), partition your hard drive (qtparted). . . it’s all there, pretty, interactive, intuitive, and user-friendly.

But the ‘release cycle’ of Linux isn’t like Windows. You don’t get the finished, highly-polished GUI package released right from the start. GUIs add complexity and no functionality to software. A developer doesn’t sit down and design a pretty GUI that does nothing, he sits down and creates a piece of software that does what he needs it to do.

The first thing a piece of software does is be usable from the command line interface (CLI). It will probably have all sorts of invocation options and maybe a lengthy configuration file. This is how it starts out, because it’s functionality that’s required. Everything else comes later. And even when software has a nice GUI, it’s important to remember it can still usually be controlled fully from the CLI and the config files.

  • This is because the CLI has many advantages: The CLI is universal. Every Linux system has a CLI. Every executable can be run from the CLI. It’s easy to operate software via the CLI remotely.
    None of these are true of the GUI: Some Linux machines don’t have the X11 windowing system installed; Some software has no GUI; Some software is not available from GUI menus; It’s often not easy or practical to use a GUI tool remotely.

Lastly, multiple GUI frontends can exist to do the same job, and there’s no telling which you may have installed.

So do remember, if you ask "How do I. . ?", you’ll mostly be told how to do it via the CLI. That doesn’t mean that it can only be done from the CLI. It just reflects the relative importance that the GUI has compared to the CLI in the development of a software project.

  • Windows is totally GUI-centric. It’s a GUI-based OS with a lousy (but soon to improve) CLI. There’s pretty much no such thing as non-GUI Windows software. That tends to make people think of the GUI as a vital and integral part of software. But in Linux, software gets released as soon as it’s functional. Only after it’s become stable, reasonably bug-free, and feature-rich, does it become worth adding a GUI.
    Try thinking about software without a helpful GUI as a "sneak preview" rather than a finished product. FOSS is very rarely ‘finished’, it’s always being improved. In time, it will be made user-friendly. But most of the time, it’s more important to make it work better than make it ‘feel’ better. Be glad you’ve got the functionality long before all the wimps who need a good GUI, instead of demanding tomorrow’s software today. FOSS is more of a journey than a destination.

The last thing you have to bear in mind is, GUIs for software will often be a separate piece of software. It may even have been developed completely independantly of the original piece of software, by completely separate developers. If you want a GUI, it’s not unlikely that it will be a separate installation, rather than all one piece.

This does, admittedly, mean an extra step to get that elusive, ‘Windowsy’ GUI behaviour, but that shouldn’t detract from the fact that you can, right now, do just about anything you really want to via a pretty, "just like Windows" GUI. You just have to remember: a GUI is usually the LAST step, and not the first. Linux doesn’t do form over function.

Thirdly: Linux is deliberately designed for the well-informed, knowledgeable user, rather than the ignorant beginner. This is for two reasons:

  • Ignorance may be bliss, but it’s also short-lived. Knowledge is eternal. It might take days, weeks, or months to get your knowledge level up from "Linux newbie" to "average Linux user", but once it’s there, you’ve got years of Linux use ahead of you.
    Putting in lots of code to make software easier for newcomers would be like permanently bolting stabiliser wheels to all bicycles. They might make it easier right at the start, but after that. . ?
    You wouldn’t buy a bicycle with stabilisers on it now, I’m sure. And not because you’re some anti-user-friendly freak. No, it would be because they’re useless to you, and useless to anybody other than a beginner, and all they’d do is get in the way.
  • No matter how good software is, it’s only as good as its user. The most secure door in the world is no barrier to thieves if you leave the window open, the door unlocked, or the keys in the lock. The most perfectly-tuned engine in the world won’t get very far if you fill it with diesel fuel instead of petrol.
    Linux puts all power in the hands of the user. That includes the power to break it. Nobody wins in that situation. The only way to keep Linux working well is to learn enough to know what you’re doing. Making it easier for a user to meddle with functionality he doesn’t understand would just make it more likely he’ll break something by accident.

Fourthly: Where, in any of the above text, did you see a way that FOSS would actually benefit from attracting lots of typical Windows users?

Take your time. Re-read it, if you like. I’ll wait.

The guiding principle of Linux and FOSS is "make good software". It is not "Make Windows-replacing software". The only thing a horde of typical Windows users will contribute to Linux is complaints. What will they complain? "It doesn’t work like this on Windows."

No, it doesn’t. If it worked like Windows, Linux would suck. It would be an inferior copy that nobody would use. The reason people are so passionately fond of Linux is that it doesn’t work like Windows. It doesn’t do everything for you, it doesn’t assume you’re a perpetual ignorant newbie, it doesn’t hide all the inner workings from you.

Windows chauffeurs you around; Linux hands you the keys and puts you in the driver’s seat. If you can’t drive, that’s your problem. And your fault. Plenty of people will help you learn if you ask. And if you make a suggestion that’s the equivalent of fitting cruise control, you might get somewhere: This leaves the driver in control, but takes some of the effort out. But you’ll get very short shrift if you try and convince anybody that what Linux really, really needs is a chauffeur.

"But it would get Linux so much more mainstream!", the newbie cries.

It might well do. But how many Linux developers would benefit from Linux going mainstream? Linux is free, as in beer. None of the people creating Linux profit from it gaining a bigger userbase. None of the people on the Linux forums profit from it gaining a bigger userbase. Linux’s aim is not "gain a bigger userbase" – that’s the goal of proprietary software.

Linux’s goal is to make a really good operating system. Developers are busy adding features, removing bugs, and improving existing implementations. They’re not busy putting up billboards advertising how good their stuff is. That should tell you something about where their priorities are.

And look at what this approach has done to Linux’s userbase: It’s made it grow. Linux started out tiny, and has become huge. The reason it has attracted such widespread acclaim? Because its focus has always been on quality. The users attracted to Linux are users who want the freedom and quality that only FOSS can give them. Linux became big because it didn’t care how big it got. Developers focussed solely on making it work, and work well, and so they attracted users who wanted an OS that worked, and worked well.

To suddenly throw that all away and focus instead of making Linux all about replacing Windows would be to kill the very thing that has made Linux what it is. There are corporations out there that have seen Linux’s growth, and want to cash in on it. They’re frustrated by the GPL, which makes it very hard for them to sell Linux at Microsoft prices. "Linux will die if it stays open," they say, "as nobody can make money off it like that."

They don’t realize that making Linux proprietary would be killing the goose that lays the golden eggs. Linux became big because it was FOSS, and nobody was trying to make it a Windows substitute. Linux is thriving because it’s fighting Windows on a front that Microsoft can never defeat it on: Open-ness and quality.

To most Windows users, Linux is an inferior Windows copy. It has less apparent functionality, less integration, and lots more complexity. To that type of user, Linux is seen as a bad OS. And correctly so: It doesn’t meet their needs. Their needs are an OS that’s very simple to use and does everything without them needing to learn anything.

Windows is created for non-tech users. The widespread perception amongst those users is that Linux is hard to use. This is not the case, but it’s an understandable misconception.

Linux is actually blissfully easy to use. Genuinely. It is really easy to use. The reason it isn’t perceived this way? Because the term "ease of use" has been so badly distorted. In common usage, "easy to use" now means "easy to do something without knowing beforehand how to do it". But that’s not really "easy to use", is it? That’s "easy to figure out". It’s like the difference between:

  • a safe with a notice above it saying "You unlock this safe by turning the dial to 32 then 64 then 18 then 9, then turn the key and lift the handle up"


  • a car that can be unlocked by pressing the remote control "unlock" button.

It’s far easier to unlock the car, right? One button from anywhere near the car, opposed to numerous highly-specific dial-turns. However, it’s easier for somebody who doesn’t know how to unlock either to get the safe open than the car: the safe has clear instructions in place, while the car just has buttons that aren’t even attached to the car.

Linux is the same. It’s easy to use if you know how to use it. It’s easy to use, but it’s not always easy to learn. Only if you are willing to invest the time in learning Linux will you find it easy. Inescapably, the more you break a task down into simple steps, the more steps you have to take to accomplish that task.

As a really simple example, take this arbitrary exercise: You want to move five lines (paragraphs) from the middle of a text document to the end.

In MS Word; MS WordPad; or MS Notepad; all "user-friendly" Windows text editors, the quickest way to do this is:
– Ctrl-Shift-Down

(That’s assuming you use the keyboard. Otherwise, you need some Click-and-Drag mouse operations and a reliable autoscroll.)

In vi, however, it is:
– d5d
– Shift-g
– p

Vi, which is about as "user-unfriendly" as it gets, beats Microsoft’s offerings hands down. Why? Because vi was designed for functionality, while Microsoft design to be "user-friendly". Microsoft break everything down into easy steps, and so it takes far more steps to accomplish the same task.

This makes vi far quicker and easier to use for virtually all text-editing tasks. Just so long as you know how to use it. If you don’t know "d5d" means "Place five lines of text in the buffer, and delete them from the document" then you’re going to struggle to make vi work. But if you DO know, then you’re going to fly along.

So when some newbie sees how fast and easily an experienced vi user can do stuff, he readily agrees that vi is superior to Word for text editing. Then he tries to use it himself. He starts it up, gets a screen full of ~s, and when he types, nothing appears on the screen.

He finds out about the text-entry and command modes, and starts trying to use vi with a limited knowledge of it’s functions. He struggles, as there are so many things he has to learn before he can make vi work. Then he complains "vi would be much better if it was as easy to use as Word!"

But the real problem is "I don’t know how to use vi and can’t be bothered to learn." But that would mean the problem was with him, so he blames his problems on the software instead. Never mind all the thousands of people who are happily using vi without any problems: It’s too hard to use, and must be changed!

And believe me, if he can make a text editor that is as "user-friendly" as Word and as functional as vi, he’ll be met with nothing but applause. In fact, he’ll probably be awarded the Nobel Prize For Extreme Cleverness, as nobody else has been able to do it yet. But just whining about vi being hard to use will be met with derision, because there’s no problem with vi, the problem is with him.

It’s like buying da Vinci’s painbrush and then complaining that you still can’t paint. The brush wasn’t what made the Mona Lisa, it was the skill of the artist. The brush is a tool that relies on the user’s skill. There’s no way to get that skill other than practice.

Same with vi. Same with many pieces of Linux software that new users complain is "too hard" or "not intuitive enough", whether they’re talking about a text editor, a package manager, or the command line itself.

Before you start insisting that something about Linux needs fixing, there’s one important question to ask: "Do experienced users have a problem with this?"

If the answer is "No", then the problem is on your end. If other people can use it successfully, why can’t you? Have you taken the time to learn how to use it? Or did you just expect it to work for you right from the word ‘Go’?

"User-friendly" and "raw functionality" are exclusive. All the little buttons and drop-down menus that are vital to make a piece of software simple to use are just obstacles that get in the way of the experienced user. It’s the difference between navigating from A to B with a map & compass, and going from A to B by following the road signs: Anybody can get there by following the signs, but they’ll take twice as long as somebody who knows how to go straight there.


If I want to paste the value of a formula in Excel, I have to do it via the Edit->Paste Special->Paste Values menus. I don’t want to navigate through all these pain-in-the-rear ‘friendly’ menus, sub-menus and dialogue boxes. I just want to do it. And, to be fair, if I reprogram the shortcut keys and record some macros, I can make Excel and Word do most things at the push of a button.

But that’s not really user-friendly, is it? That’s still requiring the user to invest a lot of time in the software. Linux requires you to put the time in to learn how to use the existing functionality. "User-friendly" software makes you put the time in to creating the functionality.

If that’s the way you prefer it, that’s fine, go ahead and do it that way. But don’t ever lose sight of the fact that the fault lies with your ignorance and not with the software itself. All Linux software is supremely easy to use, once you know how to use it. If you don’t know, it won’t be easy, and it won’t be because the software is at fault.

Now, you might be starting to feel that Linux has an attitude problem. It doesn’t want users, it doesn’t want to make life easy for its users. . . it’s just for snobbish l33t h4xx0r5!

Nothing could be farther from the truth. Of course Linux wants users! And of course it doesn’t want to make things hard. Quite the opposite: Hard to use software is, by definition, bad software.

But you have to realize, its definitions may be different to yours, and different to the ‘traditional’ proprietary software culture.

Linux wants users who want Linux. And that doesn’t mean just the name. It means everything: The free, open-source software; the ability to tinker with your software; the position of being in the driver’s seat, in total control.

That’s what Linux is. That’s what it’s all about. People migrate to Linux because they’re sick of viruses, sick of BSODs, sick of spyware. That’s understandable. But those people don’t want Linux. They really just want Windows without the flaws. They don’t really want Linux. So why should Linux want them?

But if they give Linux a try because of viruses and spyware, and then decide that they love the idea of an OS that they control. . . That’s when they want Linux for its own sake. And that’s when Linux wants them.

Before you decide you want to switch to Linux, ask yourself "Why do I want to switch?"

If the answer is "I want an OS that puts all the power in the hands of the user and expects him to know how to use it": Get Linux. You’ll have to invest a substantial amount of time and effort before you get it to where you want it, but you’ll eventually be rewarded with a computer that works exactly the way you want it to.

BUT. . .

If the answer is "I want Windows without the problems": Do a clean install of Windows XP SP2; set up a good firewall; install a good anti-virus; never use IE for browsing the web; update regularly; reboot after each software install; and read about good security practices. I myself have used Windows from 3.1 through 95, 98, NT, and XP, and I have never once had a virus, suffered from spyware, or been cracked. Windows can be a safe and stable OS, but it relies on you keeping it that way.

If the answer is "I want a replacement for Windows without the problems": Buy an Apple Mac. I’ve heard wonderful things about the Tiger release of OS X, and they’ve got some lovely-looking hardware. It’ll cost you a new computer, but it’ll get you what you want.

In either case, don’t switch to Linux. You’ll be dissapointed with both the software and the community. Linux is not Windows.



Leave a Reply

Your email address will not be published.