(Linux is Not Windows)
(Note: denotes a link to a relevant web article.)
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
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 encumbrance, 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 possible, 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 considered 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
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 comprehensible dislike of what isn’t
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
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
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
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.
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
independently 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
Fourthly: Where, in any of the above text, did you see a way
that FOSS would actually benefit from attracting lots of typical
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
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 on 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
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:
(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:
(Or if you know vi really well, just ":1,5m$" will also work!)
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
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.
From UserFriendly.org Copyright ? 2004 J.D. "Illiad" Frazer.
It’s like buying da Vinci’s paintbrush 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
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
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 disappointed with both the software and the community. Linux is not Windows.