# Linux Retrospective

by Seth Kenlon

A unique trait of open source is that it's never truly EOL (End of
Life). The disc images mostly just remain online, and their licenses
don't expire, so it's relatively simple to go back and install an old
version of Linux in a virtual machine and get a very precise picture
of what progress Linux has made over the years.

I wanted to look back at Linux over the years for that purpose: to see
how Linux itself has developed. I was surprised to find that not only
did I learn a lot about Linux's development, but also about computing
in general. It's easy to fall into a short-term world view, where
computers begin with the x86 architecture, the loudest two mass-market
operating systems, and the Internet, but there's a lot to the world of
computing, and looking back helps comprehend the sheer depth of what
exists now and what may exist in the future.

We begin our journey with Slackware 1.01, posted to
`comp.os.linux.announce` well over 20 years.


## Slackware 1.01 (1993)

> From: Patrick J. Volkerding (volkerdi@mhd1.moorhead.msus.edu)
> Subject: [ANNOUNCE] Slackware Linux 1.01 
> Newsgroups: comp.os.linux.announce
> Date: 1993-08-04 08:33:56 PST 
>
> The Slackware Linux distribution (v. 1.01) is now available for 
> anonymous FTP. This is a complete installation system designed for
> 386/486 systems with a 3.5" boot floppy. 486 optimizations are now 
> used for most of the included software.

Booting Slackware 1.01 is surprisingly easy, with a few caveats. First
of all, there was no PCI interface back in 1993, so emulating PCI
hardware in a virtual machine is pointless. Emulating ISA hardware
creates a functioning virtual machine.

Another sobering realisation: August 1993 was two months prior to
DHCP! Since 1985, there was BOOTP, a precursor of DHCP, but the
wonderfully convenient and simplistic DHCP didn't exist until RFC 1531
and 1541, two months after Slackware 1.01's release. 

In plain English, this means that acquiring an address on even your
emulated network can be tricky. Luckily, since there's no web browser,
as such, it won't affect you all that much. Assuming you do get an
address, though, you can either use `telnet` to browse port 80,
although modern HTTP and HTML isn't exactly handled smoothly by 1993's
`telnet`. FTP works as expected, however, and for fun I logged in to a
Slackware mirror to browse what updates had occurred in
the latest Slackware-current.

![Slackware 1.01](images/slack1.png)

In fact, many things in 1993's version of Linux works just as you'd
expect. The obvious stuff isn't surprising; all the basic commands
like `ls` and `cd` work, all the basic tools (`gawk`, `vi` and of
course Volkerding's favourite `elvis`, `cut`, `diff` `perl`, and so
on) are present and accounted for, but some of the little things
surprised me. For instance, BASH courteously asks if you *really* want
all 500 files in a location to be listed when you use tab
completion. And tools to inspect compressed files (like `zless` and
`zmore` and `zcat`) already existed. In more ways than I'd expected,
the system feels surprisingly modern.

What's missing is any notion of package management. All installs and
uninstalls are entirely manual.

### Command to Launch

I used the Slackware ISO distributed by Qemu during their Advent
Calendar image giveaway. The image provided Slackware 1.01
pre-installed, so it's trivial to get started. The command:

    $ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \
    -netdev user,id=slirp -device ne2k_isa,netdev=slirp \
    -serial stdio -redir tcp:22122::22


## Debian 0.91 (1994)

A year later, Debian 0.91 was released by Ian Murdock, an amazing
force in open source UNIX who we sadly lost last year around this
time. I met Ian once at the Open Solaris booth at Ohio Linux Fest in 2007
or 2008, and his passion for intelligent and open UNIX was contagious.

The bootdisk (`bootdsk.gz`) for Debian 0.91 boots to a simple shell, with clear instructions on the steps you're meant to take next.


### Command to Launch

I used the floppy disk images contained in https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist/, posted in 1994.

The commands to boot:

    $ gunzip bootdsk.gz basedsk1.gz basedsk2.gz
    $ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \
      -drive file=bootdisk,if=floppy,format=raw \
      -drive file=debian.raw,if=ide,format=raw \
      -device ne2k_isa,netdev=slirp \
      -serial msmouse -vga std \
      -redir tcp:22122::22 \
      -netdev user,id=slirp

The install process is surprisingly smooth. It works off of a menu
system with 7 steps from partitioning a hard drive and writing the
ext2 filesystem to it all the way through to copying the `basedsk`
images. This provided a minimal Debian install with many of the
familiar conventions any modern Linux user would expect from their OS.

Like Slackware 1.01 before it, Debian 0.91 makes no effort to boot to
a graphical environment. Then again, in 1994 even the big, corporate
operating systems weren't 100% sold on the idea of a GUI by default.

A few things from my virtual machine were recognised by this early
Debian release, but the (emulated) network card, for instance,
required entries into configuration files, and generally I felt very
much on my own in setting up my machine. In an odd way, it was
comforting; it reminded me of my early Linux days, learning how to
install a WiFi driver and join a network from a shell. In other words,
modern Linux is by comparison more convenient in some very noticeable
ways, but that's not to say that *old* Linux is anywhere near as
daunting as I'd imagined.

### Packages

Debian is now famous for its package management system, but there are
mere hints of that in this early release. The `dpkg` command exists,
but it's an interactive menu-based system; a sort of clunky
`aptitude`, with several layers of menu selections and,
unsurprisingly, a fraction of available packages.

Even so, you can sense the convenience factor in the design
concept. You download three floppy images and end up with a bootable
system, and then use a simple text menu to install more goodies. I
sincerely see why Debian made a splash.


## Jurix/S.u.S.E. (1996)

In the mid 90s, a German company called Software und System
Entwicklung translated Slackware to German and marketed it as
S.u.S.E. Linux 1.0. In 1996, they started their own custom
distribution of Linux, basing their work upon Jurix Linux by Florian
La Roche.

![Jurix](images/jurix_install.png)

Jurix shipped with kernel 1.3.61, with binary `.tgz` packages,
organised into directories resembling the structure of Slackware's
install packages. The installer is similar to Slackware's installer.

![Jurix](images/jurix_install2.png)

### Command to Launch

The commands to boot Jurix in Qemu:

    $ qemu-system-i386 -M pc -m 1024 -boot order=ac,menu=on \
      -drive file=./jurix/install/install,if=floppy,format=raw \
      -drive file=jurix.img,if=ide \
      -drive file=pkg.raw,if=ide,format=raw \
      -device ne2k_isa,netdev=slirp \
      -serial msmouse -vga std \
      -redir tcp:22122::22 \
      -netdev user,id=slirp
 
After juggling the prep for virtualising Jurix (building a raw image
to hold all the installable packages, sorting out emulating the mouse,
and so on), installation was sublimely simple. There were three steps
in the installer, and mostly all it did was format your target drive
(without confirmation!) and then untar the packages from your sources
drive to your target drive.

### Running Jurix 

Without specifically looking for the earliest instance, Jurix was the
first Linux distribution I found that really "felt" like it intended
the user to definitely use a GUI
environment. [XFree86](http://www.xfree86.org/) is installed by
default, so if you didn't intend to use it, you had to opt out.

Back in 1996, something being installed on Linux didn't necessarily
mean it was *configured*. I got to fight with `Xorg.conf` a little
back when I switched to Linux with Slackware 12.0, but mostly during
my Linux lifetime, `X` has sorted itself out for me. I got to remedy
that life of luxury with Jurix.

In Jurix, the config file of interest was
`/usr/lib/X11/XF86Config`. An example file was provided, and that got
me 90% of the way to a GUI, but fine-tuning took me a whole
Saturday. In the end, I didn't get a GUI going, because after all the
`vsync` and `hsync` and resolution settings and `ramdac` colourmap
overrides, it turned out that the I, myself, or the Jurix installer,
had somehow failed to install kernel modules for mouses, and as far as
I can tell, there was no override to launch X without a working mouse
in 1996. I had to move on with my exploration of historic Linux, so I
gave up in the interest of time.

Installing new packages on Jurix was simple; find a `.tgz` on your
sources drive, and run a routine `tar` command:

    $ su -c 'tar xzvf foo.tgz -C /'

The package get unzipped and unarchived to the root partition, and
ready to use. I did this with several packages I hadn't installed to
begin with, and found it easy, fast, and reliable.

Like the previous attempts, Jurix turned out to be more familiar than foreign. There were no surprises or unexpected quirks, and it's easy to see why it became the basis for S.u.S.E.


## SUSE 5.1 (1998)

There were only two years between SuSE 1.0 and SuSE 5.1; in the
interim was SuSE 4.2 (a reference to the **Hitchhiker's Guide to the
Galaxy**). With 5.1, the YaST install and system configuration tool
came to the forefront, and a GUI environment was, while not a default,
obviously an expectation.

![FVWM running on SuSE 5.1](images/suse5fvwm.png)


### Command to Launch

I installed SuSE 5.1 from a InfoMagic CD ROM purchased from
a software store in Maryland in 1998. The CD set included 6 discs:
Slackware 3.4, Red Hat 5.0 and Red Hat Powertools, SuSE, and two discs
full of UNIX software from the SunSite servers.

    $ qemu-system-i386 -M pc-0.10 -m 64 -boot order=ad,menu=on \
      -drive file=floppy.raw,if=floppy,format=raw \
      -cdrom /dev/sr0 -drive file=suse5.raw,if=ide,format=raw \
      -vga cirrus -serial msmouse

The install process was relatively simple, albeit a little convoluted
compared to Slackware, Debian, and Jurix before it. YaST volleyed
configuration files and settings between a floppy disk and the boot CD
ROM, requiring several reboots and a few re-starts as I tried to
understand the sequence expected from me. Once I'd failed the process
twice (partly my fault, for not having an emulated floppy on hand the
first time), I got used to the way YaST worked, and the third time was
smooth and very much a hint at the Linux user experience to come in
later years.

### Running SuSE 5.1

A GUI environment was my main target for SuSE 5.1. The configuration
process was familiar, with a few very nice graphical tools (including
a very good `XF86Setup` frontend) to help test and debug mouse and
monitor problems. It took me under an hour to get a GUI up and
running, and most of the delay wasn't caused by SuSE but by my own
research on what resolutions and colour depths Qemu's virtualised
video card could handle.

Included desktops were `fvwm`, `fvwm2`, and `ctwm`. I used `fvwm`, and
aside from a false start due to setting the wrong resolution in my
configuration file, it worked as expected. I even discovered `tkDesk`,
a dock and file manager combo pack that is surprisingly similar to
Ubuntu's `Unity` launcher bar.

The experience was, over all, very pleasant, and in terms of getting a successful desktop up and running, SuSE 5.1 was a rousing success.



## Red Hat 6.0 (1999)

The next install disc I happened to have lying around was Red Hat 6.0. That's not RHEL 6.0; just Red Hat 6.0. This was a desktop distribution sold in stores. The disc I used was purchased in June 1999.

### Launch Command

The Red Hat 6.0 set contained one disc, requiring Pentium III or better, 500MB hard drive, and 16MB RAM. To emulate this:

    $ qemu-system-i386 -M pc-0.10 -m 512 -boot order=ad,menu=on \
      -drive file=redhat6.raw,if=ide,format=raw \
      -serial msmouse -netdev user,id=slirp \
      -vga cirrus -cdrom /dev/sr0

### Installing

The installation was very simple and fully guided. You never have to
leave the safety of the install process, whether choosing what
packages to install (grouped together in **Workstation**, **Server**,
and **Custom** groups), partitioning a drive, or kicking off the
install.

And the install is [Fedora](http://fedoraproject.org)-fast. If you're
stepping through it using just the obvious defaults, you're installing
the OS before you know it. I found it far simpler than SuSE 5.1's
YaST, and less demanding than the earlier Linux distributions that
required a mix of shell commands to partition and format along with
menu-driven package installs.

### Using Red Hat 6.0

The usual initial hurdle, configuring X, was relatively simple this
time around, because I imported the XF86Config file I'd created for
SuSE 5.1 and obviously the virtual hardware of Qemu had not
changed. Red Hat 6 includes a `xf86config` (an application, not the
file bearing the same name except with capitals) to step you through X
configuration, although it strangely allowed some mouse emulation
options that X later claimed were invalid, and regardless of the
configuration script, getting X correct was still clearly not a simple
task.

![Xdm login manager.](images/redhat6_xdm.png)

The desktop bundled with Red Hat 6 was, as it still is, Gnome,
although the window manager was a very early Enlightenment (which also
provided the main sound daemon). `Xdm` and `gdm` were both provided as
login managers so that normal users could log in without having the
permission to start or kill X itself (particularly important on
multi-user systems).

All the usual UNIX applications are present and accounted for, and as
familiar as ever. Certain staple applications are still not yet
present, for instance `gedit` doesn't exist, there's no grand unified
office application, and no package manager to speak of. `GnoRPM`, a
GUI interface for RPM installation, review, and removal, was the
closest to a `yum` or `PackageKit` experience it had, and `gnotepad+`
is the GUI text editor (Emacs notwithstanding, obviously).

Over all, the system is intuitive. Unlike later implementations of
Gnome, this early version featured a panel at the bottom of the
screen, with an application menu and launcher icons and virtual
desktop control in a central location. The two have diverged
significantly now, but early Gnome was not unlike KDE.

Red Hat 6 was a strong entry for Linux, which was obviously moving
seriously toward being a proper desktop OS.


## Mandrake 8.0

Mandrake Linux is the beginning of what continues today as Mageia
Linux. It was a well-respected Linux distribution that provided paid
support options. 

I'd never used Mandrake, proper, but had heard good things about
it. It has been referred to as "the Ubuntu of its time", and although
I've used Mandriva and Mageia as the main OS for a computer in the
past, I was eager to try the one that started it all.

Mandrake 8.0 was released in 2001, so it would have been competing
against, for instance, Apple OS 9.2 and Windows ME.

### Command to Launch

I fell back on fairly old emulated tech to be safe:

    $ qemu-system-i386 -M pc-0.10 -m 2048 \
      -boot order=ad,menu=on \
      -drive file=mandrake8.qcow2 -usb \
      -net nic,model=rtl8139 -netdev user,id=slirp \
      -vga cirrus -cdrom mandrake-8.0-i386.iso

### Install

Mandrake's install process was alarmingly good. I thought the Red Hat
installation process had been nice, but Mandrake's was astonishing. It
was friendly, it gave the user a chance to test configurations before
continuing, it was easy, and fast, and it worked almost like
magic.

![Mandrake 8.0 installer](images/mandrake8install.png)

The install took maybe 15 minutes, and the next thing I knew,
I'd rebooted into a graphical desktop.

### Using Mandrake 8.0

Both Gnome, KDE, and a collection of "Other Desktops" are installed by
default, but I booted to KDE. By this point, the K Desktop had
developed its own traditions, it had nailed down its look and feel,
and had a very polished interface. Mandrake clearly spent time making
the desktop ready for its users, though, by carefully placing
important shortcuts on the desktop so that users knew where to find
support and reference material.

Using the Mandrake desktop is a lot like using any given desktop of
the time, actually. I was a little surprised at just how similar the
experience was. I feel certain that if I'd somehow stumbled into
Mandrake Linux at this time, it actually wouldn't have been beyond my
ability, even as a young and not very technical user. The interfaces
are intuitive, the documentation helpful, and the package management
quite natural, for a time when it still wasn't yet the mental default
for people to just go to a website and download an installer for
whatever software they wanted.

![Mandrake: a turning point in Linux](images/mandrake8.png)

The impression, overall, when walking away from Mandrake was that it
must have been a real turning point for Linux. It was the first
desktop Linux experience that felt like a *product* was being
delivered to the user. Justly so, since many users would have paid for
support from Mandrake.

It is indicative, too, of advances being made in Linux in general,
though. Inroads were being made into auto-detection of hardware, USB
was making input devices trivial to configure, and even X
configuration was something that could be tested and re-tested until
it was gotten right *before* the config files are written and the
install is finalised.

This is was a strong release for Mandrake, and a great representation
of Linux. Now if I could just go back 15 years and tell the younger me
that it had existed...

## Fedora 1

The "Red Hat" distribution, as such, became Red Hat Enterprise Linux
(RHEL), which was widely reported as the discontinuation of $0 Red
Hat. Consequently, in 2003, the new **Fedora Core** distribution was
released.

### Command to Launch

Nothing particularly special is required to boot the old Fedora Core 1
disc. 

    $ qemu-system-i386 -M pc -m 2048 -boot order=ac,menu=on \
      -drive file=mandrake8.qcow2 -usb \
      -net nic,model='rtl8139' -netdev user,id=slirp \
      -vga cirrus -cdrom fedora-1-i386-cd1.iso


### Installation

Installing Fedora Core is simple and familiar; it uses the same
installer as Fedora and Red Hat for the next 9 years. It's a graphical
interface that's easy to use and easy to understand.

![Anaconda GUI](images/fedora1anaconda.png)


### Using Fedora Core 1

The Fedora Core experience is largely indistinguishable from Red Hat 6
or 7. The desktop is polished, there are all the signature
configuration helper applications, and the presentation is clean and
professional.

![Blue Fedora, Red Hat](images/fedora1.png)

A **Start Here** icon on the desktop guides the user toward three
locations: an Applications folder, the Preferences panel, and System
Settings. A red hat icon marks the applications menu, and the lower
Gnome panel holds all the latest Linux application launchers,
including Open Office and the Mozilla browser.


## The Future

By the early 2003, it's clear that Linux has well and truly hit its
stride. The desktop is more polished than ever, the applications
available want for nothing, the installation is easier and more
efficient than other operating systems. In fact, from the early 2000s
onward, the relationship between the user and the system is firmly
established and remains basically unchanged even today. There are some
changes, and of course several updates and improvements and a
staggering number of innovation.

Project names come and go; Mandrake became Mandriva and then Mageia,
Fedora Core became Fedora, Ubuntu popped up from Debian and has made
"Linux" a household term, and Valve has made SteamOS the official
basis for its gaming platform, and Slackware quietly continues to this
day! 

Whether you're new to Linux, or whether you're such an old hand that
most of these screenshots have been more biographical than historical,
it's good to be able to look back at how one of the largest open
source projects in the world has developed. More importantly, it's
exciting to think of where it's headed and how we can all be a part
of that, starting now, and for years to come.