Debian Gnu Linux
\\ I am a Debian Developer (DD) since 20110523. Thanks to Lionel Elie Mamane, the DD who helped me understand Debian GNU/Linux in the first place and who advocated me. Thanks to Joachim Reichel who served as my Application Manager (examines the New Maintainer's philosophical and technical skills). The examination process has been enjoyable and pleasant. Thanks to Enrico Zini, who was the Debian Account Manager, from whom the initial news that I was going to become a DD arrived. Thanks to Martin Zobel-Helas, who announced me this morning that I was provided accounts with login 'lopippo' on the Debian servers. Thanks to Stefano Zacchiroli for his friendly encouragements to actually start the New Maintainer process. Finally, thanks to all the Debianists (developers and not) with whom I have learnt tons of things.
In the Free Software world, the most popular operating system is made of two main components:
These pieces of software put together make what we call the GNU/Linux system. This system is often erroneously referred to as the Linux system. In fact, naming the system by using only the name of its kernel falls short of accounting for the huge amount of work that was put by hundreds of developers for years and years to create the GNU system, that is, a totally free operating system. Note that free here refers to the Free Software definition.
An operating system
It might be funny that I try to define what an operating system is. Most people think that a computer comes with MS-Windows engraved in its electronic circuits. People think that MS-Windows is just part of the hardware, of the computer, the same as the keyboard is part of the computer setup. I'm always amused to see the reactions of people looking at me while I install a Debian GNU/Linux system in a computer... They just don't imagine that there might be something else on that computer that was illegally shipped with Microsoft Windows preinstalled.
So, what is an operating system? An operating system is a set of programs and utilities that make the computer run. A running computer interacts with the keyboard, with the mouse, displays stuff on the screen, reads data from the disk and also writes data to the disk... This subset of operations that the computer performs are called "in-out operations" (I/O operations, even more specifically for hard disk read/write operations).
An operating system should also manage users (if there are multiple user logged in on the system). There must be a scheduler that says something like ---"For the new then seconds, let the user xxx benefit from the processor unit". In fact this is more fine-grained than this, because if the user actually is using more than one program at a given time, the scheduler should provide processing time to both, in alternance, according to their respective needs.
The kernel of an operating system
What's the kernel of an operating system ? It is the director of the computer... it is the program that coordinates all the central processor unit's tasks. The kernel is reponsible for the I/O operations described above, it is responsible for the scheduling of the way the processor is used. This file is not big : most often it is as small as to be stored on a diskette, that is it is less than 1.44 MB in size. In today's computers it might be as large as 3MB.
Currently the Linux kernel that I use in my Debian GNU/Linux distribution is :
2.4M Jan 12 06:52 /boot/vmlinuz-2.6.32-5-amd64
This kernel sits in the boot subdirectory of my filesystem and is of size 2.4 MB.
The other fundamental programs
When the network connection is in place, there must be programs to handle the communications with the network. When one moves one file from one location to another one, there must be a program handling that operation. Same thing when one deletes a file, when one renames a file or deletes a full directory and all of the subdirectories therein. What people often do not grasp is that when one performs any such operation with the mouse, like dragging a file icon to the trash, in reality, there is a program that is contacted by the graphical program to actually perform that task.
GNU and Linux
This is where the GNU and Linux parts of a GNU/Linux operating system meet : the kernel is the director of an orchestra that is made of programs that perform individual tasks. A director of an empty orchestra is of no use as are instruments in an orchestra that play without a director. Both parts of a GNU/Linux operating system are essential.
The idea of an entirely free opearating system has originated in the personal experience of computing of Dr. Richard M. Stallman. He was working in the lab of artificial intelligence of the MIT (during the seventies) and enjoyed open operating systems at first. One day, the software that shipped with the printer had a license that restricted its use somehow (was it a restriction to modify it or a restriction of redistribution, I really do not know). Richard Stallman understood that something was changing in the way software was understood: software was changing of nature. Indeed, while it used to be open code that made a hardware work (vendors were selling hardware, not software), it was becoming a product per se. Richard Stallman really foresaw all the problems that the computing industry is facing right now: the monopolies of big editors like Microsoft, the problems of the patent system which allows mere ideas to be afforded a monopoly for way too many years (these patents should be prohibited as they are a monopoly on products of the human mind, not of an industrial product).
He went on to found the Free Software Foundation and started himself to write the GNU system starting from the very beginning, that is writing GCC, the GNU C compiler, the piece of software with which programs are produced starting from humanly-written code. Many other contributors made a myriad of other utilities that alltogether make the operating system. Richard Stallman long thought about a license to use for all the software published in the GNU project, under the umbrella of the Free Software Foundation. That license would ultimately have the name General Public License (GPL).
Linux ---the kernel--- was started a little before 1991 by a finnish student, Linus Torvalds, as a university project. One of the smarsest moves of Linus Torvalds was to adopt the GPL as its license. Because the kernel was Free Software a multitude of software developer felt enthused to participate to that project: their work was for themselves or for the good of everybody as no company would be able to "steal" their work by putting it in a black box for sell (that unethical behaviour is allowed by another Free Software license, the BSD license that allowed Microsoft to rip off all the TCP/IP stack of the project and to stick it in Windows and to sell it prohibiting further modificatiton of that code in the same time).