Introduction to Anaconda
========================

Anaconda is the installation program used by Fedora, Red Hat Enterprise Linux
and some other distributions.

During installation, a target computer's hardware is identified and configured
and the appropriate file systems for the system's architecture are created.
Finally, anaconda allows the user to install the operating system software on
the target computer. Anaconda can also upgrade existing installations of
earlier versions of the same distribution. After the installation is complete,
you can reboot into your installed system and continue doing customization
using the initial setup program.

Anaconda is a fairly sophisticated installer. It supports installation from
local and remote sources such as CDs and DVDs, images stored on a hard drive,
NFS, HTTP, and FTP. Installation can be scripted with kickstart to provide a
fully unattended installation that can be duplicated on scores of machines. It
can also be run over VNC on headless machines. A variety of advanced storage
devices including LVM, RAID, iSCSI, and multipath are supported from the
partitioning program. Anaconda provides advanced debugging features such as
remote logging, access to the python interactive debugger, and remote saving of
exception dumps.

For more news about Anaconda development and planned features you can follow
`our blog <https://rhinstaller.wordpress.com>`_.

History
-------

(The following was contributed by David Cantrell
<dcantrell@redhat.com> with some minor corrections and additions by Matt Wilson
(formerly <msw@redhat.com>) and is probably 85% to 95% accurate.  History
is hard to keep track of, but this is what I can recall being both in
the industry at the time but not at Red Hat.)

So the Anaconda code base that we all started with began in 1999 or
so, but it was not the original installer used by Red Hat Linux.  Like
many distributions at the time, the installation process was hand
crafted and consisted of a series of steps executed by a collection of
different programs and tools (shell scripts or Perl scripts or custom
programs and so on).  The original source code for the installer
was shipped on the CD, and you can find it in the Red Hat Linux
download archives up until the `6.0 release <https://archive.download.redhat.com/pub/redhat/linux/6.0/en/os/i386/misc/src/install/>`_.

OK, so Anaconda.  Back in the late 1990s there was a huge push of
money in to Linux companies.  Red Hat itself was founded in 1993 and
by the late 90s was a large company.  SuSE was another big one.  I
worked for a company called Walnut Creek CDROM (ftp.cdrom.com) which
sponsored FreeBSD and Slackware Linux.  Out in Utah in the United
States there was a company called Caldera that made a distribution
called OpenLinux (there's actually a lot more history here, Caldera's
product called Caldera Network Desktop was based on Red Hat Linux and
LST (Linux Support Team) Power Linux was based on Slackware
Linux...LST Power Linux became OpenLinux).

Caldera was founded by former Novell employees and the focus was on
business customers.  Red Hat was still just trying to make a general
purpose system and the industry as a whole tended to view the main
competitor to Linux as Windows.  Caldera was trying to make an
enterprise operating system.  The late 1990s saw the first dedicated
Linux trade shows.  No longer did Linux companies go to COMDEX or
Windows World.  We now had the LinuxWorld Conference and Expo.  And I
was at the first one.  And the second, and third, ... all the way
until LWCE stopped being an event.  Companies were using LWCE to drop
huge product announcements.  Well Caldera had an announcement at one
of these events.

They announced the next version of Caldera OpenLinux and one of its
big features was a graphical installer.  This was huge.  This was the
first Linux distribution to feature a graphical installer program.
They wrote it in C++, and it used the Qt GUI windowing toolkit in
`partnership with Trolltech <https://rant.gulbrandsen.priv.no/linux/openlinux-lizard>`_.
Everyone was impressed with how easily it was to use.  Bob Young,
at that time CEO of Red Hat, `gave due credit <https://www.linuxjournal.com/article/3553>`_
for the slickness in the "happy path" of Linux OS installation with
Lizard.  But he also called out that there was no "back" button.

Since installing packages took a long time back then, Caldera even
put games in the installer.  You could play Tetris during
installation (side note, Be did that in BeOS too
several years before).

They named their installer "Lizard".  Why?  Well, back in the 90s,
every UI thing tended to emulate the Windows "wizard work flow".  The
series of dialog boxes with Next and Back buttons.  Windows created
that workflow and people felt comfortable with it.  They went with
Lizard as a combination of "Linux wizard".  (side note: this is why
you can sometimes see references to "druids" in old Red Hat
documentation, such as "Disk Druid".  No, it's not a wizard like
Windows, it's a druid!)

Caldera got a lot of patents for the installer, including being able
to play a game during installation which is, incidentally, why we
never did that in Anaconda.  Well, there's also the fact that
folks at Red Hat took trademarks very `seriously <https://bugzilla.redhat.com/show_bug.cgi?id=224627>`_,
and worked hard to avoid shipping a game of falling blocks under
that name.

OK, so Caldera has made Lizard.  Now Red Hat needed to act.  They
created a new installer project to focus on this graphical installer.
The installer up to this point was all written in C, and development
was relatively slow due to the low level of the language.  To move
fast, Erik Troan decided to build a new installer with the UI workflows
written in Python.  Erik went with the name "Anaconda" because (a) it
is written in Python and an Anaconda snake is a type of python and
(b) the Anaconda snake eats lizards in the wild.  It was one of a long
line of creatively named software modules that Erik wrote as part of the
installer.  There was
"`pump <https://archive.download.redhat.com/pub/redhat/linux/6.2/en/os/i386/misc/src/anaconda/pump/>`_",
a bootp / DHCP client library, so named because (a) A pump is a kind
of shoe, like a `boot[p] <https://manpages.ubuntu.com/manpages/bionic/man8/pump.8.html#quibble>`_
and (b) "plumb"ing up a network interface is like priming a "pump".
And there was
"`balkan <https://archive.download.redhat.com/pub/redhat/linux/6.2/en/os/i386/misc/src/anaconda/balkan/>`_",
a library to handle partition tables, so named because the Balkans have
always had to deal with partitioning.

And that's how we got the name Anaconda for the installer.  Caldera
eventually disappeared entirely.  OpenLinux didn't go anywhere.  But
Caldera really tried.  The last thing they did?  They bought SCO and
renamed themselves to SCO and sued IBM for infringing on original Unix
code in Linux.  We all know how that turned out.  :)
