Why Linux is Better than Windows!

Is Linux better than Windows? Who gets to decide? What issues are important enough to users, and what sways their opinion of an operating system either one way other? How much of a role does bias play in those decisions?

Another admin I work with thinks, "... a good operating system is one that allows the user to interact with the computer in a way that makes them feel both comfortable and productive. To that end, it should provide a stable and consistent environment to minimize the effort required to move from one task to the next." I agree with this definition, and will use it for the purposes of this article. I also believe a good operating system is a software system that allows the user to operate a computer weather the user wants to be aware of the systems low level operation or not. It is users who should decide what a good operating system is, not the developers or software vendor.
Take a look at some of the things users expect out of an OS.

What constitutes a good operating system? Who gets to decide? What issues are important enough to users, and what sways their opinion of an operating system either one way other? How much of a role does bias play in those decisions?

Another admin I work with thinks, "... a good operating system is one that allows the user to interact with the computer in a way that makes them feel both comfortable and productive. To that end, it should provide a stable and consistent environment to minimize the effort required to move from one task to the next." I agree with this definition, and will use it for the purposes of this article. I also believe a good operating system is a software system that allows the user to operate a computer weather the user wants to be aware of the systems low level operation or not. It is users who should decide what a good operating system is, not the developers or software vendor.
Take a look at some of the things users expect out of an OS.

  • Compatibility
  • Interoperability
  • Manageability
  • Performance
  • Stability/Reliability
  • Available Resources
  • Customization/Flexibility/Scalability

Let's look at each of these points in detail. What we're after is the impact and importance of each expectation. I'll also touch on how well Windows and Linux live up to these expectations.

Compatibility

For some, compatibility is a big issue. You never truly know compatibility woes until you cannot use your favorite hardware, or your wireless adapter doesn't work, and even your brand new video card's driver doesn't support 3d acceleration.

For a long time Windows has been rubbing Linux's face in the mud regarding hardware compatibility on the desktops. For example, until just recently, Linux had little support for a wide selection of usb web cams. I've heard about and have had nightmares with wireless cards and video devices, namely capture cards. Walk into a computer parts store and drop the word Linux and ask for a video card, I'm sure they'd instruct you to purchase Nvidia.

Although Windows has more support for several devices than Linux, there is nothing inherently programmed in Linux that prevents it from using these hardware devices. In fact, hardware compatiblity in both OSes are comparable. It's essentially all about the drivers and the manufacturer's decision to release some sort of driver/code for their devices on the Linux platform. Linux, however, doesn't require much of the bios preparation, memory initialization, or device probes that windows does. In many cases windows systems will be limited by what the bios can detect, where as Linux does it's own device probes and memory initialization.

Interoperability

When talking about interoperability, It's important to recognize that purpose and changes in the technology industry that drive admins to use multi-platform computing. System Administrators are faced with many more choices today than ever. Today, scaling your business or replacing core business applications means facing choices between what an admins used to and less familiar technology. When contemplating a path to take, it doesn't always make sense to use what you're familiar with simply because you've always used it. With so many more choices out there, you can see an increase in decisions geared toward options that make the most sense. (i.e. FOSS) It would be impossible to discuss all of the 3rd party technology involved in multi-platform computing.

How well does each OS natively perform in a mixed environment? Window's interoperability doesn't involve the kernel so much. Locked away in a tower, The windows kernel is a big mystery to most. It doesn't provide much support for kernel hooks or custom modules, known as drivers in the Dos world.
Although, http://www.microsoft.com/interop is a joke, Microsoft has made some serious efforts to open up their operating systems to the idea of playing nice. Were that not the case, administrators of mixed environments and advocates of multi platform computing would never use Windows. If your Directory Service is running on Windows, you can use IAS to extend your "single signon" to systems that support the other authentication methods IAS is capable of.

Windows can also use the CIFS/SMB protocol to share and access directories with other systems.
Microsoft provides Windows Services for Unix, about which Microsoft says, "Windows Services for UNIX 3.0 provides platform interoperability and application migration components in one fully integrated and supported product from Microsoft."

It seems that all the interoperability available in Windows is geared towards the "no going back" approach. Once you put Windows in your Mixed environment, all the interoperability available to you is designed help you migrate to Windows and stay there. Microsoft's "Rip and replace" theme seems centered around providing solutions without a complete overhaul of your whole infrastructure, but they expect you to always replace with Windows.

Linux has many built in technologies and libraries right in the kernel. Depending on what distribution you use, or maybe how your kernel was compiled, it should have built in or modular support for technologies shared by other operating systems. Some examples are Virtualization, NFS, Disk Clustering, Ham Radio support, SunRPC and Windows RPC calls, Samba modules, as well as tons of Legacy and other stuff. Just download the Linux kernel sources and look at the menu config.

In addition to the kernel and it's modules, there are many GNU applications that get installed on a GNU/Linux system that help a computer share resources to other operating systems. Some of these applications are heartbeat, ssh, ftp, tftpd, and fuse. There is subversion, LDAP, memcached, and more. At the heart of Linux, there is no company worried about loosing market share to another operating system. This environment incubates tolerance.

Manageability

Manageability is provided by solutions, as defined by Wikipedia. These represent the "... range of software available to monitor and maintain a computer system in good working condition." There are three primary types of Manageability solutions, Console (CLI) based, Desktop environment based, and Web based. Desktop environment based solutions are those that run as a windowed application running on the system you're managing. Console based solutions are those that can be run from a command line, either at the console or in a terminal emulator. Web based solutions are those that require login to a control panel through a web browser, and these type of solutions require system calls to be issued and read under the hood.

Linux has room for all three of these methods. Some newer and more advanced distributions such as Ubuntu, Redhat, Suse, et al, have Desktop environment based solutions. Suse has the famous YAST control panel. This does everything from user management to the installation of drivers. Redhat has their python based system-config-* management scripts. Ubuntu uses all the stock Gnome administration applications.

Linux is one of the best systems for command line manageability. There are literally hundreds of preinstalled utilities that were written for console based manageability. These applications actually lend to faster, simpler, less mysterious manageability. Generally anything that can be done in Linux on the Desktop, can be done over the command line. I will admit that I am faster with the command line than any other solution.

Webmin is a Web based management solution for Linux and Unix variants. Although Webmin is highly insecure, it's a powerful and modular system that can perform. Although several 3rd party web based control panel applications exist that provide full system management, there are not many free Web based solutions besides Webmin. The key to Linux is that it is fully exposed, which cultivates the growth of capabilities when mixing technologies. For instance, you can write a web based, cli based, or desktop based application that fires of system calls itself. This fully enables completely customized Web based management solutions tailored to your business. Since Linux is a highly customizable Operating System, no management suite can ever be complete.

Windows management comes in the same three flavors. Microsoft's MMC is an application that standardizes the configuration GUI and acts as a framework for system management. Almost everything can be configured and maintained from here. My experience with MMC has never been gruesome or agonizing, for I've always used it to get in, do what I need, and get out.

Although the introduction of PowerShell has nearly made up for years of mistakes regarding a windows shell, it's is merely an interpreter and not a management solution. You can do little more to the system with PowerShell than you could with cmd.exe. This is because the commands that either shell's execute haven't been changed. Without defining the word many, I'll say that there aren't many command line utilities that could perform core system configuration in Windows.

WMI is an awesome set of extensions enabling web based management of virtually any part of the system that can understand WMI calls. Although I've never used it, I've read that it's highly extensible and fully makes up for the lack of command line options when trying to develop a web based management solution for your system.

Performance

I define performance as how fast you can consistently access and utilize a systems resources. Better performance is the direct result of efficient administration practices, efficient development of software, and proper security procedures. In a system, performance depends on the services it runs, the hardware it runs on, and the stability of the environment.

UPDATE: I started this article 5 days before this benchmark was published. It shows Linux to be superior over Vista in native ETQW for Linux and Only a few fps behind in Doom 3, courtesy of the new open source ATI drivers. As this doesn't win the 3d acceleration war, It's merely a won skirmish in the graphics battle of the Desktop war.

On the desktop, Microsoft can claim its superiority in the 3d acceleration realms. With Better Video Drivers, Direct X and hundreds of PC games written for windows, it's seen a longer period during which 3d graphics acceleration has had time to develop.

Aside from 3d rendering and game rendering, the Linux Desktop outperforms Windows by using a simpler GUI system. In Linux, you have a choice between lightweight windowing environments, or you can choose a heavier, more feature rich environment. If using a minimalist desktop environment like fluxbox, the performance gains are obvious. You can get away with using older, less capable hardware. Currently If I install fluxbox + Ubuntu 7.10 on a PIII 750 MHz with 256MB of SD ram, I'd expect zero wait while navigating the menus. I'd expect the same from KDE if I turn off all of the visual effects, bouncing cursors, and the like. If I were to install Vista on the same box, I wouldn't even expect it to boot fully in my lifetime. XP would boot and I could use it, but I would still see considerable delay when navigating even the very simple, for instance the start menu. On the server, Linux beats Windows hands down at two of the things Windows was designed to do best, File Sharing and HTTP serving. Samba 3 is a beast when it come to performance, Samba 4 is said to provide Active Directory when released. Also, Apache's usage has considerably grown over the past decade, and it isn't a sign that business execs love Linux.

Stability/Reliability

It's about uptime. I have a Linux server running Ubuntu Hoary Hedgehog. It's current uptime is 237 days. The last time it was rebooted, I upgraded the kernel which required it. That is, I didn't have to reboot, I only did so to utilize the features of the new kernel.

I also have a .NET development server running Windows Server 2003 Std. This machine has an uptime of 90 days. I have recently rebooted this machine due to a Windows update. After I ran the Windows update, I was forced to reboot before receiving further updates. I wasn't able to install the updates all at once and reboot only one time. How many updates will I be installing and how many reboots did Microsoft ship with this update? I've recently heard that Microsoft forced an unseen update that required no action to install, this scares me, that machine was dismantled and we now use mod_mono on a LAMP stack.

In addition to the core operating system simply running, stable operation should include the services that a server runs. I'm not going to go over those because I am judging the stability of the environments these services run in.

Available Resources

I view resources that you have to pay for as less available than free open standards. Also, available resources denotes those available for an operating system, which can be categorized into 3 fields.

Support
Bulletin Boards
Knowledge Bases
OEM's
IRC Channels
Consulting
Tutorials and Guides
Software
Updates
Software Repositories & Channels
Software Development Kits
Community (Non Support)
Social Networks & Discussion groups
Tutorials and Guides

Support for Windows is usually primarily handled by An OEM or a consultant, though the consultant is often an unpaid family member or friend. Other forms of Support are available as well. Microsoft has MSDN & Technet. Google trends show that searches for Windows support far outnumbers Linux support.

The amount & variety of software available for Windows is phenomenally Large. You can find anything from development software (Visual Studio, Adobe CS, et al) to malware (Spy/Ad-ware, viruses) to games. There are tons of websites that offer the downloading of shareware, freeware, drivers, system tweaks, and toolkits. Whatever the reason, most software companies that develop software for windows, do not develop releases for Linux or Mac.

Most Linux Distributions do not come with any support or guarantees. Linux is developed by hundreds of people and companies. It's not just the kernel they're working on, it's also the myriads of components in the GNU environment too. These folks have all come together, for individual and varying reasons, to lend their skills to developing a Free Open Source OS. Although these people don't always have the resources to support OS users, they and other users put forth a best effort to help support new and existing users. This process is as important as the actual development of the OS, because the life of Linux is dependent on those who use it. You'll find individuals that are more than eager to help in irc channels, chat rooms, forums, and consultants. Recently, some OEMs have been selling computers with Linux pre-installed. Because of this, DELL & HP now are making support efforts.

The software variety that surrounds Linux is equally or more phenomenal than Windows. This is because of the way modern Linux distros handle the installation of software packages and configuration files. In Ubuntu, Mepis, and Debian the apt system will automatically download programs, and other programs that are dependencies and install them with one click and no reboot. There is no installer for every package, there is no "NEXT NEXT NEXT NEXT NEXT BACK NEXT FINISH.". Redhat, Fedora, SUSE, et al use rpm packages installed either by up2date or Yum. Yum and up2date are like apt in that they will install software and the proper dependencies automatically. Gentoo and Crux, are similar but instead of the package manager installing software, it automatically compiles it first on your system and then installs it. This rids one of the need to browse a website for software, hunt down binaries, install them, reboot, realize it wasn't what you wanted and start over. Updates are also handled by apt/yum. In Ubuntu I can upgrade the version of my operating system with a few clicks and reboot once. Otherwise, if there isn't a kernel update, reboots aren't even required, although a restart of a service may be in order.

Linux is also an ultimate playground for developers of any kind. There is even a Visual Studio .NET replacement called monodevelop. Linux has many development libraries and resources freely available, more than most other operating systems. Some native languages that have preinstalled libraries on Linux is PERL, PYTHON, C, C++, PHP, RUBY, et cetera.

Customization/Flexibility/Scalability

Flexibility is as priceless as reliability. I often find my self working on extending the functionality of legacy operating systems and legacy software. I find myself painted into a corner even before I begin working. Therefore, when building out new systems, it is important to recognize that you or someone else might have to work on / fix the system in the future. Fixing sometimes includes upgrades/reinstalls/recompilations. As computer software systems age, the act of fixing/extending them becomes more difficult.

Windows software release cycles make little sense at best. Microsoft develops their operating system over years and years and then releases it. Vulnerabilities occur and the system gets patched. The OS is rarely complete, fully functional, or fully usable until the first service pack is released. This model makes it hard to know what's coming in future releases. This causes an Administrator to work on the fly with planning less than if he knew the game plan. If I buy a dell server with Windows Server 2003, how can I be sure that when I upgrade to Windows Server 2008, it will be able to run? Much research is required for me to move forward. Seemingly, too much time is spent on research verses spending that time to do real system architectural planning.

The release cycles for some modern Linux distros are dependable. Ubuntu, for example, releases a new version of their OS every 6 months. The packages in this release are all available before the OS ships. Since a good majority of this software is open source, you already know the feature set coming with the operating system, even before it goes into beta. Additionally, if Linux currently runs on an existing system, be assured that the likelihood of newer versions being hardware compatible with that system is much higher than with Windows.

Customization and scalability with Windows typically depends on the software available for the platform. You can use Windows to perform a number of tasks. Below are some of the most common roles a Windows installation can be used for:

  • Home Computer
  • Gaming PC
  • Webserver
  • Email Server (SMTP)
  • Groupware Email server
  • DNS server
  • Directory Services
  • Authentication Gateway
  • PPTP vpn server
  • File/Print server
  • Terminal Server
  • Time Server
  • Gaming Server
  • Database Server
  • Net Mon Server
  • Sniffer/Net Probe
  • Webmail Imap/POP3 client
  • 3rd Party Applications Server

Most of what I'm forgetting falls under 3rd party software and applications, which means you really cannot consider those things as something the operating system provides.

In Linux, there are more than 3 parties involved when developing software. The various software projects available for Linux, even the shell required to use a Linux system, are developed by members of the FOSS community. Such a fractured development tier blows away the 1st, 2nd, and 3rd party paradigms. The next consideration to make is that proprietary software is indeed available for Linux. These vendors can be considered the 3rd party, therefor the 1st party is the user/Admin, and the 2nd is the FOSS community.

Here is what things can be accomplish on a Linux system.

  • Home PC
  • Webserver
  • Email Server (SMTP)
  • Groupware Email server
  • DNS server
  • Directory Services
  • Authentication Gateway
  • PPTP vpn server
  • File/Print server
  • Terminal Server
  • Time Server
  • Gaming Server
  • Database Server
  • Enterprise Routing and Firewalling
  • Traffic Shaper
  • Open VPN Gateway
  • Myth TV DVR/PVR
  • Embeded Thin Client
  • Bittorrent Tracker
  • Spam/Virus Sanitization
  • Web Proxy
  • Intrusion Detection System
  • Transparent High Performance Clustering
  • Transparent High Availability Clustering
  • Distributed Compiling Farm
  • Net Mon Server
  • Rsync Backup Appliance
  • Sniffer/Net Probe
  • Usenet Server
  • Network Vulnerability Scanner
  • Voice Conference Server
  • Wifi Gateway (AP)
  • Mobile Access Gateway
  • Fax Server
  • VOIP PBX
  • Streaming Media Server
  • Webmail Imap/POP3 client
  • Virtualization Server
  • Cellular phone platform
  • Mobile device platform
  • Touch screen information panels
  • 3rd Party Applications Server

Conclusion

My opinion is that when I run Windows, I always have to accompany it with a Linux server in order to extend the network schema to do things I want. I know my Linux systems always give me less trouble than my Windows machines. They stay up longer and are more flexible. In addition, the FOSS community has given me the freedom to be in control of my information. My data isn't locked away in a file format that can only be gotten at through a paid licensed key. Within the past 2 years, I've foregone the Windows part and solely used Linux to save on hardware and headaches. Linux has the upper hand.