Introduction
It is widely known that "Linux vs Windows" is one of the most popular discussion topics. There are numerous large threads (for example, this one), discussing this question. Typically such threads never end (unless they turn into flamewar, and moderators close them), and new messages are being added during many years. After reading yet another thread where several people tried to prove that
Why is this question so popular
People keep discussing this because of (on of the) following reasons:
- Because they see only better side of their operating system, and refuse to accept that there are weaknesses in their operating system.
- Because they finally discovered that "there is no ideal operating system", and are trying to explain it to someone else.
- Because they don't know which OS is more suitable for them, and didn't think about using search engines
- Because they like trolling. (Windows/Linux/MacOS users are very easy to enrage by making comments about their operating system)
Why Linux users discuss it
(Based on personal experience, not guaranteed to be true about every user) Most linux user go through "fanboy" (or "euphoria") phase. This typically happens within few months after user learned basic skills and medium-level system skills, used few applications, made first useful shell script, learned iptables, etc.
For example, there is a KDE application called kstars, which displays night sky for any place on earth for any date within few thousands of years from now. It also can control telescope, and has access to large database of stars. And it is free. And you can get its' source code, read it, modify, and derive your own application from it, and sell it. Now think about it - you have very complex, cool-looking application, which can control telescope, display sky for any point on earth and any date in human history, AND it is free, AND you can get source code, sell it. Even though I knew about GPL long before I discovered kstars, I couldn't understand how this is possible. And there are tons of very useful shell utilities, graphical desktops, compilers, browsers, there is web-server software, ipfilter software, and tons and tons of other utilities and all this is free. If you are know at least a little bit about programming, you will be able to estimate how much it would cost to develop all this stuff. If you have some medium-level programming skills, then you will be delighted to discover that you can tear any piece of software apart, read its' source code, understand how it works and modify it. When you will understand all this, (especially if you are a programmer) your mind first will refuse to accept this("how is this possible? We are paying for other software, why all this stuff is free?"), and then you will decide that you are in heaven and linux is the best thing ever created by mankind, so you should go forth and spread the word about opensource.
Congratulations, at this state you will become a "fanboy" which will attempt to convert all friends and relatives into using linux. This attitude will eventually wear off (it will take from several weeks to several months, depending on your personality. Some people are never cured, though).
Why windows users discuss it
Honestly, I have no idea. I've been using Windows for several years, and it never looked like something I would say is "the best operating system ever".
Personal experience with both platform
Windows: pros and cons
Pros:
- Well-known, widely spread, has most market share.
- Supports newest hardware.
- Has games.
- Has visual studio (don't get me wrong - it has a bunch of really horrible features (like IntelliSense), but VS2005 had best GUI I saw since Delphi 5)
Cons:
- Price.
- Malware. You'll need AV software to deal with malware/viruses, and not all AV packages are free.
- For most problems solution is reinstallation
- Reinstallation takes forever. If you have a lot of custom software, which is configured for your needs, and managed to completely kill your system (so the only reinstallation from scratch will help), then it will take up to several days to repair everything.
- Program settings are hidden in registry, which isn't really well documented. Which means if registry is damaged, you will lose all program settings. Also, it won't be that easy to recover the registry.
- When you discover a bug, you are not allowed to fix it, even if you can. You'll have to wait another patch, which will introduce more bugs.
- Poor quality of desktop environment. Only one desktop, can't configure shortcuts (not on WinXP, at least).
- Fresh installation has poor selection of software and can't do much useful. Will need codecs, etc.
- Many system-wide actions require reboot.
- License conditions. Average Windows (XP) machine is allowed to connect 10 network devices at once (fixing this will probably break EULA). As far as I know, there is also limit on the number of hardware upgrades.
- Commercial software isn't guaranteed to be free from bugs, to be usable or to do what you want. See EULAs.
- Doesn't include development tools.
- You can't legally become better programmer by analyzing this system - source code is available, reverse-engineering s forbiddeb by EULA. Basically, it is a car where engine compartment is welded shut.
Linux: pros and cons
Pros:
- Price.
- Several very configurable desktop environment (always liked KDE desktop, never liked Windows desktop)
- Supported hardware "Just works" without additional steps.
- Large amount of software available.
- Very good environment for a programmer (unless he/she uses .NET) Provides good opportunity to learn code, use source from real projects (instead of book examples), many languages and dozens of free tools.
- Most problems can be fixed without reinstalling system.
- Most actions doesn't require reboot.
- No limit on the number of connections, number of hardware upgrades.
Cons:
- Smaller selection of commercial games. However, smaller companies tend to create Linux version of games more frequently.
- No alternative to visual studio. Quality of free IDEs will vary. However, working without IDE seems to be the best option, and even simple text editor might be used as a sufficient alternative.
- Newest hardware frequently isn't supported - because manufacturers do not want to create drivers or doesn't provide specification.
- Using USB devices (web-cameras, scanners, cameras) can be a real trouble.
- You should be willing to learn something to be comfortable on Linux.
- Less popular than windows, although frequently used in large number of network devices (routers, modems, etc)
- Available software might not be completely finished, and probably is still in development. On other hand, this also applies to commercial software.
- You will have to be careful when upgrading hardware - you will have to research if your hardware is supported before purchasing something. Linux will work fine on old machines, but if you have top hardware (which isn't supported yet), you might not be able to even install Linux in some cases. This issue is known to cause problems for people that suddenly decide to move from Windows to Linux.
Commonly used myths and incorrect arguments
General
- "My commercial applcation isn't available on your platform! Therefore, my platform is superior"
Not true. When you have application you can't live without (maybe it is your main source of income), then using this application is more important for you that choosing certain operating system. I.e. you use OS where application works, instead of using applications that work on your OS (as people normally do). This is not an OS problem.
- "Average user can't use Linux!"
First, there is no "average user". Self-proclaimed "experts" often can get stuck with basic problems, while inexperienced novices can solve difficult things because it is more interesting for them. System administrator or programmer might have problems with word processors, while someone experienced with word processor surely will have problems compiling even basic application. Every user has his/her own area of expertise, and because using computer doesn't require license, everyone can be a computer user. Which means there will be no "average"
Second, "complete newbie" can use Linux system in the same fashion as Windows machine. This is because configured Linux system doesn't look too different from windows machine. On Windows machine you will have graphical desktop with icons and buttons, where each program is window, and each window can be moved/resized with mouse. And, guess what? On Linux it will be exactly same things: graphical desktop with icons and buttons, where each program is a window, and each window can be moved/resized with mouse (although software is slightly different). To my experience true computer newbie will operate both systems with similar level of success, and might not even realize which operating system is installed on his computer.
- "Linux is more difficult to learn"
Not true. If you start from zero level on either system, you will have to spend similar amount of time to learn it (kids should have least amount of problems learning either system). No one learned windows instantly.
- "Linux is only for geeks"
Isn't anymore. Linux was only for geeks when it was created. Since that time, Linux has gone a long way, and right now there are several companies attempting to make Linux into a product suitable for everyone, "for novices" or for mythical "average user". While making a product useful for everyone isn't a good idea (what is easy to learn isn't always easy to use, and vice versa), there are couple of distributions which everyone can install from scratch.
- "Linux is for everyone"
No. Linux is free, and because of this, it demands something from you. To be able to successfully master Linux system, you should be willing to learn it. If you do not want to learn, you will not master the system (although you still might be able to use it for some extent). Also, if you have to use software which doesn't work on linux, then you won't be able to keep Linux as the only operating system on your PC.
Games
- "Linux don't have games!"
Linux has large amount of games. The problem is that there is a relatively small number of commercial games (examples: Doom 3, Penumbra, Unreal Tournament 2004, Quake 4, Darwinia, etc), for whatever reason. You can run some of the commercial windows games using WINE software (or similar commercial derivatives), but you will get minor performance drop if game extensively uses shaders, and you will get problems if games uses certain copy protection mechanisms. However, Linux has a large amount of free games written by hobbyists. One resource for them is happypenguin.org. Notable examples of free Linux games include Alien Arena, Urban Terror, War$ow, America's Army, Sauerbraten, etc.
- "Linux isn't suitable for making games":
It is suitable for making games. You have advanced graphic API (OpenGL, which is easier to use on Linux, because on Windows default supported OpenGL version is still 1.x), generic cross-platform framework (SDL), several free physics engines and a bunch of similar libraries. Also there are ready to use game engines, like Ogre3D, Sauerbraten's Engine, etc. And you have tons of free tools for every gaming task.
- "Windows has best games" or "Windows has better gaming experience"
This is not true. To my experience, best games are available on consoles, and PC gaming terribly suffers from one big PC problem: hardware. The problem with PC's hardware is that it is flexible, and every user will have different configuration. This will make hardware developers either spend too much time trying to make game work on every video card ever created (instead of spending this time on making better game), or place high system requirements (so you will be able to comfortably play the game only two years later after several hardware upgrades). Another problem is that there is a low number of high-quality games on PC. Latest titles I bought (Fallout 3, Spore, L4D), were clearly overhyped and didn't provide quality I expected. Sure, you will be able to spend several dozens hours playing this, but you will very quickly reach the point where you know everything and don't want to play game ever again - because there is nothing left to do and you already know how to beat it. In short: best games on PC currently are only mediocre, and I'd like to play a masterpiece. The games that are not "the best ones" focus on graphics too much, and because of this gameplay suffers. Another problem with PC games is that once game is released, instead of playing it, you will spend most of your time tuning performance, fighting bugs and crashes, and waiting for patches that will turn game into something stable and playable. Whether you like it or not, a PC game released without bugs is a very rare sight, which spoils PC gaming experience in general.
- "Linux doesn't have DirectX 10"
True. But I haven't seen a game that couldn't work without it. Every game created so far with DirectX 10 support seems to use it only for minor, small graphical improvements. I haven't seen a DirectX 10 game with a truly astonishing graphics. For example, compare Quake 1 and Quake 4. If game uses "superior" graphical API, it should provide similar increase of graphic quality. This means, that DirectX 10 game when compared to the best DirectX 9 game should look as Quake 4 when compared to Quake 1.
Hardware
- "Linux supports small number of hardware"
Only partially true. Linux has a good support for large number of devices, which is provided by the kernel. Which means that on Linux system if hardware is supported, it will work out of the box. While on Windows, you will have to search for drivers. Buy a new ethernet card, install it in WinXP machine and you will have to search for a driver. And if you've just installed windows on completely new computer, you will have to search for several drivers. Until you find all of them - your machine might stand here without sound and network access. On Linux this card will work right now.
However, Linux does have trouble with new hardware, USB devices (cheap web-cameras, scanners, force feedback on joysticks). This is because most hardware manufacturers don't support Linux, and don't provide specifications for writing drivers. Which means, some time will have to pass before someone reverse-engineer device protocol and write a Linux driver for it. Which means when you decide to upgrade your computer, you will have to check if new hardware is supported or not.
On other hand, situation with hardware on windows isn't that great. For some reason, with each year driver packages tend to become larger and larger. Sometimes, just one driver takes more megabytes than entire Linux kernel. If you have a very fast connection, this won't be a problem, but if your internet speed is below 500kbps, this will quickly become annoying. Also, many windows drivers are buggy. I was very surprised to discover than on WinXP my "Vista Certified" motherboard produces slightly noisy sound (can't be fixed), while on Linux same problem doesn't exist, I have better sound quality, although motherboard isn't officially supported.
Software
- "Linux doesn't have any good software"
On contrary, amount of Linux software is quite large. Currently average Linux distribution includes Word Processor, compiler, several music players, several different image editors, several IDEs, and several desktop environments on the same DVD. So when you install it, you have ready to use working environment. On windows, after first installation you'll have empty machine that can't do much useful - you'll have to spend several hours installing codecs, Adobe Acrobat, your Office Suite, IDE, normal music player, and so on. The downside of all this is that most of the linux software is provided "as is, without warranty of any kind", and many programs are still in development. Which means some of them might have unfinished features, etc.
- "I don't want to compile software"
On large number of distributions, software is installed via package manager - you won't have to compile anything (unless you are using Gentoo, LFS or Slackware). However, it is highly recommended to learn how to compile programs manually - sometimes software might not be available via package manager.
- "Compiling software on Linux takes hours"
Not on modern hardware. Only largest packages (Qt 4, KDE, etc) might take hours to build. Normally software compiles within 5..15 minutes.
- "I don't want to compile kernel on Linux"
You don't have to compile kernel. Most distribution already provide properly tune kernel for you. Unless you want to make your machine a bit faster, you don't want to attempt rebuilding kernel yourself.
Communities
- "If something breaks on Linux, community will help you"
Not quite true. Community will try to help you. However, people in communities are mostly volunteers, and they might refuse to help you if:
- You didn't read and apply rules from "How to ask questions the smart way"
- You haven't tried to fix problem yourself.
- You didn't ask question properly ("Help me, please" is not a good idea);
- You just wish someone fix your problem for you (and for free).
- You complain about things, and say something like "This didn't happen on windows"
Also, quality of community (skill, knowledge level) depends on distribution. As far as I know, most helpful/skillful people use most difficult distributions (Gentoo, Slackware), however they may be a bit strict about the "rules", and you will have to ask question properly (and read "How to ask questions smart way" - it isn't that hard) to get high quality help. On other hand, communities that use "simpler" and "friendlier" distributions are not guaranteed to have skilled users (personally, I had serious trouble with advanced questions on Ubuntu communities). - You didn't read and apply rules from "How to ask questions the smart way"
Licensing and philosophy
- "Open Source is the way software all should be distributed! It is the future!":
Unfortunately, this isn't true. Open Source software has one serious problem: you can't earn serious amount of money by making programs and selling them. Don't get me wrong: you still can earn some cash from donations, or by selling merchandise (T-shirts, toys, gadgets) which is somehow associated with you program, or you can sell CDs/DVDs with that program, but you can't sell the program. At least, not with GPL. Of course, GPL allows you to "sell" programs, but once you do this, anyone can resell your program for lower price, or give it away for free in unlimited quantities. I believe this is one of the reasons why large software companies aren't releasing their products under GPL. Of course, there are other licenses, like BSD license, but software under those licenses can be easily converted into proprietary. So, although Open Source is (in some cases) good for software development, it isn't really good for software developers. I don't think you can make the living by developing your own OpenSource software.
Another problem is that OpenSource doesn't seem to be suitable for at least one kind of projects: games. Sure, there are many good games made by individual developers, but I haven't seen a sophisticated OpenSource game with a great story, music, gameplay and art. I'd love to see gaming masterpiece (for example, something comparable to "Max Payne", "Silent Hill 2", "The Movies", etc) developed under OpenSource license, but it looks like such game doesn't exist. Another interesting thing is that good OpenSource games (for example, War$ow) use different license for their art, music and models, and typically this license is proprietary. Which makes me believe that OpenSource isn't suitable for making games, only for making game engines (which is different story).
- "Proprietary software always is the best!"
Unfortunately it also isn't true. When some software is being developed by a single company, they control the course of software development. While it is exactly what you would want in game development, it isn't always good for other kinds of software. Software developer might decide to add flashy GUI with dozen of bugs instead of making software more useful for you. Or it might decide to change course of development, so the next version of software will not meet your requirements anymore, but will appeal to larger audience. And another problem with proprietary software is that once it is broken, you are not allowed to fix it, even if you can do it. And Let's not forget various licensing and DRM problems. However, this was already discussed many times.
The Truth
The truth is that there is no "the best" operating system. Every OS that is available has problems in one or another area. User's goal is to pick operating system that doesn't have problems in important (for that user) area. For example, if you don't use some windows application, lack of its' alternative on Linux won't be a problem for you. Or if you don't use some linux utilities (dd, mount, iptables, cron), their unavailability on Windows won't be a problem for you.
So, What should I do about all this?
Nothing. "Linux vs Windows" appears again and again and again. People keep using same arguments over. Some people provide a very lengthy, detailed responses which cover common problems and provide a really good comparison of operating system, but large amount of people don't read them, and simply jump in discussion to prove their point. So the best thing you can do about those discussions is never participate in them.
Links
Linux is not Windows
How to ask questions the smart way