SCO v. End Users: What is Linux?


  1. Linux is a kernel, not an operating system.

    1. Before Linux came GNU

    2. GNU's Hurd

    3. The limits of Linux

      1. The kernel

      2. The operating system

      3. The distribution

  2. Linux is free software.

  3. Linux is a product of the Internet, and a new way of collaborating on projects.

    1. Distributed control

    2. Why such growth?

  4. Linux is a collaborative work of software.

  5. More on the Free Software Foundation's GNU General Public License

  6. More on free software

    1. Source v. Object

    2. Why not accept just object code?

    3. Water and oil do mix, but it's not pretty

Linux is a kernel, not an operating system.

Before Linux came GNU

Since UNIX was proprietary, and the availability of source code for future versions was not a certainty, some programmers in academia began a project to create an alternative to UNIX that would always have source code available. In the early 1990's the project, called GNU, was almost complete. The compiler, libraries, linker, and editor were ready. Many standard UNIX programs had been re-implemented in GNU. There was only one major piece lacking, and that was the heart of the system: the kernel.

GNU's Hurd

The GNU project was (and still is) working on a kernel called "hurd", and it's a sophisticated and advanced piece of work - but it wasn't ready in 1991. GNU was a car without a motor. A computer science student from Finland, Linus Torvalds, built a rudimentary kernel to work with cheap PC hardware and the rest of the GNU system. Linus called his kernel Linux; as they say, the rest is history. It's worth noticing that Linux is only one possible motor for the GNU car - there are other kernels for the GNU system, and other operating systems that make use of GNU software.

The limits of Linux

The kernel

The distinction between the kernel and the operating system is not commonly maintained by non-technical people, but the distinction is fundamental. The kernel running by itself just sits there, passing packets and syncing its disks. There's no way for a user to interact with it, submit tasks, or run other programs.

The operating system

To extend the car analogy, a kernel by itself is like a engine on an engine stand - it can't go anywhere, and to even start it you need a cooling system, exhaust system, fuel system, etc. connected to it. To really use the engine you've got to put it in a car - and that requires even more essential systems like axles, a transmission, and brakes. Returning to the computer world, the rest of the essential components are provided by the operating system.

GNU provides the ancillary systems for the Linux kernel. Linux is the engine, but GNU is the rest of the running gear. Together they make the GNU/Linux operating system.

The distribution

Even that operating system by itself is fairly unexciting except to programmers. It's like a completely basic car. To add email (signals), web browsing (a heater), audio players (a radio), pretty displays (windshield) and the rest of the accessories is left to other groups of developers. Once the whole thing is assembled, the higher-level collection is generally called a "Linux Distribution". Buried deep in each distribution is a kernel, but it is surrounded by many hundreds of other programs.

Linux is free software.

In this context, "free" is a term of art that refers to freedom rather than zero cost. What makes it free?

The majority of source code files in the Linux kernel tree carry both Copyright notices and references to the GPL. There's more on the GPL and free software below.

Linux is a product of the Internet, and a new way of collaborating on projects.

Distributed control

Linus made all the changes to the source code at first, but he solicited help from other computer scientists to refine the kernel. The submission process was open to anyone at first, though Linus exercised a quality control power. As the project has gotten bigger, Linus has delegated certain subsections to trusted colleagues, each of whom accepts patches & contributions for that area.

Why such growth?

Since the original release of the kernel tree in 1991, interest has grown both commercially and non-commercially. Linux has a reputation for stability, good performance, and modest hardware requirements. Its creators have a reputation for rapid fixes and a willingness to pursue "the best" over "the commercially viable". Without shareholders to please or contractual commitments to fulfill, the creators are able to pursue technical perfection with far less interference from business concerns than are most if not all commercial software writers.

Linux is a collaborative work of software.

There are more than 10,000 individual source code files that make up the Linux kernel tree; each file is copyrighted by one or more individuals. When assembled by Linus, the kernel source tree is one of the largest collaborative works of software extant. Linus owns the copyright both in the collective work and in many of the original files, and so has some interest in the later revisions to those files.

More on the Free Software Foundation's GNU General Public License

The GPL uses the notion of a "program" to refer to both the source code and object code built from the source code. The terms of the GPL include:

Again, anyone who receives a copy of GPL'd code has the right to modify it for their own use without being required to release it in either form; only redistribution of a modified program triggers the above restrictions. Software companies occasionally misconstrue either the terms of the license or the word "free" to mean that there are no restrictions on derivative works, and seek to include GPL'd software in their closed-source, object-code-only proprietary programs. Copyright owners of GPL'd programs have had to take action to assert their rights in such cases.

More on free software

A necessary condition for a program to be free software is that the source code be available via non-burdensome methods.

Source v. Object

Before software can be used to operate a computer, it must be compiled from source code form into object code form. Changing the source code will change the result of compilation - it will create a different object code version. It's quite difficult, however, to directly modify the object code version of a program, and almost as hard to "decompile" an object code version into the corresponding source code.

Why not accept just object code?

Without access to the source code, then, an end user is at the mercy of the provider of the software - if the company goes out of business or decides to "stop supporting" some program, the user is stuck with the choice of:

  1. Changing to a new program (often this process goes by the name of "upgrading" when the new program comes from the same supplier as the old, unsupported program), or

  2. Hiring a computer genius to reverse-engineer the program and build a modified version that continues to work, or

  3. Being stuck in the past, maybe even running very old hardware that operates correctly with the desupported program.

With the source code, the end user has the additional option of:

     4. Hiring a competent programmer (sub-genius level) to modify the program's source code and produce a new object code version that works.

Water and oil do mix, but it's not pretty

Most Linux distributions include many programs released under the GPL, as well as programs released under other free licenses. Some distributions include software programs that are not free, and some hardware manufacturers make only object code versions of driver programs available. The generic term for a the inclusion of non-free programs in a distribution, or the loading of a non-free driver module in the kernel, is that a "tainted" distribution or kernel results. The term is intended to convey the risks inherent in using an object-code only version of a program.

Because of the GPL's stipulation that source code be available, most distributions include the source code files for GPL'd programs, though sometimes on separate media.