The versions of Linux are referred to as distributions. All the Linux distributions released around the same time frame will use the same kernel (well you can say that it’s the guts of the Operating System). They differ in the add-on software provided, GUI, install process, price (mostly it’s free), documentation and technical support. Both Linux and Windows come in desktop and server editions.
Linux is customizable in a way that Windows is not. There are many special purpose versions of Linux above and beyond the full blown distributions described above. For example, NASLite is a version of Linux that runs off a single floppy disk and converts an old computer into a file server. This ultra small edition of Linux is capable of networking, file sharing and being a web server. I sure windows can’t do this.
Both Linux and Windows provide a GUI and a command line interface. The Windows GUI has changed from Windows 3.1 to Windows 95 (drastically) to Windows 2000 (slightly) to Windows XP (fairly large) and is slated to change again with the next version of Windows, the one that will replace XP. Windows XP has a themes feature that offers some customization of the look and feel of the GUI.
Linux typically provides two GUIs, KDE and Gnome. See a screen shot of Lycoris and Lindows in action from the Wal-Mart web site. The lynucs.org web site has examples of many substantially different Linux GUIs. Of the major Linux distributions, Lindows has made their user interface look more like Windows than the others. Here is a screen shot of Linux made to look like Windows XP. Then too, there is XPde for Linux which really makes Linux look like Windows. Quoting their web site "It's a desktop environment (XPde) and a window manager (XPwm) for Linux. It tries to make easier for Windows XP users to use a Linux box."
Is the flexibility of the Linux GUI a good thing? Yes and No. While advanced users can customize things to their liking, it makes things harder on new users for whom every Linux computer they encounter may look and act differently.

Text Mode Interface
This is also known as a command interpreter. Windows users sometimes call it a DOS prompt. Linux users refer to it as a shell. Each version of Windows has a single command interpreter, but the different flavors of Windows have different interpreters. In general, the command interpreters in the Windows 9x series are very similar to each other and the NT class versions of Windows (NT, 2000, XP) also have similar command interpreters. There is however differences between a Windows 9x command interpreter and one in an NT class flavor of Windows.
Linux, like all versions of Unix, supports multiple command interpreters, but it usually uses one called BASH (Bourne Again Shell). Others are the Korn shell, the Bourne shell, ash and the C shell (pun, no doubt, intended).
Cost
For desktop or home use, Linux is very cheap or free, Windows is expensive (Bill Gates is greedy). For server use, Linux is very cheap compared to Windows. Microsoft allows a single copy of Windows to be used on only one computer (That’s how Gates got to be a billionaire). Starting with Windows XP, they use software to enforce this rule (Windows Product Activation at first, later Genuine Windows). In contrast, once you have purchased Linux, you can run it on any number of computers for no additional charge.
The irony here is that Windows rose to dominance, way back when, in large part by undercutting the competition (Macs) on cost. Now Linux may do the same thing to Windows.
You can buy a Linux book and get the operating system included with the book for free. You can also download Linux for free from each of the Linux vendors (assuming your Internet connection is fast enough for a 600 MB file and you have a CD burner) or from www.linuxiso.org. Both these options however, come without technical support. All versions of the Ubuntu distribution are free.
I don't know if there will ever be an objective measure of the ongoing care and feeding costs for Linux vs. Windows. If there were however, it would have to consider:
- Dealing with bugs in the operating system
- Dealing with bugs in application software
- Dealing with viruses, worms, Spyware, etc.(big advantage to Linux here)
- Dealing with software upgrades to new versions (both the OS and applications)
Getting the Operating System
Nothing need be said about getting Windows. As for Linux, you have to look around to buy a new computer with it pre-installed. The major PC vendors sell Linux based machines only as servers, not to consumers.
If you are up to installing Linux yourself, you can buy a new computer without any operating system, perfect for installing your favorite flavor of Linux.
And what about installing Windows and Linux? Installing Windows from scratch is much easier than installing Linux from scratch, in my opinion. If nothing else, installing Windows is always the same whereas the different distributions of Linux have their own installation programs (these may even change with different versions of the same distribution). You can't read an article on this however, without it saying how installing Linux is getting easier all the time.
Installing Linux on a computer without an OS is much easier than installing it on a machine with an existing OS that you want to preserve. The later should only be attempted by experts, it is all too easy to lose the pre-existing OS and setting up a dual-boot environment is tricky.
Part of the difficulty in installing Linux is terminology and documentation. The install process is designed by Linux people for Linux people. A Windows-only person is likely to encounter terminology and concepts they are unfamiliar with.
Running from CD
One thing that Linux can do that Windows can not, is run from a CD. To run Windows, it has to first be installed to your hard disk.
Normally Linux also runs from a hard disk, but there are quite a few versions of Linux that run completely from a CD without having to be installed to a hard disk (the term for this is a "Live" CD). This is a great way for Windows users to experience Linux for the first time. Among the Linux distributions that have a CD-only version are Knoppix, Gnoppix, SuSE (called Live-Eval), Linspire (formerly Lindows) and Slackware. The version of Linspire that runs from a CD used to be called Lindows CD, then it was called Lindows Live and now it is called Linspire Live. It's available for download.
And you're not limited to CDs. A number of Linux distributions can run from a thumb drive (a.k.a flash drive, USB drive).
Application software: There is more application software available for Windows.
Obtaining application software: If you buy a copy of Windows on a CD-ROM, you get no application software with it. If you buy a copy of Linux on a CD-ROM (or two or three) it typically comes with free application software.
Application software installation: The installation of applications under Windows, while not standardized, is generally consistent. Installing software under Linux varies with each distribution and is not nearly as simple, easy or obvious as Windows.
Viruses and Spyware: Spyware has become a generic term, much like "Xerox machine" (which is taken to mean any copying machine, not just those made by the Xerox corporation). The term "Spyware" now refers to a whole host of malicious software such as worms, Trojans, dialers, keystroke loggers, browser hijackers and, of course, actual Spyware. The vast majority of all malicious software (of all types) runs on Windows. I don't know the actual percentages, but it wouldn't surprise me if it was 98% or so.
Spyware on Windows has become such a problem that Microsoft purchased an anti-Spyware software company and released their product as the Microsoft Anti-Spyware program in early 2005. As this is written the product is still in beta form, but Microsoft has stated that it will be free even when complete. Spyware is the worst problem effecting Windows based computers. In addition to running an anti-virus program constantly, Windows users also need an anti-Spyware program constantly running in the background to protect them.
Linux privileges are basically whether you can read, modify or execute a file. Files in Linux are always owned by a specific user and group. Windows has similar file-related privileges but only when using the NTFS file system. The earlier FAT and FAT32 file systems had no file level security.
I'm told that Windows NTFS permissions are a bit more functional than those in Linux, but that Linux distributions are starting to use extended Access Control Lists as a part of the file system, bringing them more on par with NTFS. (I won't swear by this)
Bugs: All software has and will have bugs (programming errors). Linux has a reputation for fewer bugs than Windows, but it certainly has its fair share. This is a difficult thing to judge and finding an impartial source on this subject is also difficult.
In March 28, 2003, Microsoft decreed that it will not issue a Windows NT4 bug fix for a security problem that effects Windows 2000, XP and NT4. They would prefer customers to move off of NT4, thus making Microsoft more money. It is their ball, their bat and their field. This is not true with an open source operating system such as Linux. No one can decree that a bug will not be fixed in a specific version of Linux.
The difference in OS development methodologies may explain why Linux is considered more stable. Windows is developed by faceless programmers whose mistakes are hidden from the outside world because Microsoft does not publish the underlying code for Windows. They consider it a trade secret. In contrast, Linux is developed by hundreds of programmers all over the world. They publish the source code for the operating system and any interested programmer, anywhere in the world can review it. Besides the wide audience for peer review, there is likely to be pride of ownership on the part of the developers of Linux that can not exist with Windows. The official term is "egoboo" which refers to the rush a programmer gets from public recognition, especially for something done for free.
Is It Soup Yet? When is a new version of an Operating System done? Hard to say. All software has bugs and OSs, being very large software is very likely to have many bugs. When a new version of an Operating System is being developed, someone, at some point, has to say "enough is enough". That is, someone decides that a reasonable number of bugs have been found and fixed and the OS can now be considered finished. Linux and Windows differ greatly in how this decision is made.
With Linux, the decision is made by a computer nerd with a public reputation to protect. With Windows, the decision is made by business people with billions of dollars in profit at stake. Speaks for itself.
Software restrictions: A program written for Linux will not run under Windows and vice versa. For example, Microsoft makes a version of Office for Windows and another version for the Mac. They are two different products, each capable of only running on the operating system it was designed for. There is no version of Microsoft Office for Linux. Some programs, such as Firefox, are available for multiple operating systems (Firefox runs on Linux, Windows, Macs and more). Vendors of such software go to the trouble of making different versions for each supported operating system.
This is the rule, but there are a fair number of exceptions.
The most ambitious exceptions allow for installing one operating system under another. For example, on a computer running Linux (referred to as the host or native OS), you can install a copy of Windows (referred to, in this case, as the guest OS). In the Windows OS running under Linux, you can install any and all Windows programs. Somewhat like a split personality, one computer can run two operating systems at the same time. The guest operating system runs in an environment referred to as a virtual machine (VM). A company called VMware was the first to market with a virtual machine product (also called VMware) for personal computers. Virtual PC, competes with VMware. The two products differ in their supported host and guest operating systems. Virtual PC used to be from Connectix but Microsoft purchased them in 2003. The first release from Microsoft, Virtual PC 2004 will run Linux, but Microsoft does not provide support. Microsoft also lowered the price to $129.
Supported Hardware Devices: More hardware works with Windows than works with Linux. This is because hardware vendors write drivers for Windows more often than they do for Linux. When Windows XP came out however, many existing peripherals would not work with it because XP required new drivers and the vendors had little motivation to write drivers for old hardware.
Hardware the OS runs on: (Updated March 2005) Linux runs on many different hardware platforms, not so with Windows. For example, Windows NT used to run on MIPS CPUs until Microsoft changed their mind. It also used to run on Alpha CPUs, again, until Microsoft changed their mind. No one gets to change their mind with Linux. It runs on a very wide range of computers, from the lowest of the low to the highest of the high. The supported range of computers is all but stunning.
Multiple Users: Linux is a multi-user system, Windows is not. That is, Windows is designed to be used by one person at a time. Databases running under Windows allow concurrent access by multiple users, but the Operating System itself is designed to deal with a single human being at a time. Linux, like all Unix variants, is designed to handle multiple concurrent users. Windows, of course, can run many programs concurrently, as can Linux. There is a multi-user version of Windows called Terminal Server but this is not the Windows pre-installed on personal computers.
Networking: They both do TCP/IP. Linux can do Windows networking, which means that a Linux computer can appear on a network of Windows computers and share its files and printers. Linux machines can participate on a Windows based network and vice versa. See Mixing Unix and Windows By Larry Seltzer (July 2002).
Hard disk partitions: Windows must be installed to and boot from a primary partition. There are a maximum of four primary partitions on a single hard disk (a computer with two hard disks can have eight primary partitions). Linux is better in this regard as it can be installed to and boot from either a primary partition or a logical partition. Logical partitions reside inside a special type of primary partition called an extended partition. There is no practical limit to the number of logical partitions that can exist on a single hard disk. Thus you can easily experiment with a dozen different Linux distributions by installing each one in a different logical partition.
Windows must boot from the first hard disk. Here too Linux is better, it can boot from any hard disk in the computer.
Swap files: A swap file (a.k.a. page file) is used by the Operating System when the demands on RAM exceed the available capacity. Windows uses a hidden file for its swap file. By default, this file resides in the same partition as the OS, although you can put it in another partition, after Windows is installed. In Windows XP, the swap file resides initially on the C disk as a file called pagefile.sys. Linux likes to use a dedicated partition for its swap file, however advanced users can opt to implement the swap file as a file in the same partition as the OS. I'm not sure if this issue is clearly presented and explained when installing Linux. Probably not. Xandros v4, for example, may use a separate swap partition or not, depending on the partition environment it finds at install time. Xandros 4 does not explain any of this.
With Windows XP the default size of the swap file is 1.5 times the amount of RAM in the machine at the time Windows was installed. I don't know how Linux chooses a default swap file size. In Windows XP you can change the swap file size and location with Control Panel -> System Properties -> Advanced tab -> Performance Settings -> Advanced tab again -> Change button, which opens the Virtual Memory window. Be aware that this window violates user interface standards. It is the only window I know of where clicking the OK button after making a change, does not activate the change. To change the size of the page/swap file, you must click the Set button. I don't know how to change the size of a Linux swap file.
File Systems: Windows uses FAT12, FAT16, FAT32 and/or NTFS with NTFS almost always being the best choice. The FATx file systems are older and have assorted limitations on file and partition size that make them problematical in the current environment. Linux also has a number of its own native file systems. The default file system for Linux used to be ext2, now it is typically ext3.
All the file systems use directories and subdirectories. Windows separates directories with a back slash, Linux uses a normal forward slash. Windows file names are not case sensitive. Linux file names are. For example "abc" and "aBC" are different files in Linux, whereas in Windows it would refer to the same file. Case sensitivity has been a problem for this very web page, the name of which is "Linux.vs.Windows.html". At times, people have tried to get to this page using "linux.vs.windows.html" (all lower case) which resulted in a Page Not Found error. Eventually, I created a new web page with the name in all lower case and this new page simply re-directs you to the real page, the one you are reading now (with a capital L and W).
File Hierarchy: Windows and Linux use different concepts for their file hierarchy. Windows uses a volume-based file hierarchy, Linux uses a unified scheme. Windows uses letters of the alphabet to represent different devices and different hard disk partitions. Under Windows, you need to know what volume (C:, D:,...) a file resides on to select it, the file's physical location is part of it's name. In Linux all directories are attached to the root directory, which is identified by a forward-slash, "/". For example, below are some second-level directories:
/bin/ ---- system binaries, user programs with normal user permissions
/sbin --- executables that need root permission
/data/ --- a user defined directory
/dev/ ---- system device tree
/etc/ ---- system configuration
/home/ --- users' subdirectories
/home/{username} akin to the Windows My Documents folder
/tmp/ ---- system temporary files
/usr/ ---- applications software
/usr/bin - executables for programs with user permission
/var/ ---- system variables
/lib --- libraries needed for installed programs to run
Every device and hard disk partition is represented in the Linux file system as a subdirectory of the lone root directory. For example, the floppy disk drive in Linux might be /etc/floppy. The root directory lives in the root partition, but other directories (and the devices they represent) can reside anywhere. Removable devices and hard disk partitions other than the root are attached (i.e., "mounted") to subdirectories in the directory tree. This is done either at system initialization or in response to a mount command.
There are no standards in Linux for which subdirectories are used for which devices. This contrasts with Windows where the A disk is always the floppy drive and the C disk is almost always the boot partition.
Hidden Files: Both support the concept of hidden files, which are files that, by default, are not shown to the user when listing files in a directory. Linux implements this with a filename that starts with a period. Windows tracks this as a file attribute in the file metadata (along with things like the last update date). In both OSs the user can over-ride the default behavior and force the system to list hidden files.
Case: Case sensitivity is the same with commands as with file names. When entering commands in a DOS/command window under any version of Windows, "dir" is the same as "DIR". In Linux "dir" is a different command than "DIR".
Modems: To save money, many internal modems do not include their own processor, instead they rely on the main cpu in the computer for their processing needs. These cheap modems are referred to as "winmodems" because they typically include low level calls to the Windows operating system that can not be replicated in Linux. For the most part, winmodems will not work under Linux. If you need to run a winmodem under Linux see Linmodems.org and www.linuxant.com/drivers.
Scripting: Windows started with BAT files (a combination of OS commands and optionally its own language) and then progressed to Windows Scripting Host (WSH) which supports two languages, JavaScript and VB Script. Windows also has WMI, the Windows Management Interface which makes many functions available to scripts.
Linux, like all Unix variants, provides multiple scripting languages, referred to as shell scripts. Among them are the Bourne shell, the C shell, Perl, Python and Ruby. I have used the first three, but not Python and Ruby. I find the Linux scripting languages cruder than WSH but much more powerful than BAT files. They tend to use special characters instead of English commands and don't support objects (this only matters to programmers).
One scripting language that can run on both Linux and Windows is PHP. It always has to be installed under Windows, it may have to be installed under Linux. PHP is typically found running on Linux based web servers in combination with Apache, but it is capable of running "client side" (on your computer).
Printer Drivers: Every computer printer ships with drivers for last last few versions of Windows (at the time it was manufactured). Running the printer on a very old or too new version of Windows may or may not work. Still, this a far better situation than with Linux which does not support as many printers as Windows. In an environment with many Linux users, shared network printers a tech support staff, this should not be an issue as you can limit yourself to well supported printers. Home users of Linux however, will no doubt suffer from the relatively poor support for printers.
User Data: Windows allows programs to store user information (files and settings) anywhere. This makes it impossibly hard to backup user data files and settings and to switch to a new computer. In contrast, Linux stores all user data in the home directory making it much easier to migrate from an old computer to a new one. If home directories are segregated in their own partition, you can even upgrade from one version of Linux to another without having to migrate user data and settings.
Shutting Down: Both have to be told to shut down and for the same reason, to quiesce in-flight activity in an orderly manner. You shut down Windows thru the Start button, then select Shutdown. In both the KDE and Gnome GUIs for Linux, you shut the system down by first logging out (equivalent to logging off in Windows). In Gnome, you select the Halt option, in KDE, the shutdown option. Linux can also be shut down from a command prompt using the shutdown command which can either shut the system down immediately or be told to shut it down at some time in the future. Windows XP also has a shutdown command, earlier versions of Windows did not.
scheduler built into Windows XP is not able to schedule programs to run at shutdown time. I find this annoying, because its an excellent time to schedule backups. Linux can schedule programs to run automatically at shutdown time. I haven't tried this but a quick glance at How Linux boots makes it seem complicated. I'm told to follow the instructions in this article but replace runlevel 5 with runlevel zero, which represents shutdown time.