What is the history of GNU and Linux?

A couple of days ago, I was asked a few history questions about GNU/Linux as part of a school assignment. I managed a large response, which probably bears repeating to a larger audience … so here it is!

Before getting down to detailed answers, I better point out the
difference between "Linux" and "GNU/Linux".

"Linux", strictly speaking, is a kernel. A kernel talks to hardware
(CPU, memory, disks etc), and to applications, but does not talk to
people. A kernel, on its own, is almost impossible to use by a person.
You need more stuff to go with it, somewhere.

That "more stuff" is generally called "an operating system", or "OS".
These days, the main purpose of the OS is to talk to the user, and run
programs for them. The OS needs to use the kernel to actually listen
to the keyboard and mouse, and to get data onto the screen.

GNU (which stands for "GNU's not Unix") is a project to produce a
whole operating system that works just like a proprietary Unix OS, but
is released under a Free Software license. It's a technical goal for
political purposes. The founder of the GNU project, Richard Stallman,
is currently visiting New Zealand -- http://tinyurl.com/rmsnz

> When did GNU/Linux come into being?
>        With this question I want to do a bit of history of GNU, but focusing on
> Linux.

GNU/Linux never had a moment of creation. It is a very confusing
political construct, not a technical one ...

http://gnu.org/ tells us that the GNU Project began in 1984, trying to
create from scratch all of the software needed to provide a unix-line
OS. Sensibly, they left the kernel until last, as it would be
impossible to use without all the other programs being in place. So
they started pretty much with the compiler, gcc, that would enable to
create the rest of the programs they'd need. Then they created a huge
number of other smaller programs that are used to create and debug
programs; often referred to as "a toolchain". After that, they split
into two main parts; people developing a kernel, and people developing
any other useful software utilities they could think of.

Initially, the GNU project knew that it had to use "evil" proprietary
software in order to start building their ethical Free alternative.
But they intended to self-create everything they needed eventually;
and in fact still do.

Two of the earliest non-technical things they created were the GNU
General Public License, which is the canonical example of a Free
Software license; and the Free Software Foundation (FSF), which acts
as the copyright owner of all the code in the GNU project.

Many Free Software programmers around the world choose to use the GNU
GPL as their Free Software license, without ever being part of the GNU
Project itself. The Linux kernel, created by Linus Torvalds, was one
of those extra projects (and in fact, still is). It uses the GPL, but
is not part of the GNU project; one essential difference is that the
FSF does not own the copyright to the Linux kernel.

The GNU project does not use the Linux kernel. It uses the
(still-in-development) Hurd kernel.

"GNU/Linux" is a name used to describe operating systems that use the
GNU Project toolchain and other GNU Project software, with the Linux
kernel, to make something useable by people. Confusingly, before the
GNU Project created this name, there were numerous operating systems
that used both the Linux kernel and the GNU Project software; but the
people who had created them were mainly intersted in the Linux kernel,
and generally referred to the whole OS as "a Linux OS", or "a Linux
distribution". The GNU Project feel that this ignores their highly
significant contribution; after all, without the GNU software, you
wouldn't be able to use the kernel.

Not everyone agrees with the GNU Project in this regard; they agree
that the GNU software is very useful, but it is not the only software
that is needed to make a useable operating system -- it does not
include X Windows, the GNOME desktop or the KDE desktop; and without
those, there isn't a GUI. The GNU project point out that all these
other things are actually compiled and debugged with the GNU
toolchain, and therefore without GNU none of this would exist.

The earliest "Linux distributions" were around 1992, 1993. Yggdrasil
was the first to issue CD-ROMs, everyone else was still on floppy
disks. The 1993 Slackware distribution is still in active development,
and still does not call itself "GNU/Linux".

The term "GNU/Linux" has a murky history, there have been several
alternative phrases trying to get the same idea across over time. I
think 1996 is a fair middle date to pick.
http://en.wikipedia.org/wiki/GNU/Linux_naming_controversy

> Why was GNU/Linux created?
>        With this question I hope to go into the ideals that prompted the
> founding of GNU, then go onto why Linus Torvalds started the Linux project.

Oh, sorry, I think I did some of the "why" in the previous answer.
"GNU/Linux" is not a single thing, it was never "created". The GNU
project was started because the founder, Richard Stallman, realised
that it was an ethical imperative to preserve the freedom of the
*users* of software, and that the computing industry was rapidly
turning towards proprietary software. He started the GNU project to
create a Free Software version of the popular and powerful Unix
operating system, which at the time had many many incompatible
proprietary variations.

Linus Torvalds, on the other hand, was just a computer science student
who was taking classes on Operating Systems, where they used a system
called Minix. Minix was written by Andrew Tanenbaum, a professor at
Vrije University in Amsterdam, intended to be similar to the
underlying theories of Unix, but simpler and easier to understand (and
therefor easier to teach to students), and was able to run on early
8086 PCs. Linus had purchased a 386 PC, which was the latest and
greatest microcomputer at the time, and ran Minix. However, he found
that it didn't use all the capabilities of the 386, and wasn't very
efficient or nice. So he started to see what he could do with the 386
himself ...

See here that Linux is interested in the *hardware* of the computer,
not the user. This is why he started work on a program that would
control the 386 hardware effectively; a kernel. Eventually in August
1991 he released the earliest copy of his program to the Internet,
calling it "my new operating system", a "minix-lookalike". In October
1991 it was available from a FTP site, in a directory called
/pub/OS/Linux -- he didn't choose the name, the person who ran the FTP
server choose it for him!

> How did GNU/Linux progress?
>        With this question I intend to look into the free software community, and
> how they helped in the progression of GNU/Linux, from tiny kernal, to the
> full GNU/Linux desktop we know and love today.

This is probably the most difficult part to answer, to be honest.
There are so many different types of people in the community today
(including a huge portion, probably the majority, who do not agree
with the name "GNU/Linux") that tracking backwards to see where they
came from is a daunting task.

There are a couple of tracks you can follow, however. The creation of
the Red Hat and Debian distributions are incredibly important. BSD
Unix (which is neither Linux nor even GNU, yet is totally technically
equivalent, and Free Software too!). The origin of the term "Open
Source" in 1998. The KDE desktop, and the creation of the GNOME
desktop.