Is Linux Ready for Prime Time?

Late release dates. The serious security holes, software flaws, patches here, patches there, and we are paying for this? Some would say that it’s a necessary evil because Microsoft has monopolized the PC desktop and everyone must stay compatible. Others would argue that there are alternatives such as Mac, UNIX, or Linux and following the status quo is not necessary.

Team B will attempt to show through thorough research that Linux is user friendly, compatible with MS products, much more robust and powerful, very much more secure, and is ready to be on everyone’s PC.

Hardware Requirements
Hardware requirements or driver availability has been a two edged sword for Linux lovers and haters since its beginning. On one hand some distros of Linux can still run on the old 486 platform and even its Enterprise versions do not require nearly the amount of CPU power, memory, and graphics card capabilities as the newer versions of Windows do.

On the other hand, in the earlier years of Linux, hardware driver compatibility was lacking and on some PCs running Linux was not possible. Over the years Linux compatibility list has grown to include the newest hardware and manufacturers are adding either Linux modules or run shells to their web sites under support. Some manufactures are even adding Linux drivers to their installation CDs because they recognize the value of doing so. With that said let’s take a look at how each OS, Linux and Windows uses your PC hardware.

One of the often cited reasons for not switching away from MS Windows is the available hardware support. “Since Windows supports all the hardware on my PC, why would I want to risk it not working in Linux?” While that may be true in theory, it may also be a very limited outlook. Under any operating system, device drivers are close to the system kernel. Regardless of whether you use Linux or Windows your system needs these small instructional bits of programming to tell the computer what to do with the various peripheral devices hooked into it.

The major difference between an open source device driver module on Linux and a proprietary one in Windows is transparency in the way it works, the way it’s created. This generally doesn’t matter while the system is running as expected but can make a huge difference when something unexpected breaks down.

Linux has many built in methods to test if a peripheral is incorrectly configured, genuinely broken, or conflicting with the operating system. Troubleshooting PCI peripherals isn’t dead simple, but with a bit of savvy isn’t hard. The output of lspci, “cat /proc/pci”, lsmod, dmesg, and a few other utilities will usually show the culprit in the case of a suddenly broken-seeming peripheral.

Windows doesn’t have any of these methods. Searching for a simple way to look at how Windows 2000 sees the current PCI bus doesn’t yield any results. And good luck in figuring out exactly how the driver module is currently loaded, defining any normal seeming yet critically failing startup messages, or getting a straightforward look at how the system sees the card. There might be some special programs to do this but they’re either buried in the software or not part of the base install.

Now let’s look at the recommended hardware requirements for Windows Vista Home Basic and the latest Enterprise Version of Red Hat Linux.

Windows Vista Home Basic

Recommended system requirements
• 1 GHz 32-bit (x86) or 64-bit (x64) processor
• 512 MB of system memory
• 20 GB hard drive with at least 15 GB of available space
• Support for DirectX 9 graphics and 32 MB of graphics memory
• DVD-ROM drive
• Audio Output

Red Hat Enterprise Linux 4.0

Recommended system requirements
• Computer/Processor: Intel Pentium III or faster processor (Pentium IV or better recommended)
• Memory: 256 MB
• Disk Space: 4 GB Minimum, 6+ GB Recommended
As you can see the requirements to run Red Hat Enterprise 4, a robust, secure, and some would argue an overall better OS than Windows Vista, only requires hardware technology from years ago.

File Processing

The Linux filesystem does things a lot more differently than the Windows filesystem. For starters, there is only a single hierarchal directory structure.

Everything starts from the root directory, represented by ‘/’, and then expands into sub-directories. Where DOS/Windows had various partitions and then directories under those partitions, Linux places all the partitions under the root directory by ‘mounting’ them under specific directories.

Closest to root under Windows would be c:. Under Windows, the various partitions are detected at boot and assigned a drive letter. Under Linux, unless you mount a partition or a device, the system does not know of the existence of that partition or device. This might not seem to be the easiest way to provide access to your partitions the difference because /usr appears to be or devices but it offers great flexibility. This kind of layout, known as the unified filesystem, does offer several advantages over the approach that Windows uses. Let’s take the example of the /usr directory. This directory off the root directory contains most of the system executables. With the Linux filesystem, you can choose to mount it off another partition or even off another machine over the network. The underlying system will not know the difference because /usr appears to be a local directory that is part of the local directory structure. The multi-user nature of UNIX creates another major difference between the two filesystems. UNIX was designed from the ground up to allow many different users to share one machine without stepping on one another’s toes (or files). Each user is given his or her own independent home directory, and that directory and any files in it cannot be accessed by other users.

Of course, at least one person needs to have complete access to the entire filesystem if only to administer things and create new directories for new users. That person is the “root” user or superuser. The point of all this is that your view of the filesystem depends on who the system thinks you are. If you log in to your Linux system as a regular user, you are automatically deposited in your home directory, and you will not necessarily be able to view the contents of all the directories in the filesystem. If you log in as “root,” you are deposited in the “root” home directory, and the entire filesystem is yours to explore. As a regular user, your permissions are restricted to the point where you stand no chance of messing things up anywhere but in your home directory. Windows, of course, was designed for a single user sitting in front of his or her own PC. It did not until recently have “super-users” or different user accounts. When you turn on a PC running Windows, you basically own the whole system. You can erase and mess with any files you want anywhere in the entire filesystem. The following list is a layout or a directory structure of Linux.

• “/bin” – contains essential system commands and programs (in machine-readable format, or “binary” format, which is what “bin” stands for), such as “ls,” “cp” (used to copy files), “mv” (used to move files to a different location), and so on. It also contains “bash,” which is most likely the shell you are currently using. The shell is a program that allows you to issue commands to the operating system and view their output. When you are working in a terminal window, you are using the shell.

• “/boot” – contains files necessary for booting the system. If you’re not familiar with this term, it describes the process of starting the system when it is powered on or restarted. During this process, a number of things happen. These might include checking the integrity of your disks, detecting hardware and getting it ready for use by the system, and starting essential programs that help to keep the system running. Also, the kernel (the “guts” of your system) may be stored in “/boot”.

• “/dev” – contains files which represent system devices, such as your hard disks, serial ports, mouse, etc. For example, “/dev/hda” represents the first IDE device on your system, usually your hard drive. If this sounds confusing, don’t worry — understanding what is in this directory is the most important part.

• “/etc” – contains essential system-wide configuration files. When administering your system, you’ll frequently be editing files in this directory. They control many system services and settings. Some examples of files in this directory are “/etc/resolv.conf” (contains your nameserver information) and “/etc/fstab” (a table of devices or directories that hold data and need to be accessed by the system, such as your hard drive or a CD-ROM drive). Program-specific configuration files may be here as well, and are usually identified by the letters “rc” at the end of the filename, for “run commands.” An example of this might be “/etc/vimrc” (a system-wide configuration file for the vim text editor).

• “/home” – contains the home directories for all regular users. A home directory is where a user generally stores personal files. For example, if your username is “tom,” then your home directory is “/home/tom.” A convenient shortcut for referring to your home directory is “~/” (a tilde, followed by a forward slash). So, for the user “tom,” “~/mp3/moby.mp3” actually refers to the file “/home/tom/mp3/moby.mp3”.

• “/lib” – contains system libraries. Libraries are files that contain program code that is common to several applications. For example, a common thing that a program might need to do is write out to a file somewhere on disk. Rather than have to include that code in every program they write, programmers can simply point to a specific library which contains that functionality. Libraries help to keep programs smaller, more efficient, and easier to maintain. Another thing you’ll find in this directory, under “/lib/modules/(kernel-version)” is your kernel modules. Modules usually serve as device drivers — that is, they provide the necessary interface for “talking” to your system hardware, such as a network card or a SCSI CD-ROM drive.

• “/mnt” – contains “mount points,” which are the locations you would use to access files on various different media such as floppies or CD-ROMs. For example, “/mnt/floppy” would be where you would usually access your floppy. All this is defined by the “/etc/fstab” file mentioned above.

• “/proc” – contains files with system information. For example, “/proc/cpuinfo” has information about your computer’s processor, and “/proc/modules” lists which kernel modules are currently loaded in the system.

• “/root” – contains the “root” user’s home directory.

• “/sbin” – contains commands used by the superuser (“root”) for system administration. These include commands such as “shutdown” (used to shutdown or reboot the system) and fsck (a tool for checking and repairing the data on your hard disk, similar to “scandisk” on Windows).

• “/tmp” – a place to put temporary files. Applications use this directory often, which can be accessed by all users on the system.

• “/usr” – contains a number of important subdirectories. “/usr/bin” contains the bulk of the programs on your system. “/usr/sbin” contains important commands for system administration that are not already in “/sbin.” So, why the difference between “/bin” and “/usr/bin”, or “/sbin” and “/usr/sbin”? Well, “/bin” and “/sbin” should contain all the commands necessary for getting the system up and running, without being connected to the network. This allows “/usr” to actually be located on another computer on the network, and remotely accessed. Now, let’s take a look at the rest of the “/usr” subdirectories. “/usr/lib” contains more system libraries, (as discussed above). “/usr/include” contains additional common pieces of code, similar to libraries, but used when compiling software. Compiling software is the process of taking “source code” (the human-readable instructions written by programmers using a programming language, such as C), and using a special program called a “compiler” to create a file that can be understood by the computer, called a binary file. “/usr/src” contains source code stored on the system (such as the Linux kernel source, or source code that you may have downloaded so that you can compile a program by hand).

Finally, “/usr/local” contains programs and data files that have been added locally to the system, and are intended to be kept separate from the main system directories.

• “/var” – contains administrative files (such as system logs), and data that changes frequently (such as incoming mail and news.
Programming capabilities

Availability of application software
To an end user, the operating system by itself is not that useful. Even in the case where the O/S is ready for general use, it will not be widely accepted if there are not applications to run with it. In order for a corporate or home end user to be productive, several categories of software must exist. Without representation or representation with weak support, the end user may not embrace the system as a whole, as the setup may not meet the needs of the user.

E-mail capability for any present day system is a must. Today’s communication demands require an easy to use client. Fortunately for Linux users, there is a plethora of email client applications to choose from. Some of the clients are free, while others are for a fee. Some mimic the behavior of the Microsoft Windows Outlook program, while others offer unique features of their own. A few of the selections are as follows:
• Scalix 11 – Offers email, calendaring, and messaging for enterprise systems.

• Open-Xchange – Offers an email client that is compatible with Microsoft Outlook.

• Mozilla Thunderbird – Open source email client.

• KMail – Email client provided with the KDE desktop.

• Balsa – Email client for GNOME.

• Sylpheed – Lightweight email client that is easy to configure and use.

Instant messaging is an important part of the end user’s communication platform. Instant messaging clients must be easy to use, as well as be compatible with the existing IM systems. Fortunately, there are several Instant Messaging clients for Linux to choose from. Samples of those are as follows:

• IBM Sametime – Instant messaging client supported on numerous platforms
• Pidgin – Multiprotocol Instant Messaging client.
• Finch – A text based version of Pidgin
• AOL AIM – AOL Instant Messenger is popular chat application.
• Yahoo Messenger – Yahoo’s popular chat application.

Word processing, spreadsheets, presentations, graphics, and databases are nearly a standard set of applications installed on all workstations. Not only is it important to have the products that provide this capability, it is also important that they are compatible with other vendors’ products and platforms. With today’s collaboration of the workforce from different business units or even different companies, compatibility plays a vital role in the success or the demise of a product line. Fortunately for Linux, there are two major office productivity suites to choose from. Both cover the full spectrum of tools and are compatible with similar products from other vendors. The two major suites are OpenOffice from OpenOffice.org and Sun Star Office.

To help identify the consumer user’s needs, two additional areas have been identified that may play a part in choosing an operating system. Personal Finance software is an important and popular market, and personal computer gaming is an exciting and enormous market. Personal Finance software has been around for a very long time, with vendors putting a strong emphasis on the Microsoft platform. For Linux, there are several products to choose from. If the products available for Linux do not meet the user’s needs, there is the possibility of running a Windows emulator to run the Microsoft compiled applications within a Linux process. The personal finance options are:
• GnuCash
• Reilly Technologies Moneydance
• jGnash
• KMyMoney

The gaming support for Linux varies by vendor. Many popular games, that have traditionally targeted Microsoft Windows, are now being offered by vendors on the Linux platform. The major vendors now supporting Linux are Id Software and Raven. Plus, there are thousands of free games available for Linux, with plenty of entries to choose from for every category. For those vendor games that are not supporting Linux, the windows emulator may provide some relief, as some games will run within the Linux process.

User Interface
The Linux interface offers the user a wide selection of configurations. Unlike other operating systems that offer a predetermined user environment, Linux is highly configurable to match the needs and preferences of the individual user. Although most of the interfaces are graphical in nature, a graphical environment is not necessary. Even from a text interface, Linux is a very productive system. There are many applications and utilities that operate in a text based terminal window. For those users that demand a graphical user interface (GUI), there are plenty of options to choose from. There are few other operating systems that can boast such flexibility with the user interface. A few of the GUI environments are:
• GNOME
• SUSE Linux Enterprise Desktop
• KDesktop
• Xfce

References
Kranse, A. (2002, January 3). Play Windows Games on Linux PCs. PC World. Retrieved September 1, 2007 from http://www.pcworld.com/article/id,77449-page,1/article.html
Martzan, J. (2005, November 8). Personal finance software for GNU/Linux. Linux.com. Retrieved September 1, 2007 from http://www.linux.com/feature/49400
The OpenOffice Web site provides information concerning the OpenOffice project (http://why.openoffice.org)
The Open-Xchange Web site provides information concerning the Open-Xchange project (http://www.open-xchange.com/EN)
Saunders, C. IMPlanet’s Linux IM Client Bonaza. Instant Messaging Planet. Retrieved September 1, 2007, from http://www.instantmessagingplanet.com/public/article.php/2210871
StarOffice 6.0 Office Suite. Sun Microsystems. Retrieved September 1, 2007 from http://www.sun.com/software/star/staroffice/6.0
Tschabitscher, H. Top 5 Linux/UNIX Email Clients for Windows Converts. About.com Retrieved September 1, 2007, from http://email.about.com/od/linuxemailclients/tp/Linux-UNIX-Email-Clients-fo—.htm
Vaughan-Nichols, S. J. (2006, April 14). Enterprise email and IM, the Linux way. Linux-Watch. Retrieved September 1, 2007, from http://www.linux-watch.com/news/NS9535435238.html