RichStyle: The Angel is in The Detail.

Linux vs. WindowsSoftware Engineering Perspective

This is a revision of a paper submitted on to the Arab Academy for Banking and Financial Sciences.

Abstract

This research tries to compare Windows to Linux, depending on well identified and structured criteria, which are software requirements.

It concluded to an image indicates that Windows is better in functional requirements, while Linux is better in non-functional requirements. This means that Windows is a better choice for desktop market, while Linux is better in server market.

Linux vs. Windows

The importance of this study comes from the fact that it’s based, as it’s mentioned above, on pre-defined, structured and modeled software requirements.

I choose the most popular version of Windows, which is Windows XP, and the most popular distribution of Linux, which is Ubuntu, then I built a comprehensive model of software requirements, to use it as a base for the comparison procedure.

There are three questions, should be answered first:

Since the objective here is to compare capabilities and features of Windows in general, and Linux in general, not as specific products, finding the right answers will not be easy.

After that, I can start compare Windows and Linux according to those comparison factors.

Linux Distributions

According to DistroWatch.com in , there are more than 622 distributions flavors of Linux; most of them are derivative distributions [1]. While a few are root distributions, this means that they are developed from scratch, in another word, they were not derived from an already exist distribution.

However, how can one distinguish between root distributions and derivative distributions?

Operating System, at the end of the day, is a set of files, can be expanded or reduced efficiently by a software component called Package Manager that understands the operating system’s file structure, and conduct the operation of adding/removing files. So that I can consider Package Manager as the Backbone of the operating system file structure, and thus, the backbone of the operating system itself.

So, Package Manager is the essential factor to distinguish the root distributions themselves from each other, and the root distributions from the derivative ones.

If a distribution has been developed by organizing components/applications using a new backbone/package manager developed from scratch, this distribution will be considered as a root distribution. If it has been developed by organizing components/applications using an already exist backbone/package manager, which means an already exist file structure, and thus an already exist operating system, it will be considered as a derivative distribution.

Desktop Environment is another classification factor, alongside of the Package Manager, since there are two completely-different desktop environments for Linux; GNOME and KDE.

According to those two factors, most common Linux distributions can be organized in a matrix like this:

Table 1 – Linux distributions
Root Distributions
(The Package Manager)
Desktop Environment
GNOME KDE
Debian (DEB) Debian, Ubuntu Kubuntu, Knoppix, MEPIS
Slackware (TGZ) Nonux, Topologilinux Slackware, Slax
RedHat (RPM) RedHat, Fedora SuSE, Mandriva
Gentoo (SRC) Gentoo, Ututu Kororaa

The root distributions have different answers to the question: How to add applications? (The package manager).

The derivative distributions from a specific root distribution have different answers to the question: What to add?

In order to cover Linux in general, I had to cover two distributions at least: a GNOME-based distribution, and a KDE-based distribution.

Regarding the package manager, Gentoo is not recommended for end users since its package manager is directed only for expert users. RPM does not have a significant difference comparing to DEB.

Ubuntu is a Debian-based distribution, and it is the most popular distribution around the world nowadays, it’s based on Debian Package Manager, and offers GNOME desktop natively, and distributed as an installable live CD.

Slax is a Slackware –based distribution, its package manager is quite simple, without dependency check. It’s KDE-based distribution, and it’s distributed as a live CD as well.

So I focus on both Ubuntu and Slax.

Windows Versions

Table 2 – Windows versions
Windows 9x Windows NT
1995 Windows 95
1996 Windows NT 4.0
1998 Windows 98
1999 Windows 98 SE
2000 Windows 2000
2001 Windows XP
2006 Windows Vista
2009 Windows 7

Simply I choose Windows XP, since it mostly covers all features and functionality afforded in previous versions of Windows. While Windows Vista and Windows 7 are not affordable yet.

Comparison Factors

As it’s mentioned herein before, studies that try to compare Windows to Linux, does not start from a clear comparison factors, and actually that’s due to the fact that:

What I’m trying to do here is to identify and structure these factors first, which will help in bringing researcher to a better view of each factor, and realizing how can each affects the rest– the reason that makes software evaluation very complex procedure, then I start to compare according to those chosen factors.

Software Requirements Model
Figure 1 – Software Requirements Model

I will compare how far both Windows and Linux meet software requirements.

Functional Requirements

Functionality, or functional requirements, usually depend on the system nature itself, each system is designed for specific functions. But since I’m talking here about computer operating systems, I can consider that they should cover the basic four aspects of the information technology: Hardware, Software, Communication, and Data. But since data here is actually the input and the output of the system, it will be dropped from those four IT aspects.

How can one represents these three aspects left, as functions in an operating system?

I consider the four main aspects of Information Technology as the main functional requirements in operating systems. In practical, these functional requirements can be represented like this:

Table 3 – Functional requirements of operating systems
Hardware Device Drivers
Software Software Applications
Communication Protocols
Data It will be dropped as it’s mentioned herein before.

Device Drivers

From this aspect, you might find Linux distributions that recognize plenty of devices, while others may not. But if you didn’t find a built-in support for a device, it will be difficult to add it, while it’s much easier to do it in Windows.

So Windows here is better.

Software Applications

In general you can find the most common software categories in both Windows and Linux (Internet browser, multimedia player, email client… etc).

But regarding productivity software, or specialist software, such as video mixing, and CAD software, Windows is better.

Also there’s a significant difference between Ubuntu and Slax, since Slax doesn’t have a reliable package manger comparing to Ubuntu which will give a chance to find a lot of software packages.

Protocols

Linux supports IPv6 and SSH, while Windows isn’t.

Performance

Modularity

System usually is a set of components or modules. As much as the number of modules is big, the module’s size will be small, system will be maintainable, but the relationship and the communication between each other will be bigger, which; in turn; reduces the system performance, and vice versa.

Regarding Linux, the separation between the kernel and the GUI engine (GTK+/Qt) makes Linux GUI much slower than Windows GUI. So, the GUI performance in Windows is better than the GUI performance in Linux.

Memory Consuming

It means how much system files consume hard disk space and RAM. Slax is the best here, Ubuntu will be the next, and the last one is Windows

Interoperability

It’s the ability of the system to work in several platforms, which usually consist of hardware and an operating system. For example, one can say that MyProg has height interoperability if it was able to work in x386/Windows, x386/Linux, and Motorolla/MacOS platforms.

But since our system here is an operating system, platform will be only the hardware.

In this case, I can consider Windows and Linux as equal, because both of them are typically designed for x386 architecture.

If I decided to talk interoperability on Software Application level, the judgment will be completely different.

The most common office suite in Linux, which is OpenOffice, is Java based application. And since Java is natively designed to provide height interoperability, so that Java-based software will work in any software platform, this means that OpenOffice, just like any other Java-based application, will need a middleware (The virtual machine), that; in tern; will consume a significant amount of resources for not a real value-added functionality from user perspective, but maybe form the developer perspective, who might be interested in interoperability for his/her product. And that makes OpenOffice looks like a set of “blind components”, that refuses to take advantage of system-specific resources.

Since office applications are considered as the most important application in a desktop environment, I can conclude to the fact that Linux loses a significant amount of its total performance because of the dependency of one of the most important functional aspects on it, on a middleware.
That’s exactly what I can say about Ubuntu. By contrast, Slax is a pure-KDE-based desktop environment, includes the KDE office suite which is called KOffice. And this makes it better in resource consuming. Windows will be the best here.

Again, notice that interoperability isn’t a user requirement as much as it as a producer requirement. The party how will get benefit of this property is the producer, since his/her product will cover a wider market share, but user typically has a one platform, he/she will not care if this software-product will work in another platform or not. Thus, interoperability will not give user any value-added, aside from the fact that it forces his/her system to perform a useless resource-consuming processes.

This shows and clarifies the age-old tension between user requirements and producer (commercial) requirements.

Dependability

Dependability Model
Figure 2 – Dependability Model

In a simple compression of the number of viruses, Trojans, error messages, and hang-up times, I can conclude here that dependability of Linux is far better than it in Windows.

Usability

I will consider consistency of the(Look and Feel) of the desktop environment, and the Application-Operating System interoperability as the most important factors for the usability.

Application-Operating System interoperability is what I’ve talked about, when I was talking about the interoperability of OpenOffice. Using different GUI technology in one desktop can reduce usability very much.

According to first factor, Windows 2000/Me was the best, everything have the same spirit, while Linux has a bad reputation from this aspect.

This due to the fact that the most distributions consists of several applications developed from different technologies (Java/GTK+/QT), which there widgets have different attributes (appearance) and behaviors.

The only distribution that takes care of this factor and bring user to a one-spirit desktop environment, is Slax; a distribution based on pure KDE (K Desktop Environment), which, in turn, and unfortunately, has an ugly look and feel; a “Consistency of Ugliness”!

Windows and Slax will be equal.

Portability

This is one of the most significant features/requirements that keep Windows behind Linux.

With LiveCD technology you can store a “working operating system” in a read-only medium, and boot from it to access a ready and full-featured desktop environment.

According to this factor, Slax 5.0.6 and Ubuntu 8.x are the best, sine they both offer an installable live operating system.

Ubuntu comes next; it offers an Installable, and alive release of its operating system in two separated mediums.

While this factor conflicts with Microsoft’s‘organizational requirements’: the profitability, since portability makes it easy for users to share illegal copies of the system, which, in turn, could affect its revenue level.

Installability is a critical factor in portability.

Regarding the ease of installation, Slax 5.0.6 and Ubuntu 8.x, is the best, since these distributions have a GUI-based installer from a LiveCD, just like any application in the desktop.

Windows 2000/XP offers a very logical wizard from its installation CD.

Slax Installer fell by the wayside in the latest versions of Slax, and I think that this decision is reasonable, sine ease of critical functions, such as installation function, conflicts safety requirement.

Producer Requirements

Implementation Requirements

One of the most significant example here is time constrain, which might force the producer to ignore some functions or requirements. That’s exactly what happened with Microsoft when decided to ignore some features, like its new database-based file system when released the final release of Windows Vista.

Non-commercial software development doesn’t have this problem, since there’s no deadline.

Delivery Requirements

Fees gathering and copyright protection is the most important example for delivery requirements. For example, technically, Microsoft can develop a Live CD version of Windows, but it will not do it, in order to prevent the ease redistribution of illegal copies of Windows. Linux doesn’t have this limitation.

Comparison Table

Table 4 – Compression table. (1= The best, 2= Good, 3= The worst)
Requirements Windows Ubuntu Slax Hints
Functionality Drivers 2 2 2 Availability/Ease of installation
Software 1 2 3 Productivity software
Protocols 3 1 1 IPv6/SSH
Performance Modularity 1 2 2 GUI
Memory consuming (HD/RAM) 3 2 1
Interoperability 2 3 3 OpenOffice
Dependability Reliability 3 1 1 Bug massages
Availability 3 1 1 Hanging
Security 3 1 1 Trojans (privacy)
Safety 3 1 1 Viruses
Usability 1 2 3 Shell vs. GUI - consistency
Portability 3 1 2 Live CD
Producer Requirements Implementation 3 1 1 Deadline
Delivery 3 1 1 Copyright

Conclusion

According to the Software Requirement Model, you can see that the relationship between requirements, including the relationship between user requirements and producer requirements, is very complex; each might affect one or more of the rest, tensing [2] or supporting. And since the nature of the producer plays the significant role in determining the implementation and delivery requirements, which, in turn, can affect the user requirements, I can conclude that the difference in the nature of producer between these two systems can cause a significant difference in the whole of user requirements.

That’s what I can say regarding the producer requirements.

Regarding user requirements, Windows looks like an American car, a non-efficient but comfortable car, while Linux looks like a complicated but powerful space ship!

So, since desktop users who are usually interested in usability more than anything else, desktop users are usually Windows users, while server market is usually interested in dependability more than anything else, Linux is the best for servers.

References

  1. DistroWatch.com ():
    http://distrowatch.com/weekly.php?issue=20090608
  2. Sommerville, I. (2007) Software Engineering, Eighth Edition, Addison-Wesley.