Monday, August 29, 2005

Five reasons NOT to use Linux

This blog was copied from my old blog location.  Lots of comments are there, so comments are not allowed here to help them stay all in one place.


This is in response to the sarcastic and blind-sighted Five reasons NOT to use Linux.

I expect you have already read that article in each of my rebuttles below. In fact, maybe read one section there, and then the corresponding section here.

Reason number one: Linux is too complicated

Indeed!

Steven claims in his article that it's Windows GUI vs. Gnome/KDE, Registry vs. configuration files, and that's that. Oh, except that if you screw up the Windows registry you risk wrecking your computer. Let's help make that comparison more enlightening...

Linux configuration files: they are all in different formats, and follow different rules. (case sensitive? headings? comments? whitespace significance?) Very often configuration file changes do not take affect until you restart whatever program you are configuration. Take a look at Apache. A server widely acclaimed for its up-time, and yet you can't even change a single setting without restarting the server! Compare this now with Microsoft IIS. A nice GUI that lets you change almost any setting or add an entire web site with a few clicks and you're already live. No restart, no downtime. And you don't need a fat "Apache Unleashed" manual for IIS to figure out how to do this or that.

Suppose I install Gnome as default and want to install KDE and use that as the default. How easy is that? Well, every time I try, I have to search through several configuration files with 100s of lines to find the one that specifies the default GUI, and then it often doesn't even work.

Reason number two: Linux is a pain to set up

True, if you buy SuSE Linux on DVD at the store, you can drop it in and have it all set up for you. Windows XP brags about the same convenience and ease. How many patches must you apply to SuSE right after install for all the security fixes? Dozens. Windows? Dozens. Hmmm... Seems about even there. To be safe, you ought to be behind a firewall in either case. I've never found a recent Linux distro that didn't have patches ready to install as soon as I finished installing to OS.

Reason number three: Linux doesn't have enough applications

Let's compare apples to apples here. Windows is an OS, not a set of applications. You Linux fanatics get on Microsoft for bundling apps with their OS, and then here you get on their case for their lack of apps. So I won't even address the software bundled with each OS, since that is not comparing the OS but the packaging, which can easily be changed for either OS. Let's use our time wisely by looking at apps available to be installed later.

Virtually every app available for Linux has a Windows counterpart. The reverse is also true. But the fact of the matter is, you open-source Linux fanatics choose to ignore this. OpenOffice is as much available for Windows as it is for Linux. So is FireFox. So are so many other apps and games. And if you can name an open source app that isn't available on Windows, before you accuse Windows of being worse for it, ask yourself these questions: Windows as an OS isn't inferior just because your open source app doesn't run on it. If you are so big on choices and freedom, why don't you write your app to run on both? And as far as Windows' extensibility and flexibility, I've studied the Windows API enough to know you can twist and bend Windows to do almost anything, through binary means. If you think Linux is more flexible because you have access to its source code, you'd be right, but 98% of the users out there don't care. They won't recompile a thing on their own. They just want a friendly, adjustable OS. Linux doesn't provide that. Windows does.

Finally, the price you pay for Microsoft Office is worth the money, if your time is worth anything. So is a lot of other software that is "proprietary" and "closed-source". They have the money due to their customers to pour into usability testing and fine-tuning their products where open-source developers just don't care or don't see a need, leaving their users frustrated and unproductive. OpenOffice 1.1.3 was a nasty piece of work on the GUI side. Every person I suggested to switch to OO to save money ended up buying MS Office within weeks because they hated the interface. I remember a quote from openoffice.org once going something like this: "we're not trying to look like MS Office... we don't want to". Well well. I think OpenOffice 2.0 is a huge improvement in the GUI over 1.1.3, and guess what! It looks much more like MS Office than it ever did. Who's copying who? Linux-lovers keeps accusing MS of lacking innovation. Excuse me, but the open-source community wrote Apache from standards they didn't write. [Edited 8/30/05: A comment below enlightened me that the author of the original HTTP spec actually did write much of Apache] They copied Java and .NET that closed-source companies invented. They copied Unix to make Linux. They do almost nothing but copy. Who's lacking imagination here?

Reason number 4: Linux isn't secure

This is the one that makes me the most upset. I've already mentioned that Linux and Windows both have need for security patches. And frankly, applying patches in Windows is easier than in Linux. Linux is pretty easy, but Windows is still ahead, I'd say. Argue all you want. But a properly configured Windows box will successfully apply patches to itself better than a Linux one will. At least for me. And if you disagree, just know that most users don't know how to configure Linux like you do, and so your opinion doesn't matter to 98% of the computer users out there.

But here comes my big beef with Linux security: it's user accounts and permissions. First I'll talk user accounts. In all my conversations with Linux admins, I've never met one with a system configured where they didn't "su - root" to do admin stuff. All administration functions in Linux, whether they technically have to be or not, are done through "root", rather than specific, personal user accounts. Who cares? Well, logs for one thing. While Windows may currently encourage all user accounts to be administrator accounts in order to install software and such, at least those accounts are all seperate, and you can see who did what when. You don't have that when all Linux users change to "root" when they want to get something administrative done. Again, I'm not speaking of technical possibilities in Linux here, but what the trend is. With Windows, most people have their own administrator accounts. With Linux, they all use "root".

Now onto permissions. Let's say I'm common user A, without root permissions, and I want to share a file with user B, also a regular user. How can I do this? Well, I can open my file up to everyone (chmod 777), and that'll get the job done. That's stupid. I just want to share my confidential file with user B. Hmmm... My only other alternative is to share the file with the owning group. Oops, I can't do that either, because the owning group for the file is "users", which all the users in the system belong to, and that would expose my file too much. I could create a group.... err, no I can't, because I don't have root priviledges. Any other possibilities? I could move my file to a special directory that an administrator created for sharing files, but what are the odds of a directory already existing for sharing files with just this one other user? About nil. Now let's say I have root priviledges. I can create a group, make the owning group for the file the group I've created, and then share the file with the group (chmod 770). All good, right? Wrong. Suppose I want to share the file with user B for read-only access. Fine: chmod 750. But now I want to share the file with user C for read-write access too. Impossible. While I can add user C to my custom group that owns the file, I cannot give B read-only access and C read-write. I know Linux brags support recently for ACLs. My question: Where are they? They are so new (though Windows has had them since 1995) in Linux that no GUI interface I've seen supports setting/viewing them, and no command line "ls" will show those advanced permissions. All you see is rwxrwxrwx or something like that. Pitiful.

Compare to Windows.

User A, who may have nothing more than basic user priviledges, can simply right-click on a file, click Properties->Permissions, and share the file with whoever and however they like. Extremely fine-grained control over any file/directory you own. What can be more secure than that? It's so simple, and so uniform throughout NTFS that every app knows about it.

Reason number 5: Linux is more expensive

Linux is cheaper if any of the following is true:

  1. You are a Linux admin over more than one server, and licensing costs for Windows Server are prohibitive for your business.
  2. You are a Linux enthusiast who can be unusually productive in a less refined GUI environment. You types are definitely out there, but you are not the common user!
  3. You are building an embedded system.

For the common user who just wants to be productive, and just wants their computer to work the way they want, Windows is faster, and faster means cheaper! Linux is only now getting the power management capability to Hibernate, which Windows has had for 5+ years. Plug-n-Play has been around for 10+ years, and Microsoft has worked out so many bugs in it that it works almost all the time. Linux: just getting support for it, and it's very spotty. The idea is Linux is "only just getting there" in so many areas that Microsoft has mastered over time. Yes, Windows has certainly had it's problems. But the point is, Microsoft has learned, and continues to learn from their mistakes. Linux is learning from Microsoft's mistakes too. Is Linux progressing faster than Windows? Certainly. The road is always quicker for the second traveler. Is Linux better than Windows for the common computer user? Certainly not. And I daresay for most computer programmers the tools available for the Windows platform make them more productive than most Linux developers. That's because Linux die-hards are so religiously attached to C that they won't embrace newer, high-level languages that make them more productive and encourage safer code. And then you have the other extreme: those Linux developers who use Perl and Python, which are so slow that any intense computation requires you to drop into C.

Summary

Ok, so I've jumped off topic some in each of these sections. But because I suspect most of you Linux users reading this article are programmers (since you programmers make up most of the Linux user base, for reasons mentioned above), I took opportunity where I could to digress into other beefs I have with Linux.

I use Linux. I find it helpful to use in several use cases in my regular programming routine. Personally, I think IIS' FTP functionality is pathetic and embarrassing. I use a Linux SSH server for all my file transfers, and Samba to move them up to my Windows Server. I use Linux for lots of other things too. And yes, once you get Linux running exactly the way you want, I agree it has a higher probability of staying online than a Windows Server with similar configuration. But it's the getting it set up initially that takes so long. If Windows Servers are more hackable, it's because they are easier to set up, so less-educated admins do the installs and fail to configure them securely. As a non-diehard Linux user myself, you could probably hack into my Linux server too, if you wanted to.

It's about who the operator is. Linux is good for a few people. Windows is good for the masses. That's why the software distribution is the way it is. I personally like free software, because it's free. (I don't like the GPL, by the way, as it comes with huge obligations that the LGPL and X11 licenses don't impose). I think Linux definitely has a large place in the world, and I think its space is growing. I'm excited about its future. But I would most like to see the Linux enthusiasts stop looking at Linux and open source religiously and start looking at them as tools. Recognize their shortcomings and work on fixing them instead of always pointing fingers at how weak Windows is. If you don't like something about Windows, why don't you take a few hours and write software to fix Windows?? You certainly don't mind doing that for Linux! In short, take your blinders off.