Old Content This page is now considerably out-of-date.
The following article was written in early 2001. The computer world has changed considerably since then and I have not updated this page. It's still worth a read as a balanced discussion of an often contentious subject. Looking back at this, I'd like to add a couple of general points:
Which is better, Linux or Windows NT? The answer depends on your requirements, so I'm going to limit the discussion to my requirements as a hobbyist programmer looking for a workstation OS. I'm not running a server, except for my own use to test my web site. On one level the two are similar - both are preemptive multi-tasking, multi-user, POSIX compliant, networked operating systems. Simple C programs will compile on both platforms with no modifications, but differences arise with file naming, threads, GUI interaction and more. That's just the tip of the iceberg when you consider reliability, application availability, security, hardware support and so on.
Applications and Utilities
Almost all the common Unix utilities are now ported to NT - bash, perl, apache, cron, etc. Many Linux applications are too, such as Emacs and The Gimp. However, the converse isn't true - Office, Textpad, Mathcad and Internet Explorer are NT only. In my opinion these applications outperform any Linux equivalents I've seen. Moreover, cute little games sent round on e-mails tend to be Windows specific. The portability imbalance is likely to remain, because Unix software tends to come with source that is portable between several versions of Unix, and Cygwin (a Unix-on-NT emulation layer). The Windows on Linux emulator doesn't work particularly well.
You do get more 'out of the box' with Linux - you can spend hours downloading and configuring NT versions of programs that come as part of the Linux installation. However, I think most hobbyist programmers are prepared to do this, in fact I quite enjoy it! In both operating systems the command shell is just a user space program.
Both OSs have quite adequate tracing and debugging hooks. Windows has much better (costly) tools for GUI creation than Linux, but I have absolutely no interest in that. For my kind of programming I almost always use the Cygwin emulation layer. For advanced tasks, Unix turns out to be considerably preferable. For example, you can get raw access to a disk by just opening e.g. /dev/hda1. There is presumably a way of doing this under NT, but you'd need to find the proprietary API and documentation.
Linux supports a greater variety of CPUs than NT, but this is an academic issue for the hobbyist programmers I know, who all use x86 compatibles. Almost every bit of PC hardware has NT drivers. Many also have Linux drivers, but Linux hardware support is less comprehensive and likely to remain so. For example, NT fully supports my graphics card, but Linux can't use its hardware acceleration features. In principle you can write your own drivers for either OS, but that would be beyond me.
The recent scares with Microsoft products are against applications like Internet Explorer or Outlook, not the operating system. There are security scares with Unix products as well, but the bugs get exploited far less. Sadly, the modern trend of having loads of applications installed is not a good security policy. You need to make a conscious effort to run a tight ship whatever your operating system. In theory, NT's "access control list" policy offers more flexibility here, but in practice it's easier to do this under Linux. So I would in general say that Linux is more secure. NT does have some clever security features though, like digitally signed drivers and "press ctrl-alt-delete to login".
At home I have had no kernel reliability problems with either NT or Linux. However, from working in server housing environments I have seen both crash many times. NT does it with a blue screen. Linux does it displaying loads of console error messages. I haven't got any figures for which does it more, but they both do it.
They both also suffer from buggy user space programs. Explorer was buggy in NT 4.0, though Windows 2000 seems a lot better. Netscape crashes a fair bit on both. On Linux, there are some dodgy bits of KDE and Gnome. In general, command line tools and server processes are reliable on both.
Both operating systems allow you to choose your window manager, though few NT users are aware of this. There are many more WMs available for Linux than NT. However, the standard NT WM is significantly more polished than any other I've used. This is particularly evident with drag & drop and the graphical file explorer. For the GUI, I'd pick NT any day.
I believe modern operating systems should certainly use journaled file systems, as they are highly resilient to corruption. NT has had this in NTFS for ages, and now Linux has this in ReiserFS. Both also now have auto-mounting and mounting into directories. However, NT is quite limited in the variety of file systems it can read, while Linux supports loads, including FAT and read-only NTFS.
Linux advocates have figures to prove that Linux is faster. Microsoft have figures to prove that NT is faster. I choose to ignore all these figures, rather than work out who's lying. On my box, a K6/400 with 128MB ram (modest by today's standards), both run plenty fast enough. Linux doesn't use my hardware graphics acceleration, so drag full windows isn't as smooth as on NT but, contrary to popular belief, that is not the best measure of a computer's speed!
Linux and its software is generally free, while NT isn't. Fortunately, I qualified for a reduced price student license when I bought it, and have no need for a server license. As I don't use Office, most of the software I run is free. I don't have any other commercial software, and just two bits of registered shareware. I have to admit that there's one more I should register soon. Hah, for many people the issue is actually the legality of using a free version of Unix or NT!
Both operating systems are fantastic really. However, NT supports more hardware and has a better set of applications, in part because it also has most Linux programs. There are extra security risks with NT, but these can be controlled, and I think they're less than the risk of my computer being physically stolen. All in all, I prefer the experience of using NT to Linux. Personally, I use Windows 2000 with Cygwin, including the bash shell. I do have Linux installed on another partition, but I tend to only use it for specific things, e.g. doing a tcpdump. Interesting to note that my non-techie house mates were just as comfortable with KDE as Windows.