Sunday, February 3, 2008

A Comparison of Linux & Windows

Here you can find many information regarding Linux and Windows. Their difference from flavors, interface, cost, installation, application, security, hardware, networking, file system, and scripting.

Flavors
(revised April 2007) Both Windows and Linux come in many flavors. All the flavors of Windows come from Microsoft, the various distributions of Linux come from different companies (i.e. Linspire, Red Hat, SuSE, Ubuntu, Xandros, Knoppix, Slackware, Lycoris, etc. ).

Windows has two main lines. The older flavors are referred to as "Win9x" and consist of Windows 95, 98, 98SE and Me. The newer flavors are referred to as "NT class" and consist of Windows NT3, NT4, 2000, XP and Vista. Going back in time, Windows 3.x preceded Windows 95 by a few years. And before that, there were earlier versons of Windows, but they were not popular. Microsoft no longer supports Windows NT3, NT4, all the 9x versions and of course anything older. Support for Windows 2000 is partial (as of April 2007).

The flavors of Linux are referred to as distributions (often shortened to "distros"). All the Linux distributions released around the same time frame will use the same kernel (the guts of the Operating System). They differ in the add-on software provided, GUI, install process, price, documentation and technical support. Both Linux and Windows come in desktop and server editions.

There may be too many distributions of Linux, it's possible that this is hurting Linux in the marketplace. It could be that the lack of a Linux distro from a major computer company is also hurting it in the marketplace. IBM is a big Linux backer but does not have their own branded distribution. Currently there seem to be many nice things said about the Ubuntu distribution.

Linux is customizable in a way that Windows is not. For one, the user interface, while similar in concept, varies in detail from distribution to distribution. For example, the task bar may default to being on the top or the bottom. Also, 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 (since revised to also boot from a CD) 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.

Graphical User Interface
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."

Mark Minasi makes the point (Windows and .NET magazine, March 2000) that the Linux GUI is optional while the Windows GUI is an integral component of the OS. He says that speed, efficiency and reliability are all increased by running a server instance of Linux without a GUI, something that server versions of Windows can not do. In the same article he points out that the detached nature of the Linux GUI makes remote control and remote administration of a Linux computer simpler and more natural than a Windows computer.

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 are 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. For server use, Linux is very cheap compared to Windows. Microsoft allows a single copy of Windows to be used on only one computer. 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.

As of January 2005, the upgrade edition of Windows XP Home Edition sells for about $100, XP Professional is about $200. The "full" version of XP Home is about $200, the full version of XP Professional is $300. Windows Server 2003 Standard Edition with 10 Client licenses is about $1,100. Because they save $100 or so on the cost of Windows, Wal-Mart can sell a Linux based computer for $200 (without a monitor) whereas their cheapest Windows XP computer is $300 (as of January 2005).

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.

You can purchase assorted distributions of Linux in a box with a CD and manuals and technical support for around $40 to $80 (some distributions may be less, others may be more). Regular updates and ongoing support range from $35 a year for a desktop version of Linux to $1,500 for a high-end server version. August 2004 Red Hat started selling a desktop oriented version of Linux for under $6 per user per year.

After the initial cost (or lack thereof) of obtaining software, there is the ongoing cost of its care and feeding. In October 2002, ComputerWorld magazine quoted the chief technology architect at Merrill Lynch & Co. in New York as saying that "the cost of running Linux is typically a tenth of the cost of Unix and Microsoft alternatives." The head technician at oil company Amerada Hess manages 400 Linux servers by himself. He was quoted as saying "It takes fewer people to manage the Linux machines than Windows machines." Microsoft commissioned a study that (no surprise) found it cheaper to maintain Windows than Linux. However, one of the authors of the study accused Microsoft of stacking the deck by selecting scenarios that are more expensive to maintain on Linux.

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 Linux (Topic re-written June 2007, then again in January 2008)
Nothing need be said about getting Windows. As for Linux, you can buy a computer with it pre-installed, but usually not at major retailers. All the major PC vendors have been selling Linux based machines on their web sites for years. In large part though, these were server computers targeted at businesses not consumers. Linux pre-installed on consumer machines has been hit or miss, mostly miss. But, there are signs that this is changing (see the next topic - low cost laptops - for more on this).

There seems to be (as of November 2007) a new trend in targeting Linux for consumers. Many different companies are offering computers with low end CPUs targeted as second machines, or for use by children. This could be a Windows Vista backlash. Moving from Windows XP to Vista requires more complexity, more hardware horsepower and learning a new interface. Plus, it's expensive both for the hardware and the software. In contrast these latest Linux based computers machines have a simplified user interface and require the same or less hardware horsepower than Windows XP. And they are much cheaper, both for hardware and software reasons. The Linux interface can be customized, and every company selling a Linux based machine customizes the look and feel. Some go for simplicity hoping the machine can be used by children and non-techies. Other try to mimic the Windows XP interface.

An interesting article on cheap Linux computers for consumers is Five reasons not to fear a $200 Linux PC by Erica Ogg of CNET dated January 24, 2008. The subtitle is: A rash of supremely affordable PCs preloaded with Linux has hit mainstream retail stores. And trying one is not as risky a proposition as you might think.

Wal-Mart was a very early player when it came to selling computers running Linux. In November 2007 they started again, after backing away from it. The Everex Green gPC TC2502 is $200 (just for the computer, no monitor), emphasizes online applications but comes with Open Office, runs a version of Linux called gOS (which itself is a version of Ubuntu v7.10) and comes with 512MB of RAM, an 80GB hard disk, a CD burner/DVD reader and both Ethernet and a modem for connecting to the Internet. According to a CNET review in also includes 24/7 toll-free tech support. Shortly after its release, it appears to be popular

Previously, Wal-Mart sold PCs with Lycoris, Lindows and SuSE also for as low as $200. In March 2004, they started selling Sun Microsystems' version of Linux, the Sun Java Desktop, starting at $298. In December 2004, Wal-Mart started selling a $498 laptop computer running Linspire. I don't think these were big successes.

In January 2008, Sears started selling a Linux based tower machine for $300, with a $100 rebate that brings it down to $200. The hardware is from Mirus Innovations and it comes with a Celeron processor, 80GB hard disk, 1GB ram, a CD burner and Freespire version 2.0 (a version of Linspire).

The Zonbu Desktop mini is small, silent and cheap. It is approximately 5 x 7 x inches with no moving parts, 512 MB ram, and 4GB of flash based storage. It costs $100 to $300 depending on the service plan you chose (as of January 2008). Service plans include continuous online backup. See One week with Zonbu by Peter Glaskowsky at CNET September 14, 2007.

In August 2007 Lenovo announced plans to sell laptop computers with Linux pre-installed. They were to run a Linux distribution from Novell and were expected in the fourth quarter of 2007. They actually went on sale in January 2008, but as of the end of January 2008, the web page for Linux on Thinkpads seems like their heart is not in it. At Lenovo.com, none of the desktop computers are offered with Linux (as of June 2007).

In June 2007 Dell started selling consumer machines with Ubuntu Linux pre-installed. See Dell picks Ubuntu for Linux PCs at CNET News.com. As of December 2007 they sell machines with Ubuntu Linux version 7.10. See here and also dell.com/linux and linux.dell.com.

In January 2008 Shuttle introduced a $200 Linux based computer. Also in January Asus said it will release a desktop version of the Eee PC to be called the E-DT. The E-DT is expected to cost between $200 and $300 ( obviously this is without a monitor).

HP dipped their toe into consumer Linux, but as of June 2007, every HP consumer desktop is running Windows Vista. On their 38 consumer laptops, 37 are running Vista, one uses XP. Even their small business desktop machines are all Windows. They only sell server versions of Linux. Back in 2004 HP was planning to offer a business notebook computer, the Compaq nx5000, with SUSE Linux pre-installed.

Emperor Linux loads Linux distributions on laptops from Dell, IBM, Sony and others. Pogo Linux sells custom-built desktops loaded with both Linux and Windows. Their main customers are universities and government agencies.


Low Cost Laptops (Topic added January 2008)
An exciting new trend is the appearance of Linux pre-installed in many new lost-cost laptop computers.
The most popular example of this is the ASUS Eee PC 4G which was released in November 2007. I have briefly used one and it's very impressive. Prices range from $300 to $500 (as of January 2008). The $300 model strikes me as a huge bargain, even if the screen is a bit too small.

The $200 XO laptop from the One Laptop Per Child Foundation has gotten much publicity. I used one and hated it. That said, it is targeted at children in developing countries and being an adult living in New York, I'm not the target audience. As far as I can tell you can't buy one anyway (as of January 2008).

Everex is slated to start selling their small Linux laptop, called the CloudBook, in February 2008. It will be $400 and available at Walmart.com and ZaReason.com. It seems to compete directly with the Asus EEE laptop. See Engadget and Gizmodo. It will have a 7" 800 x 480 display, 512MB of ram, a 30GB flash based hard drive, Wi-Fi, a 4-in-1 card reader, a webcam and an Ubuntu-based version of Linux. It will weigh two pounds and the size is approximately 9" x 7" x 1".

Intel makes the Classmate PC. Quoting Intel they are "mobile personal learning devices for primary students (ages 5-14) in emerging markets." The Classmate was never intended for sale to the general public. I've read that this was out of fear by Intel that low cost Linux laptops would cut into their profit margins. As far as I can tell, they are not being sold in the United States. The Classmate uses many of the same parts as the Asus EEE laptop. It has a 7" screen with an 800x480 resolution, a Celeron processor, WiFi and 2GB of flash based hard disk storage.

Zonbu offers a laptop but it is a full size machine with a 15.4" wide screen and a built-in DVD-ROM/CD-RW. As of January 2008, it sells for $280 to $480 depending on the service plan.

If I had to bet, I'd say that low cost Linux laptops will take off. The cost, simplicity and portability are likely to be the big appeal. Not to mention immunity from most malicious software and the lack of a normal disk that increases the battery life and makes the machine more rugged. Linux can only run a handful of Windows programs, but out of the box these machines (except the XO) can do what most people need most of the time. I've read that Intel is working on a new processor called Silverthorne (for now) that will be cheap and engergy efficient and may spurn more cheap Linux laptops to appear on the market.

Installing the Operating System (This topic was re-written twice in June 2007)
There are three ways to install Windows XP: a clean install, an upgrade install and a repair install. Then, there is a "recovery" install, which is not an install in the true sense of the word but rather the restoration of a disk image backup.
  • A clean install refers to starting with nothing (either an entirely empty hard disk or just an empty partition or just unallocated space on the hard disk) and ending up with just Windows.
  • An upgrade install refers to starting with an older version of Windows and ending up with a newer version. Existing data files and applications should not be affected by the upgrade to the newer edition of Windows.
  • A repair install refers to installing the same version of Windows on top of itself. This is used to fix a broken copy of Windows and existing data files and applications are not affected.
  • A "recovery" is typically used to restore a computer to its factory fresh state. All data files are wiped out. All applications installed since the computer was new, are wiped out. All upgrades to Windows itself (patches, service packs) are lost. Applications pre-installed by the computer manufacturer are restored. Originally this was done from CDs, then DVDs. Now it is normally done from a hidden area of the hard disk.

Then there is Windows Vista where much has changed. I'm not familiar with the install options for Vista. Andy Pennell, a Microsoft employee, wrote about his problems installing Vista on June 21, 2007. He is very familiar with Windows and installed Vista onto a second internal hard disk, leaving the existing hard disk with Windows XP unchanged. At least that was the plan. See Installing Vista: My Personal Hell. Installing Vista on a computer with an existing copy of Windows, with the intention of dual-booting, is much trickier than it used to be with earlier versions of Windows.

There is a huge variation in the Linux installation procedure. Different distributions of Linux have their own installation programs (which may even change with different versions of the same distribution). Installing Linux on a computer without an existing operating system is much easier than installing it on a machine with an existing OS that you want to preserve.

I'm sure that installing Linux is getting easier all the time. While I haven't done it all that often, I have seen it become easier over time. Is it easy enough for you?

  • Ed Bott blogged about his experience installing Linux on July 31, 2006. Linux, XP, and my old PC
  • In March 2007, he tried again with mixed success. Why does Linux hate me?
  • A picture is worth a thousand words so this July 2007 picture show at ZDnet on Installing OpenSUSE 10.2 is instructive
  • In June 2007, I installed Ubuntu v7.4 on an IBM NetVista machine that was about four years old. The system would only run at 640x480 and things went downhill from there. The problem may have been due to a KVM switch that prevented the system from querying the monitor. However, instead of asking me or telling me anything about a failure to detect the monitor, it just ran at 640x480 with no GUI based facility to increase the resolution.

When installing Linux on a machine where you don't need to preserve the existing operating system, there is likely to be an option to clobber the existing OS as part of the Linux installation procedure. Or, you can use a program to totally wipe everything off the hard disk before installing Linux. The free Darik's Boot and Nuke is fairly famous for this. Better yet, the hard disk vendor should have a free utility that not only wipes the hard disk but also can run diagnostics on the disk.

You can also buy a new computer without any operating system. A low end Dell server, the PowerEdge 840 sold for $600 in June 2007. You can buy an HP ProLiant server starting at $500 that is certified to run six Linux distributions. IBM is big on Linux, quoting their web site: "The entire IBM Systems product line is Linux enabled." They sell computers both with no operating system and with Linux pre-installed. Nothing there is cheap however. Wal-Mart used to sell Microtel machines without an OS, but no more.

Installing Linux for dual booting, that is, keeping the existing operating system in tact, is probably best left to techies. It is all too easy to lose the pre-existing OS. You need to be familiar with hard disk partitions and some Linux terminology. With Red Hat Linux 8, the booklet on how to install the OS was over a hundred pages.

In his Linux book, Mark Minasi said that installing Linux on a desktop computer was more likely to be successful than on a laptop computer.


Running Linux Without Installing It(This topic was re-written in April 2007)
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.

Running a Live CD version of Linux is a great way for Windows users to experience Linux for the first time. Among the Linux distros that have a CD-only version are Knoppix, Ubuntu and Open SuSE). I tried SuSE Live Eval version 9 in October 2003 and had some gripes. FreeBSD, a version of Unix (rather than Linux), also has a LiveCD.

That said, if Windows is broken to the point that it can't start up, there is a free program called Bart's Preinstalled Environment (BartPE) that can run a few Windows programs from a bootable CD. However, this is not from Microsoft and is only intended to fix a broken copy of Windows, it is not for everyday use. BartPE can only run a handful of programs that have been set up ahead of time for use with it. BartPE fills an important need, but creating the CD is not trivial, it requires a Windows CD (not recovery CDs or DVDs) and it only works with Windows XP and 2003 (not sure about Vista). The main point stands, in and of itself, Windows can not run from a CD.

The CD based versions of Linux differ in their use of the hard disk. Some, such as Lindows, do not write anything at all to your hard disk, making it the safest and easiest way to experience Linux. The downside of this is speed (CDs are much slower than hard disks) and continuity (being able to save data between uses). Other versions, such as SuSE 9 (this is now up to v10.2), do use your hard disk (SuSE 9 creates over 200 MB worth of files). What you give up in safety, you gain in speed. For reviews of Linux distributions that run from a CD see A Taste of Linux by Jim Lynch at ExtremeTech January 23, 2004 and A Taste of Linux, Part Two by Jim Lynch March 5, 2004.

In addition to kicking the tires on Linux, a Live CD can also be used to insure that your hardware is supported by that specific version of Linux. Bootable Linux CDs are also used to recover files when Windows breaks to the point of not being able to start up. A recent Live Linux CD should be able to see all Windows files (they can read NTFS) and copy them to an external USB device or another computer on a LAN. Older CD based versions of Lindows and SuSE could not read files stored in an NTFS partition.

In October 2005 a whole new way of running Linux without installing it was introduced: Virtual Machines from VMware. Virtual machines let you run multiple operating systems on one computer at the same time. You can't beat it (virtual machines are used to run Windows on the Intel based Macs).

Using the free VMware Player you can download pre-built Linux virtual machines. Think of the VMware Player as analogous to the Adobe Acrobat Reader. Creating virtual machines costs money, but playing them does not.

VMware has been creating virtual machines on PCs for a long time. Running a virtual machine previously required their expensive software (VMWare Workstation was $200 in April 2007, only a couple years previously it cost almost twice that). Now it can be done for free. And prior to October 2005 there were no pre-built virtual machines available from VMWare, if you wanted to run Linux, you had to install it.

Now you can get a pre-installed virtual copy of Ubuntu v7.04 Server, OpenBSD 4.0 and CentOS 5.0. Even better, many pre-built Linux virtual machines come with pre-installed applications. Want to run the Apache web server and the MySQL database? Just download a VM with them installed.

For years you could have installed Linux into a new virtual machine. It is a great way to learn and experiment. However, creating a new virtual virtual machine required the somewhat expensive VMWare workstation. Now, the free VMware Server software can be used to create a new virtual machine into which you can install any operating system. You can also download new, empty virtual machines from EasyVMX.

VMWare Server has another big plus: it supports a checkpoint (a.k.a. restore point, synch point). You can take a checkpoint in your virtual machine, work on it a while and then revert the VM back to the checkpoint. All for free. How things change.

Microsoft also has free virtual machine software but there are no-prebuilt virtual machines for it. Needless to say, Microsoft is not going to provide Linux virtual machines and they make a lot of money selling Windows so they're not going to give it away. Also, their software is not as mature as VMware, not as robust and I've read that it runs slower.

Yet another way to run Linux without installing it is from a flash drive (a.k.a thumb drive, USB drive, pen drive, memory stick, etc.).

In June 2006 David Pogue wrote about Linux distros can run from a thumb drive (A Handy Tip From a Reader on Flash Drives) where the two distros mentioned are 50MB (Damn Small Linux) and 70MB. In fact, Damn Small Linux does even more tricks. It can run from within Windows! And, if you have 128MB of ram to spare, it can run completely in ram, which has got to be fast. See Linux in Windows .. Again at ghacks.net.

In November 2005, you could have purchased a 3GB MicroDrive (1 inch hard disk) with Ubuntu Linux. The drive plugs into a USB port and is fully powered by the USB port. See Taking Linux On The Road With Ubuntu at Toms Hardware. I'm not sure if this is still available.

And work is ongoing on creating portable Linux applications (as of March 2007).


Application Software
There is more application software available for Windows. Then again, there may be sufficient software for your needs.

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 gobs of free application software. A new computer with Windows pre-installed may have additional application software, this is up to the PC vendor. I have seen a new Sharp laptop machine that came with no software other than Windows itself. In contrast, Sony VAIOs, for example, come with a lot of software. Often however, necessary software, such as the Adobe Acrobat reader, is not pre-installed by the PC vendor. Each Linux distribution comes in multiple flavors, the more expensive versions come with more 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. Lindows lets users install software in a manner somewhat like Windows update - applications are downloaded and automatically installed. They charge for this service however. The May 20, 2004 issue of the Langa list newsletter had an interesting take on the difficulty installing software under Linux. In a July 4, 2004 review of Linux in the Washington Post (Linux, Still an Awkward Alternative), Rob Pegoraro called application software installation "Linux's biggest embarrassment" and I have no doubt that he is correct.


Crossing the OS Boundary (This topic was revised in October 2007)
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, as described below.

Virtual Machines
The most ambitious approach is to install one operating system inside another. Perhaps the most popular example of this is with Intel based Macintosh computers. Software from Parallels (Parallels Desktop 3.0 for Mac) and from VMware (Fusion) lets you run Windows at the same time as Mac OS X. In this example, the Mac OS X is referred to as the host or native operating system, it's the one that gets run when the computer is turned on. Windows is referred to as the guest operating system. This approach is called Virtual Machines. Assorted virtual machine software is available that lets Linux, Macs and Windows operate as either the host or guest operating system.

In a guest copy of Windows, running under either Linux or Mac OS X as the host OS, you can install any and all Windows programs. Somewhat like a split personality, one computer can run two (or more) operating systems at the same time. VMware was the first to market with a virtual machine product (also called VMware) for personal computers. Virtual PC, has competed with VMware for a long time. Parallels is a more recent competitor. Virtual Machine products from these companies differ in their supported host and guest operating systems.

Win4Lin is virtual machine software that only supports Linux as the host OS and only supports Windows (95, 98, Me, 2000 or XP) as the guest OS.

Specific Applications
Less ambitious than virtual machine products (which let you run any application in the guest OS) are approaches targeted at only running a handful of Windows applications under Linux.

The simplest example is probably IEs 4 Linux which lets you run Internet Explorer versions 6 and 5 under Linux. It's free. For more, see Run Internet Explorer on Linux by Brian Smith Oct 11, 2007.

Some distributions of Linux include commercial software called Crossover Office from CodeWeavers that runs Microsoft Office (versions 2003, XP, 2000 and 97) and some other Windows applications under Linux. While this approach does less, it does not require a Windows license. Codeweavers has a list of supported applications and a comparison of their approach vs. virtual machines.

Since Crossover Office is a commercial product, it is not included in the free distributions of Linux. As of October 2007 CodeWeavers sold it for $40 or $70 depending on the version.

CrossOver is based on the Wine project. Wine is free software and is included with many GNU/Linux distributions. Wine does not, and will not, provide 100% compatibility; it will never run all Windows applications perfectly. Even applications that it runs well, may not have all their features and functions available. Mary Jo Foley wrote that the Microsoft WGA (Windows Genuine Advantage) program looks for Windows programs running with Wine and purposely generates an error. See Microsoft Seeks to Bottle Up Open Source Wine (February 18, 2005).

As far as I know, the first Linux distribution that could run Windows applications was Lindows. As far back as October 2002, Xandros Linux Desktop v1.0 (previously Corel Linux) could run Windows applications. (ExtremeTech review). When SuSE Linux Office Desktop was released in January 2003, it too could run Microsoft Office applications thanks to Crossover Office.

TransGaming makes WineX which allows Linux users to run various Windows games that require OpenGL and DirectX. The combination of CrossOver Office and WineX should let you run many Windows programs under Linux. In July 2004 TransGaming gave WineX a new name, Cedega, and announced support some DirectX 9 games. (Linux Takes on Windows Gaming from ExtremeTech July 28, 2004)

On yet another front, Ximian (owned by Novel) is developing Project Mono, which will allow Microsoft .Net applications to run on Linux.

Server Based Applications
There is yet another approach to crossing the operating system divide that goes by the names Terminal Services, Server Based Computing and Thin Client Computing. This approach runs applications on a server and sends a picture of the output to another (client) computer. From the client computer, keystrokes and mouse movements are sent back to the server. This approach is totally dependent on a network.

Windows applications are run by a server version of Windows and use the Terminal Services feature to communicate with a client computer. Depending on the software used, the client computer may be running Linux or Windows or a Mac. The all Microsoft solution can be supplemented with software from other companies (Citrix being the market leader) to provide advanced features. Years back, I used an earlier version of the Citrix software, then known as WinFrame, to provide Windows NT applications to client computers running Windows 95 and 98. Quite cool.

On the Linux/Unix side, Tarantella supports the display of Unix server applications on non-Unix, non-Linux machines.


Viruses and Spyware (Last updated March 2005)
There are many types of malicious software programs. The most common types are referred to as 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. In my opinion, 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.


Users and Passwords (Last updated August 2005)
Both Linux and Windows 2000/XP require a userid and password and boot time. That said, Windows XP allows the omission of the password (a very bad idea), I'm not sure if Linux does. All can be configured to either ask for the userid/password at startup time or defaults can be set instead. In Windows 2000 it is very easy to set a default userid/password, in Windows XP the method varies between the Home and Pro versions - in one it is straightforward, in the other it's a pain. I've been told that in Linux the KDM and GDM login managers support automatic login.

A new Windows XP machine used by a home user is likely to not ask for a userid/password at start-up. However, this depends on the number of users defined to Windows. When you create a new user in XP the default is not to require a password (user friendly triumphs over security - the Microsoft way). Windows 98, never mind.

Windows XP, 2000 and Linux all support different types or classes of users. Windows XP Home Edition supports Administrator class users that have full and total access to the system and restricted users that, among other restrictions, can't install software. Windows XP Pro and Windows 2000 support additional levels of users.

Both Linux and Windows can group users into groups (finally, something well named) and assign privileges to the group rather than to each individual user. Windows XP and 2000 come with some pre-defined user groups (such as Power Users), I don't think Linux does (but I'm not sure). In XP and 2000 user "Administrator" is a member of the Administrators group.

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)

Very often Windows users use an Administrator class userid which gives viruses total access to their system (see Why you should not run your computer as an administrator from Microsoft). This obviates the security rules discussed above. In contrast, Linux users often run as regular non-root users which not only means better security it also means that, if they get a virus, the operating system greatly restricts what the virus can do.

I have tried a couple times to set up a Windows XP computer for use by a family, creating Administrator class userids for the parents and restricted userids for children. Both cases failed because there were too many programs that did not function correctly when run by a restricted Windows user (more details here). While Linux has supported the concept of root and restricted users from the get-go, this is a relatively new thing to Windows. It will be a long time before all Windows software is designed to be used by a restricted user. Until then, viruses and malware will have free reign on Windows machines. Certainly software written for Windows 95, 98 and Me expects total system access and may not work when run from a restricted userid.

Bugs
All software has and will have bugs (programming mistakes). 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. Fred Langa wrote an interesting article on whether Linux or Windows has fewer bugs in Information Week magazine January 27, 2003. The article also addressed whether known bugs are fixed faster with Linux or Windows. In brief, he felt that bugs used to be fixed faster in Linux, but that things have slowed down. See this article too Security research suggests Linux has fewer flaws December 13, 2004 from CNET News.com.

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. Bruce Perens (Business Week magazine, March 3, 2003 issue) commented on why open source software works well:

...it taps into the true motivation of programmers in a way that corporations often don't. Programmers are like artists ... They like to showcase their best stuff for their peers. In open source, they can. But at most corporations, their best work is hidden behind locked and guarded doors.

As to Microsoft's OS development methodology, Michael Miller of PC Magazine reported that Chris Jones, Vice President of the Windows Client team, "stressed" that Microsoft's priority when developing Vista "was to change the process of developing Windows to ensure that the underlying code was tighter and more secure." Vista will be the tenth version of Windows produced by Microsoft and they admit that the development process needs to be improved. See Vista: I Can See Clearly Now July 25, 2005.

Note: Shortly after I revised this section, all heck broke loose on the Internet due to a bug in the Plug-and-Play portion of Windows (see Fast-Moving Worms Slam Media, Enterprise Networks eWeek August 17, 2005). On August 9, 2005 Microsoft issued a fix for this bug. Within a week there were a dozen different malicious programs actively attacking computers without the bug fix. Many large companies were hit. This is par for the course, but it in light of this topic, it occurred to me that no story on the problem looked to find/blame/name the programmer that wrote the buggy Plug-and-Play code. No doubt, the world will never who caused all this grief. When faceless programmers can hide behind a corporate wall, these things are more likely.
Microsoft claimed that the Plug-and-Play bug only affected Windows 2000. Anti-virus companies claimed to have seen many other versions of Windows get infected. Was Microsoft lying to minimize the bad publicity? Were anti-virus companies trying to make their products seem more useful? Without access to the source code for Windows, no one can know for sure. I wonder if Microsoft fired the person(s) who wrote the buggy code or if they even know who did it?

Is It Soup Yet? (Last updated August 2005)
When is a new version of an Operating System done? Hard to say. All software has bugs and OSs, being very large software are 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.

Be sure to read the excellent How Microsoft's Misunderstanding of Open Source Hurts Us All by Robert X. Cringely (October 23, 2003). The article argues in favor of Linux and ridicules comments by Steve Ballmer. Addressing the "Is it soup yet?" issue, this article includes a quote from Mr. Linux, Linus Torvalds (the nerd with the reputation to protect):

"Because the software is free, there is no pressure to release it before it is really ready just to achieve some sales target. Every version of Linux is declared to be finished only when it is actually finished, which explains why it is so solid. The other reason why free software is better is because the personal reputation of the developer is attached to every release."

In contrast, Microsoft makes huge profits on a new version of Windows. Whoever decides when a new version of Windows (currently Longhorn/Vista) is ready to ship, has a lot more on their plate than just bug fixes. No doubt, Microsoft defenders will cite the many months, if not years, that a new version of Windows is beta tested by thousands of people before it is released. It's not enough. Anyone who recalls the bragging done about stability when both Windows 2000 and XP were released must wince with the hundreds and hundreds of bug fixes both versions have required over the years.

Microsoft defenders may also note that Windows is a frequent target of attack by the bad guys just because it is so widely employed. True. But this just magnifies the fallout from any corners that may get cut on the way to releasing a new version of Windows.


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.

The poor hardware support in Linux is drastically illustrated in an article by Fred Langa. He wrote about problems getting nine different Linux distributions (versions) to work correctly with two different sound cards (one real, one virtual) that all versions of Windows, even back to Windows 95, dealt with perfectly (see Linux's Achilles' Heel, Information Week magazine. April 19, 2004).


Hardware the OS runs on (Last 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.

Because of its ability to run without a GUI, and thus need less hardware horsepower than Windows, Linux can run on very old personal computers such as 486 based machines. I took a Linux class where the server the students used was a 100 MHz Pentium. To get more mileage out of old hardware, Papa John's converted 2,900 pizzerias to Linux. On the high end, Linux runs natively on IBM mainframes (the Z series) and on other high end IBM servers. eBay runs their web site on Linux as does Google. IBM's family of "Blue Gene" supercomputers, used by Lawrence Livermore National Laboratory for nuclear weapons simulations, run Linux. NASA uses it on supercomputers that run space-shuttle simulations. On the small side, the iPodLinux Project created a version of Linux that runs on Apple iPods. NEC is working on Linux-based cell phones and Motorola is going to make Linux its primary operating system for smart cell phones. Debian Linux can run on on a computer the size of a deck of playing cards (100mm by 55mm) with an ARM cpu. In the home, Sony and Matsushita (parent company of Panasonic) will use Linux to build increasingly 'smart' microwave ovens, TVs and other consumer gizmos. Likewise MontaVista Software will release a version of its embedded Linux for use in consumer electronics devices. Web site linuxdevices.com seems to track this.


Clustering
Linux has an edge here. It has been used to make enormous clusters of computers. In October 2002, ComputerWorld magazine said: "Linux clusters provide supercomputer-type performance at a fraction of the expense." The same article reported that Merrill Lynch runs a cluster of 50 Linux computers. In March 2005, Forbes magazine reported that: "Linux now has become so technically powerful that it lays claim to a prestigious title--it runs more of the world's top supercomputers than any other operating system."(see Linux Rules Supercomputers by Daniel Lyons March 15, 2005).

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 (Last updated August 2006)
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.

(updated August 2006) 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 (Last updated September 2005)
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.

File systems can be either journaled or not. Non-journaled systems are subject to problems when stopped abruptly. All the FAT variants and ext2 are non-journaled. After a crash, they should be examined by their respective health check utilities (Scan Disk or Check Disk or fsck). In contrast, when a journaled file system is stopped abruptly, recovery is automatic at the next reboot. NTFS is journaled. Linux supports several journaled file systems: "ext3", "reiserfs" and "jfs".

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).

Crossing Over: (Last Updated: June 2007) As for supporting each others file systems, Linux can read/write FAT16 and FAT32. When I first wrote this topic, only some Linux distributions could read NTFS partitions. Now more can both read and update NTFS, a feature critical to using Linux as a Rescue CD for a broken copy of Windows.

Captive-NTFS was "the first free NTFS read/write filesystem for GNU/Linux". It is no longer being maintained. In its place is the NTFS-3G Read/Write Driver which the website describes as "an open source, freely available read/write NTFS driver for Linux, FreeBSD, OS X, and NetBSD." NTFS-3G is fairly new, being considered stable only since February 2007. It can deal with the multiple versions of NTFS used by Windows XP, Windows Server 2003, Windows 2000 and Windows Vista. At least 85 distributions support NTFS-3G in some manner, among them: Ubuntu, Red Hat, Debian, Knoppix and Mandriva.

In September 2005, PC Magazine reviewed a product called NTFS for Linux from the Paragon Software Group that gives Linux read/write access to NTFS partitions. For more information on Linux and NTFS, see the Linux NTFS Project.

On its own, Windows can not read partitions formatted with any Linux file system. However, a number of products enable this:

  • Explore2fs by John Newbigin can be used to read Linux ext2 and ext3 partitions. Portable version
  • Ext2Fsd claims to be an Ext2 File System Driver for Windows
  • An open source project, the Ext2 File System Driver for Windows
  • The free Linux Reader for Windows from Diskinternals can read the Ext2/Ext3 file systems (added September 2007) Portable version
  • The Ext2 Installable File System For Windows is free and provides full read and write access to partitions and floppy disks formatted with either Ext2 or Ext3. It works with Windows NT4, 2000, XP and 2003. It's also referred to as Ext2 IFS for Windows. If you are running a NAS device, it may very well be storing files using the Ext2 or Ext3 file system.

I have not tried these.


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. The lastest scripting engine from Microsoft is Windows PowerShell (originally called Monad). The first release (excluding Betas) was November 2006. PowerShell requires version 2.0 of the Microsoft .NET Framework and runs only under Windows XP, Vista and Server 2003.(Updated May 2007)

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).

(The below was added May 2007)
There is a philosophy to scripting and starting with PowerShell Microsoft has changed theirs, to follow/copy that of Linux. The issue I'm referring to is the main interface to the operating system.

On Linux/Unix the scripts are the main interface to the system and any GUI is built on top of the scripts. Thus a Linux system can have multiple GUIs to accomplish the same thing as they all end up calling the script interface anyway. You can even run Linux without any GUI at all.

Windows has always been locked into and keyed off its GUI interface. Scripting was an after-thought. With the introduction of PowerShell, Microsoft says it will adopt the Linux way, making the script inteface the main one. This should mean that anything and everything can be scripted. We'll see.

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. Stephen Manes wrote in Forbes magazine (October 2002) that "Linux printer drivers tend to handle the simplest of printing functions and leave out the rest".

The $99 Zonbu computer works with 1,500 printers (according to the company).


Help

Stephen Manes wrote in Forbes magazine (October 28, 2002) that Linux "Help screens often omit everything but the most rudimentary information and the most arcane." For commands, both OSs offer help on the syntax and options of individual commands, providing you know the command. In Linux it is often done by appending --help or -h to the command. In Windows it's often done by appending /? to the command.

Owing to it's command line history, Linux also offers help via the man (short for manual) and info commands. The man documentation for the ls command, for example, is referred to as the man page for ls. From the Linux command line you can search the man database with "man -k somestring" which produces a list of manual pages containing "somestring".

Windows offers help in the GUI interface for the GUI interface. On the Linux side, both KDE and Gnome also have built-in help about using themselves. I'm told that the Windows help is better for newcomers (nerds hate writing documentation, especially on an introductory level, and Linux is done by volunteers).


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

(Updated December 2005) The 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.

Source : http://www.michaelhorowitz.com/Linux.vs.Windows.html

Related Posts :