Windows and Linux are each at the heart of different communities with different opinions about the way the world works. To use Linux, you need to know a bit about those differences.
This guide will show how subtly different behaviours in Linux and Windows have evolved from radically different philosophies about the place that computers should occupy in the world.
Linux has a long, smooth learning curve
“I cannot teach anybody anything, I can only make them think.”
Windows programs generally recognise two types of problems: those that they were specifically designed to handle (which they make unbeatably easy), and everything else (which they make unbearably difficult). Most Windows users find everything very intuitive except “that incomprehensible geeky stuff”, which usually means the contents of the Windows folder, the registry, or DLLs.
Linux users often find themselves learning bits here and there, but rarely hit a wall of incomprehensible geekiness. This can be harder at first (where Windows wouldn't make you learn), but it pays off in the long-run (where Windows wouldn't teach you the skills).
For example, Windows encourages you to discount its text-based interface (cmd.exe) as incomprehensible geeky stuff, whereas Linux encourages you to learn its text-based interface (the terminal) one step at a time. You start by copying and pasting terminal commands, then as the months go by, you start to understand what different commands do. People that keep learning can eventually build whole programs out of terminal commands.
Some of the most important implications of the long, smooth learning curve are:
Less distinction between safe and dangerous areas
Windows makes it fairly easy to tell when you're getting into an area that's off-limits: you find yourself editing registry settings or looking at a folder full of DLLs.
Linux tries not to make anywhere off-limits. Instead, there are safe areas (like /home), danger areas (like /sys), caution areas (like /etc), curiousity areas (like /var/log), extreme danger areas (like /dev), and everything in-between. A good rule of thumb is that areas are about as dangerous as the jobs they do. For example, the /boot folder contains boot-up information - pretty dangerous. On the other hand, the /media folder contains things like CD-ROMs - pretty safe.
More social mobility
Windows' learning curve has created a strict caste system - users are expected to give up when they hit a wall, developers are supposed to attend the seminar or read the book. Linux's learning curve has created a more egalitarian system - everyone is supposed to follow the learning curve as far as they can, and no further.
The Ubuntu forums are a great example of this. Suggestions on the forums come from people that are neither “users” nor “developers” in the traditional sense, but more like self-appointed mechanics. They're generally people that have taught themselves how to fix their computer when it goes wrong, but don't know all the software maintenance tricks that a real programmer would know.
Linux has a different heritage
“By nature, men are nearly alike; by practice, they get to be wide apart.”
Like people, operating systems owe as much to their heritage as their current environment.
Linux is the youngest child of a family dating back minicomputers from 1969, Windows' family tree dates back to microcomputers from 1980. Windows and Linux are both filled with little anachronisms, and over time you just stop noticing them. Just like you got used to Windows' anachronisms, you'll get used to Linux ideas from the 60's (the filesystem), 70's (the terminal), 80's (configuration files), and 90's (“man” pages). Some of the more important anachronisms are:
Multiple users by default
Minicomputers in 1969 usually had lots of non-administrative users, because they were so expensive that you could only afford one between a large company. Microcomputers in 1980 were some of the first computers cheap and small enough to have a single user-administrator, hence the name “PC” - “Personal Computer”.
Linux's ancient ancestors had to protect users from each other, whereas Windows' ancient ancestors didn't even have to protect users from themselves. Linux has gradually adapted to cope with the personal computer, just as Windows has gradually adapted to cope with people running definitely-not-a-virus.scr. The process is still ongoing though - Windows has only recently started asking for a password to modify c:\Program Files\, whereas Linux has always required a password for its equivalent /usr.
No C: drive
Microcomputers in 1980 had very, very limited resources. Most computers had a floppy disk drive or two, but hard disks were extremely rare. Because floppy disks were only big enough to hold a handful of files, Microsoft's first operating system didn't bother with folders - if you wanted to group files together, you just put them on a different disk. So Microsoft used a simple system for naming your disks: your first floppy disk was called A, your second floppy disk was called B, and if you were lucky enough to own a hard disk, it was called C. Floppy disks gradually became obsolete, so now your first disk drive is called C.
Minicomputers in 1969 were also very limited, but needed to be more malleable. If a company's computer ran out of space, the company would have to spend $5,500 buying an 80lb tape drive with about 270KB more storage. Linux's ancestors had a single filesystem with actual drives put wherever they were needed, so when the accounting department used up all the space on the company computer, engineers could call the new drive /home/acct, and pretend it was a normal home directory. Storage devices gradually became small enough to hold in your hand, and spacious enough not to need clever tricks, so now your USB memory stick is called /media/disk.
Linux believes in creative destruction
“Economic progress, in capitalist society, means turmoil.”
Most Microsoft products try to follow a simple rule: if something works in version N of a Microsoft product, it should work the same in all versions greater than N. This gives Windows a great deal of stability, but can also lead to stagnation. For example, many features in Excel 2007 were designed to work exactly the same way they worked in 1987. That means that you can open a 20-year-old financial report, and be confident that the formulas were calculated the same way they were when the report was created. But it also means that the formulas in this years' financial report use calculations with bugs that have been known for over 20 years.
Most Linux programs also try to follow a simple rule: if something is standing in the way of progress, it gets run over. This makes Linux stronger in the long-term, but causes more turbulence in the short-term. For example, many programs for viewing analogue television have been completely replaced with the move to digital, because the digital TV experience is different enough to warrant a new approach.
The most important thing to remember about Linux development is:
Distributions manage the complexity
Because Windows remains very constant over time, it's common to install software from all over the web. Because Linux is quite fluid over time, programs on websites will often require features that were removed from Ubuntu last year, or won't be included until next year. Needless to say, this goes double for device drivers.
Linux distributions like Ubuntu add some stability to your experience, by providing a collection of programs that are all guaranteed to work properly together.
Linux is about freedom of choice
“Man is condemned to be free; because once thrown into the world, he is responsible for everything he does.”
There's no central authority dictating what Linux should be - users are given total freedom of choice over how their computer behaves. This compares to Microsoft's philosophy of freedom from choice - users are required to make the minimum number of choices necessary to get their work done.
For example, there's only one Windows, but there are many Linuxes. If you choose to use Linux, you have to decide between Ubuntu, Debian, RedHat, SUSE, and many other minor distributions. Each of these choices represents a different community, with different values and a different take on what “Linux” really is. And even within Ubuntu, you have to decide between Ubuntu, Kubuntu, and Xubuntu.
Linux never has one of anything
If you can find one of something in Linux, you can usually find more. If you don't like your desktop theme, office suite, or instant messaging application, then you can tune your system exactly how you like it.
The opposite is always true
For everything you've just read, there's a part of Linux that made the opposite choice. OpenOffice decided not to have a learning curve, GNOME has a similar heritage to Windows, and Firefox tries very hard to make sure pages written in 1995 look like they did in 1995.
“You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.”
Linux isn't just Windows with funny colours, and Windows isn't a poor man's Linux. Both represent decades of hard work by people with different opinions about the world, and both need to be treated differently if you want to get the most out of them.