Archive

Posts Tagged ‘GNU’

Free Software: How Did it Appear

July 14th, 2009 No comments

Free software

Nowadays free software is so widespread that it’s hardly possible to find a user who doesn’t use at least some free applications. Moreover due to the fact that free software is very similar in functionality with the proprietary one, it’s understandable why many people tend to choose it. But what does “free software” term mean? Let’s check the precise definition.

Free software represents software that is generally distributed with a “free software license” and can be used, studied, modified, and redistributed without or with minimal restrictions. To be more precise, here are the four freedoms which show that the software you get is free:

  • The freedom to run the program, for any purpose (freedom 0).
  • The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this as well.

However it should be mentioned that free software is not the same thing as “freeware”. The main difference between them consists in the fact that in case of freeware authors (or copyright holders) retain the rights to the software, i.e. users generally cannot study, modify or redistribute it. In addition to that free software being redistributable sometimes may not be free of charge, but cost some money, though the prices are generally quite affordable ones.

While talking about the “free software” term the great majority of users associate it with Linux OS and Linus Torvalds, thinking that they represent the source of free software. Though Linux, with no doubts, is the most popular free OS, there are two very important points to be emphasized…

  • The appearance of the free software is the merit of Richard Stallman who is considered to initiate the free software movement in 1983. The main purpose of that movement was to satisfy the need for and ensure “software freedom” to computer users. Moreover in 1985 Stallman creates the Free Software Foundation in order to provide the organizational structure for his free software ideas.
  • Linux is just a kernel, but the operating system is GNU (GNU is Not Unix). GNU project was launched by Richard Stallman in 1983 with the aim to develop a complete Unix-like operating system composed entirely of free software. Thus this combination should be called as GNU/Linux operating system; still it’s generally incorrectly called Linux. However, Linus Torvalds who wrote Linux kernel in 1991 is against the GNU/Linux naming, arguing that Linux is not a GNU project.

Appearance of free operating systems

The main principles of free software – openness and cooperation – appeared a long time before Richard Stallman created the Free Software Foundation and introduced the “free software” term. Thus in the 1950s and 1960s almost all software was developed by academics and corporate researchers being not considered as a commodity. At that time source code was distributed with software because users often modified it in order to fix bugs and add new functionalities. That’s why Richard Stallman stated in 1971 when he became a programmer at the Artificial Intelligence Laboratory of MIT (Massachusetts Institute of Technology) that the “software sharing community at MIT existed for many years”.

However in the late 1960s and 1970s the situation began to change. The main reason for that consisted in the fact that manufacturer’s software costs were dramatically increasing. Although some software was still free, the amount of proprietary one was becoming more and more significant. As a result in the late 1970s and 1980s most of the computer vendors and software companies charged for software licenses, considering them as assets and imposing legal restriction on the development of new software.

So here are the most important prerequisites of Stallman’s Free Software Movement and the appearance of free software:

1) High cost of the operating systems available at that time (MS-DOS, Unix and etc.), i.e. they were available for a very limited amount of users

2) Paying extra money for the operating system while buying computer made it even harder for a person to get one

3) Providing no source code for the systems meant:
-  The users weren’t able to study the OS in order to understand the way it worked or to use it as a basis of their own work
-  There was no way to adapt the system to users’ needs
-  Users weren’t able to fix the bugs or improve the system

4) Proprietary licenses meant that the operation systems were not for sharing, thus slowing down the speed of OS improvement because there were less bug reports.

5) Slower development of software in comparison with hardware. In case of proprietary software it’s irrational to release new versions very often, because the users knowing that a better version is going to appear soon, won’t spend money to get the current version and etc.

As a result on September 27, 1983 Richard Stallman announced the plan for creating the GNU operating system, having the goal of bringing a wholly free software operating system into existence. The software development itself began in January 1984. Later on in March 1985 all the ideas of Richard Stallman were published as the GNU Manifesto. Most of GNU has been written by volunteers (some in their spare time, some paid by various companies, educational institutions, and other non-profit organizations.

Stallman contributed a lot in propagation of the “share with the neighbor” idea, giving the users the opportunity to be able to study, modify and redistribute the software that they use. According to Stallman’s point of view “freedom is vital for the sake of users and society as a moral value” and not for developing technically superior software; thus he does not agree with the phrase “software wants to be free” which is often mistakenly attributed to him.

Creating Linux Kernel

Before we go on with the history of creation of Linux kernel let’s find out what the main reason, which provoked 21 year-old Finnish student of Helsinki University of Technology, Linus Torvalds, to start that project, was. Though there wasn’t the only reason, the most important one is considered to be the fact that in 1991 no operating system was well adapted to the 32-bit features of the increasingly cheap and popular Intel 386 architecture for personal computers (MINIX had 16-bit design, but GNU and 386BSD kernels were not available at the time). Later Linus Torvalds stated that if either the GNU or 386BSD kernels were available at the time, he likely would not have written his own.

Despite the fact that the project of Linus Torvalds became well-known as the Linux kernel, initially it was a terminal emulator, which he used to access the large UNIX servers of the university. The program was written just for the specific hardware Linus was using at that moment (PC with an 80386 processor). As he wrote in Just for Fun, he eventually realized that he had written an operating system kernel.

Taking into consideration that Linus Tovalds developed it on Minix using GNU C compiler some of the researchers stated that young software engineer used Minix code while created the kernel. The main reason for such a statement was the time Linus spent on his invention. If Tanenbaum created Minix within some years, for Torvalds it took a couple of months to create Linux kernel. Another thing was that as a student Torvalds had access to Minix’s source code. However as Tanenbaum emphasized in his book Samizdat, Torvalds had not copied Minix’s design. Here is a short excerpt from his book:

“But the code was his. The proof of this is that he messed the design up. MINIX is a nice, modular microkernel system […] Linus rewrote the whole thing as a big monolithic kernel, complete with inline assembly code. The first version of Linux was like a time machine. It went back to a system worse than what he already had on his desk. Of course, he was just a kid and didn’t know better (although if he had paid better attention in class he should have), but producing a system that was fundamentally different from the base he started with seems pretty good proof that it was a redesign…“

The unfriendly tone of this excerpt can be explained by the fact that there was quite an unpleasant Tanenbaum-Torvalds debate about Linux, which Tanenbaum considered to be obsolete since it was a monolithic kernel. However later on Tanenbaum’s prediction proved to be incorrect.

On 26th of August, 1991 Linus Torvalds posted his famous message to comp.os.minix, in which he wrote about the creation of free operating system for 386 AT clones. Since that time a lot of users contributed code to the project. The Linux version 0.01 had 10,239 lines of code and appeared by September 1991. It was just the kernel and as Linus mentioned “to get a working system you need a shell, compilers, a library etc. These are separate parts and may be under a stricter (or even looser) copyright. Most of the tools used with Linux are GNU software and are under the GNU copyleft…”

With the release of version 0.12 in February 1992 GNU General Public License (GPL) was adopted instead of the previous self-drafted license, which did not allow commercial redistribution. In March 1992 Torvalds decided to make a large jump as far as the version number was concerned and the new release was the version 0.95. The explanation was that there wasn’t so much work left until the final release of the version 1.0. Unfortunately that was too optimistic and the version 1.0.0 appeared just in two years. AS for the current latest version 2.6.30 it appeared on 9th of June 2009 and contains 11,637,173 lines of code.

Another interesting point I forgot to mention is the appearance of the Linux name… Although Torvalds considered the name “Linux”, he decided not to use it because to his mind it was too egoistical. So the name he wanted to call his invention was Freax – combination of “freak”, “free” and “x” (from Unix). However his coworker at the university, Ari Lemmke, didn’t think that Freax was a nice option, deciding to call it Linux (Torvalds didn’t know about that). Later as Linus found out about the name Ari gave to the project, he agreed it.

Although Linus Torvalds did not design Linux to be portable (he especially emphasized that “it is NOT portable, and it probably never will support anything other than AT-hard disks, as that’s all I have…”), at the moment Linux represents one of the most widely ported operating system kernels. As for the end of 2008, GNU/Linux was used on more that 87% of systems on the Top 500 supercomputers list. In addition to that it has been ported to different mobile and handheld devices. Moreover the Android operating system, which becomes very popular these days and is considered to have very decent potential, uses the Linux kernel as well.

The Bottom Line

As far as the license is concerned at the moment Linux is licensed under version 2 of the GPL, with no option to use a later version. Here are some of the terms and conditions of the GPL:

- Licensee is given permission to modify the work, as well as to copy and redistribute the wok or any derivative version
- Licensee is allowed to charge a fee for this service if he/she wants to
- Distributor may not impose “further restrictions on the rights granted by the GPL”
- Programs distributed as pre-compiled binaries are accompanied by a copy of the source code ad etc.

However, according to the terms of the GNU GPL if no version is specified, then any version may be used. Still currently the great majority of the kernel programmers prefer GPL version 2 that version 3. If you would like to learn more about GNU GPL and its versions, please visit this page.

To sum up we should say that Linux and GNU developers, and many others who contributed to the design of GNU/Linux OS, manage to create a really functional, competitive and customizable operating system, which corresponds to all four Stallman’s freedom, ensuring thus the real freedom to the users.