Monday, March 06, 2006

Linux Paper

GNU/Linux: A Convergence of
Ideas and Ideals


By: Adam Norten


























Introduction

The following is a historical overview of the birth of GNU/Linux. Rather than beginning with Linux itself, however, this paper begins by looking at UNIX. As the first operating system, UNIX naturally opened the door and set the bar by which other operating systems would be measured.

Perhaps most importantly to the development of Linux, restrictions over broad use of UNIX ultimately created a technology vacuum which needed to be filled. This is a common story throughout history: those with technological advances attempt to hoard their discoveries in order to maintain some type of advantage over others, whether it be a military, financial, or technological leg-up on others. As has happened throughout history, new ideas are difficult to contain. Enough information about the new technology at some point leaks out and is seized upon by thinkers and tinkerers who pull apart and analyze it, recreate it, and then ultimately take it one step further. Such was the work of Richard Stallman and Linus Torvalds in developing GNU/Linux, but it all started with UNIX.

UNIX – A Not-So-Well-Kept Secret

UNIX is a computer operating system originally developed in 1960-70s by AT&T Bell Labs. (“UNIX”) In the 1960s, MIT and others developed an experimental operating system called Multics. (“UNIX”) Work on Multics led to another operating system called Unics and then UNIX itself. (“UNIX”)

UNIX was designed to be a portable, multi-tasking and multi-user operating system. (“UNIX”) “Multitasking” means that it can run more than one program at once, and “multi-user” means that it can be accessed by many users at once (Boom). Its importance cannot be overstated. The architecture of the Internet itself was created with UNIX. (Boom) UNIX is currently owned by the Open Group, although ownership to the right to UNIX source code is claimed by others. (“UNIX”)

In the early 1970s, UNIX was developed by Bell Labs to the point where it was usable as a text processing system which Bell used to process patent applications. (“UNIX”). A giant move towards making it more widely usable occurred in 1973 when it was converted to C programming language. This move meant that it could later be more easily modified for use on other machines thus making it portable, and the code became more concise and compact paving the way for increased development of UNIX. (“UNIX”)

At this point in its development, AT&T made UNIX available to universities, commercial firms as well as the U.S. government. This was under licensing agreements which included all source code except the kernel which was machine dependant. That kernel’s source code was written in PDP-11 assembly code. (“UNIX”)

In 1970s and early 1980s, its use in academic circles led to its wide adoption by commercial enterprises including Sun Microsystems. (“UNIX”) By the early 1980s, different versions or “variants” of UNIX were for sale. Throughout the 1980s, AT&T and others continued to develop their own UNIX variant. During this time, however, new commercial UNIX released ceased to include the all important source code. Between 1987-1989, AT&T and Sun Microsystems merged many different variants of UNIX into one package threatening the end of competing vendors and driving licensing fees up. In 1990, the Open Software Foundation released OSF/1, a UNIX variant, to counteract AT&T’s actions. In response, AT&T and other licensees formed UNIX International to counteract OSF/1. (“UNIX”)

Thus by 1991, UNIX variants were widely used by commercial enterprises, but were typically inaccessible for individual users for two main reasons. First, they have become too expensive for small users to afford. (Hasan) Second, the source code, which was at one time included, had become a guarded commodity and was no longer published publicly. (Hasan)

The GNU Project – Free Software for the Masses

Critical to the technical development and easy accessibility of Linux was the GNU Project. GNU standing for “GNU’s Not UNIX” (Boom) and was the brainchild of MIT computer programmer Richard Stallman. Stallman established the project in 1983 with the goal of developing and distributing a complete UNIX-like operating system composed entirely of “free software.” (Hasan; “Linux”) As GNU’s website clarifies, “The word ‘free’ in ‘free software’ pertains to freedom, not price. …[O]nce you have the software you have three specific freedoms in using it. First, the freedom to copy the program and give it away to your friends and co-workers; second, the freedom to change the program as you wish, by having full access to source code; third, the freedom to distribute an improved version and thus help build the community.” (“Overview of the GNU System”:)

Stallman’s quest was based not only on his phenomenal programming skills, but also on his personal belief that the prosperity and freedom of the public in general required that software be free and easily accessible. (Stallman. “Why Software Should Be Free.”) When Stallman first started working with MIT in 1971, his working group exclusively used free software. At that time, even computer companies distributed free software. Programmers such as Stallman were free to cooperate with each other and did. By the 1980s, software had become proprietary. (“Overview of the GNU System.”). Stallman felt that traditional copyright laws which were developed to address ownership issues of the printed word were inadequate to address the new technology of software. (Stallman. “Why Software Should Not Have Owners”) He theorized that restrictions on the distribution and modification of programs caused three levels of harm to users in particular and society in general. First, it meant that fewer people could use and benefit from the program itself. Second, those who had enough money to purchase and therefore use it could not adapt or improve on it. And third, users could not learn from the program or base new work on it. (Stallman. “Why Software Should Be Free.”) Ultimately, Stallman concluded that programmers “have the duty to encourage others to share, redistribute, study, and improve the software we write: in other words, to write ‘free’ software.” (Stallman. “Why Software Should Be Free.”) As such, Stallman conceived the GNU project in order to bring back the cooperative spirit he felt prevailed in the computing community back in the 1970s. (“Overview of the GNU System”)

In 1984, Stallman wrote the GNU C Compiler (GCC), considered one of the most efficient and robust compilers developed. (Hasan). By 1991, the GNU project had also created many tools, but had failed to develop a usable operating system. (Hasan) GNU had developed its own kernel in 1990, but due to a lack of cooperation from programmers in Berkeley, switched to using the Mach microkernel instead. This switch did not bring about the results desired leaving GNU without a usable kernel. (“Linux”)

Tanenbaums’ Minix

Also significant to the development of Linux was a predecessor operating system named Minix. Minix was written by Andrew Tanenbaum, a Dutch professor born in the United States. (Hasan) Tanenbaum wrote Minix as a teaching tool for his student. He essentially developed Minix from scratch but based it on the Bell Labs variant of UNIX. (Hasan; Hales) Tanenbaum was able to pair down this UNIX-type operating system to fit into an 8086 class PC. (Hales) Most significant to the Linux story, Tanenbaum wrote the book “Operating Systems” which gave the 12,000 lines of operating source code written in C and assembly. (Hasan)

Linux Arrives

By 1991, the stage was set. The average PC user had few options concerning the operating system they could use. The majority of users had to use DOS which was owned by Bill Gates. (Hasan) As to an alternative operating system, GNU was struggling to find a usable kernel. However, in Finland, another kernel was germinating which would ultimately become known as Linux. (“Linux”)

In 1991, at the University of Helsinki, a second year student by the name of Linus Torvalds was also working on developing a kernel to support a UNIX-like operating system. (“Linux’s History”; Hasan) To do so, he used Tanenbaum’s Minix. But because Tanenbaum did not permit others to extend the Minix operating system, Torvalds began developing his own. (“Linux”)

Unlike Stallman and the GNU Project, Torvalds was not motivated by an idealist drive to create an operating system for the masses. He began working on the Linux kernel as a hobby (“Linux”), and later admitted that, “Linux was just something I had done, and making it available was mostly a ‘look at what I’ve done – isn’t that neat?’ kind of thing.” (Ghosh)

On August 25, 1991, Torvalds communicated to the Minix news group by email, “Hello everyone out there using Minix – I’m doing a (free) operating system (just a hobby, won’t be big and professional like GNU) for 386(486) AT clones.” (Hasan) Despite Torvalds humble predictions, his operating system, later named “Linux,” exceeded his and the world’s expectations. The first version of the Linux kernel was released to the Internet on 9/17/91 (“Linux”), and next version came out shortly thereafter on October 2, 1991. (Hasan)

Amazingly, Torvalds received discouraging comments from Tanenbaum himself who commented in an email to Torvalds, “Be thankful you are not my student. You would not get a high grade for such a design.” (Hasan) And Tanenbaum later commented, “Linux is obsolete.” (Hasan) Despite Tanenbaum’s lack of favor, Linux standing for “Linus’ Minix” quickly surpassed its name-sake in functionality and widespread use. (“Linux”)

Torvalds developed the Linux kernel for his computer, a PC with an Intel 386 chip. His kernel was a monolithic kernel such that the device drivers are part of the kernel proper. Unlike the DOS on the Intel chip, Torvalds’ operating system allowed for multitasking. (“Linux”) Linux incorporated demand paging, copy-on-write, and swap space. (“Linux’s History”)

Torvalds ultimately joined forces with the GNU project, and worked with its programmers to adapt the Linux kernel to work with GNU’s already developed components. (“Linux”) With GNU’s support, the first complete version of Linux came available in 1994 (Boom), and it was ultimately licensed under GNU public license (GPL) (Hasan; “Linux”; Boom) sometimes referred to as “copy-left software” (Boom) or “share and share alike code.” (“Linux”)

Perhaps the open licensing of Linux was as important to the ultimate development of Linux as the initial work Torvalds did in creating it. By joining the open source software movement, Torvalds allowed Linux to achieve the full potential Stallman dreamed of when he originally created the GNU project. (“Linux’s History”) As open source software, users can take Linux, improve upon it, and distribute their own version of it. In doing so, however, they cannot restrict the rights of users who purchase the software. They must also make it clear that the software is covered by the GPL and provide the complete source code for the software at no cost. (“Linux’s History”)

Interestingly, Torvalds’ releasing Linux to the world under the GNU Public License unleashed its potential and improved exponentially upon an already superior model. Because the Linux kernel and other Linux utilities can be easily downloaded off the Internet, users can instantly change its source code to fix any software bugs found. This in turn decreases the fix time from weeks to a matter of hours. (“Linux’s History”) Because Linux has a fanatical following, whenever a new piece of hardware comes out, the Linux kernel is tweaked to take advantage of it. (Hasan) Because an unlimited number of people are able to work on Linux, as opposed to a limited group of computer programmers who typically work on commercial software products, the combined efforts of programmer-hours spent on perfecting Linux is staggering. A study of Red Hat Linux 7.1 found that a particular distribution contained 30 million source lines of code, and the Linux kernel contained 2.4 million lines of code. That translated to about eight thousand person-years of development time. Had it been developed by conventional means, it would have cost 1.08 billion dollars to develop in the United States. (“Linux”)

Linux has become one of the fastest growing operating systems in history. (Hasan) Because of GNU, Linux has many utilities to offer. (“Linux’s History”) Linux packages and distributions are being offered by Red Hat, Corel, Samba, Caldera, SuSE, Debian, and Slackware. (“Linux’s History”; Hasan; Hales) It is now used not only by individuals but by big businesses such as IBM and Compaq. (“Linux’s History”; Hasan; Hales)

Besides running PCs, Linux was ported to different platforms including running handheld computers (it is becoming an alternative to Windows CE and Palm OS), and embedded systems such as mobile phones and personal video recorders. (Hasan) The Sony Playstation 3 video game console released in 2005 will runs Linux. (“Linux”) The TiVO digital video recorder uses a customized version of Linux. (“Linux”)

On the other end of the spectrum, Linux has been used to run supercomputers (“Linux”) In 1996, researchers at Los Alamos National Laboratory ran Linux on 68 PCs as a single parallel processing machine to simulate shock waves. (Hasan)

Linux offers many benefits to users. While Linux originally viewed as something for computer professionals only, Linux distributions have become more user-friendly. (“Linux”) While difficulty installing it once was a barrier to wide adoption of Linux-based systems, the process has been simplified in recent years. (“Linux”)

Because it is open source software, users are constantly contributing security upgrades such as anti-virus software and firewalls, oftentimes in immediate response to a new security threat. (“Our Linux Top 10 Reasons”) Some users report superior patch management from Linux as opposed to Windows. (“Why Linux is a Better Choice Than Windows”) One study in 2002 found that Windows installations required twice the number of administrator hours on the average amount of time spent patching systems and dealing with other security related issues. (“Why Linux is Better Choice Than Windows”). Linux is a more stable program and tends to crash less than Windows. Linux typically comes with the Apache web server, and email server, router/firewalls capabilities and SQL databases, extras that would cost much more money on Windows. (“Our Linux Top 10 Reasons”) Because it is POSIX compliant, Linux applications developed for Linux can be used on other POSIX compliant UNIX derivatives with minimum effort. While commercial software support costs extra money and is typically limited in time, the open source community of users is available via the Internet to answer technical questions. Different flavors of Linux exist for users to pick and choose which best suits their needs. For Windows users, the product choice is more limited. Because so many active developers use and participate in Linux’s development giving a large quantity and good quality of free feedback from the field, Linux’s development is at a distinct advantage over Windows, which has a limited number of in-house technicians working on it. Linux can be obtained for free and different flavors can be purchased. (“Our Linux Top10 Reasons.”) Because of its low price, Linux is ideal in Set/top boxes and devices such at the Simputer, a computer aimed at developing nations. (“Linux”)

Conclusion

In summary, a number of significant achievements preceeded and contributed to the development of Linux. Initially there was UNIX, which was designed to be a portable, multi-tasking and multi-user operating system. However, by the 1990s, UNIX’s inaccessibility due to its cost and closely controlled source code forced computer programmers to find an alternate operating system to use. Next, there was the GNU project which was critical to the development and accessibility of Linux. The goal of the GNU project was to develop and distribute an entirely “free software” operating system. While GNU made significant advances towards developing an alternative to UNIX, the project failed to develop a usable kernel. Also significant to the development of Linux was a predecessor operating system named Minix. Ultimately, it was Minix that Linus Torvalds used to develop a kernel to support a UNIX-like operating system. Torvalds ultimately joined forces with the GNU project and issued Linux under GNU’s GPL. The open licensing of Linux was as important to the development of Linux as the initial work that Torvalds did in creating it. While Linux was originally viewed as for computer professionals only, later distributions of Linux have become more and more user-friendly.

It should be noted that even in the peaceful world of open source software, there have been some disagreements. GNU is adamant that it be called “GNU/Linux,” a demand which Linus Torvalds finds “ridiculous.” The disagreement over name aside, the collaboration between GNU and Torvalds in creating Linux and making it openly available continues to change the world.

Stallman and the GNU project have stated that the project’s ultimate goal is to “provide free software to do all of the jobs computer users want to do—and thus make proprietary software obsolete.” (“Overview of the GNU System”) While this lofty goal may never be reached, GNU project and Torvalds have already made a contribution for which computer programmers all over the world are grateful – Linux.


References

Boom, Clyde. Hello Linux! A Comprehensive Hands-On Course.

Ghosh, Rishab Aiyer. “First Mind Interview with Linus Torvalds: what Motivates free Software Developers?.” 1998. First Monday. 25 February 2006 http://www.firstmonday.org/issues/issue3_3/torvalds/.

Hales, John. Linux – Quick Study. Boca Raton: Bar Charts, Inc., 2001.

Hasan, Ragib. “History of Linux.” The Linux Gazette. 1 December 2004. 11 February 2006
Lewiston, NY: Lancom Technologies, 2003.

“Linux.” Wikipedia, the free encyclopedia. 11 February 2006 .

“Linux’s History.” The Penguin’s Guide to Linux. Thinkquest. 11 February 2006 .

Our Linux Top 10 Reasons. 2004. Reichel.net. 13 February 2006 http://www.reichel.net/opensource/linuxtop10.html.

“Overview of the GNU System.” GNU Project – Free Software Foundation. 1996. Free Software Foundation. 28 February 2006 http://www.GNU.org/GNU/GNU-history.html>.

Stallman, Richard. “Why Software Should Not Have Owners.” GNU Project – Free Software Foundation. 1994. Free Software Foundation. 23 February 2006 http://www.GNU.org/philosophy/why-free.html>.

Stallman, Richard. “Why Software Should be Free.” GNU Project – Free Software Foundation. 24 April 1992. Free Software Foundation. 23 February 2006 http://www.GNU.org/philosophy/shouldbefree.html>.

“UNIX.” Wikipedia, the free encyclopedia. 13 February 2006 .

(Novell) Why Linux is a Better Choice than Windows. 2005. Novell. 13 February 2006 http://www.novell.com/linux/truth/better_choice.html.