# Puppy Linux

Puppy Linux is a family of light-weight Linux distributions that focus on ease of use and minimal memory footprint. The entire system can be run from random-access memory (RAM) with current versions generally taking up about 600 MB (64-bit), 300 MB (32-bit), allowing the boot medium to be removed after the operating system has started. Applications such as AbiWord, Gnumeric and MPlayer are included, along with a choice of lightweight web browsers and a utility for downloading other packages. The distribution was originally developed by Barry Kauler and other members of the community, until Kauler retired in 2013. The tool Woof can build a Puppy Linux distribution from the binary packages of other Linux distributions.

## History

Barry Kauler started Puppy Linux in response to a trend of other distributions becoming stricter on system requirements over time. His own distribution, with an emphasis on speed and efficiency and being lightweight, started from "Boot disk HOWTO" and gradually included components file-by-file until Puppy Linux was completed. Puppy Linux was initially based on Vector Linux but then became a fully independent distribution.

### Release versions

| Version | Release date |
| Puppy 0.1 | 18 June 2003 |
| Puppy 1.0 | 29 March 2005 |
| Puppy 2.0 | 1 June 2006 |
| Puppy 3.0 | 2 October 2007 |
| Puppy 4.3.0 | 5 May 2008 |
| Puppy 5.0.0 | 15 May 2010 |
| Puppy 5.2.8 | 4 April 2012 |
| Puppy 5.3.0–5.7.0 | 24 October 2011 – 8 March 2014 |
| Puppy 6.0.5 | 26 October 2014 |
| Puppy 6.3.2 | 21 June 2016 |
| Puppy 7.5 | 4 December 2017 |
| Puppy 8.0 | 24 March 2019 |
| Puppy 8.2.1 | 1 July 2020 |
| Puppy 9.5 | 21 September 2020 |
Puppy 0.1 is the initial release of Puppy Linux. It has no UnionFS, extremely minimal persistence support, and has no package manager or ability to install applications.
Puppy 1.0 series runs comfortably on very dated hardware, such as a Pentium computer with at least 32 MB RAM. For newer systems, the USB key drive version might be better (although if USB device booting is not directly supported in the BIOS, the Puppy floppy boot disk can be used to kick-start it). It is possible to run Puppy Linux with Windows 9x/Me. It is also possible if the BIOS does not support booting from USB drive, to boot from the CD and keep user state on a USB key drive; this is saved on shutdown and read from the USB device on bootup.
Puppy 2.0 uses the Mozilla-based SeaMonkey as its Internet suite (primarily a web browser and e-mail client).
Puppy 3.0 features Slackware 12 compatibility. This is accomplished by the inclusion of almost all the dependencies needed for the installation of Slackware packages. However, Puppy Linux is not a Slackware-based distribution.
Puppy 4.0 is built from scratch using the T2 SDE and no longer features native Slackware 12 compatibility in order to reduce the size and include newer package versions than those found in 3. To compensate for this, an optional "compatibility collection" of packages was created that restores some of the lost compatibility.
Puppy 4.2.0–4.3.0 feature changes to the user interface and backend, upgraded packages, language and character support, new in-house software and optimizations, while still keeping the ISO image size under 100 MB.
Puppy 5.0.0–5.7.0 are based on a project called Woof, which is designed to assemble a Puppy Linux distribution from the packages of other Linux distributions. Woof includes some binaries and software derived from Ubuntu, Debian, Slackware, T2 SDE, or Arch repositories. Puppy 5 came with a stripped-down version of the Midori browser to be used for reading help files and a choice of web browsers to be installed, including Chromium, Firefox, SeaMonkey Internet Suite, Iron and Opera.
Puppy 6.0.5 is built from Ubuntu 14.04 "Trusty Tahr" packages, has binary compatibility with Ubuntu 14.04 and access to the Ubuntu package repositories. Tahrpup is built from the woof-CE build system, forked from Barry Kauler's Woof late last year after he announced his retirement from Puppy development. It is built from the latest testing branch, incorporates all the latest woof-CE features and is released in PAE and noPAE ISOs, with the option to switch kernels.
Puppy 6.3.2 is built with Slackware packages instead of Ubuntu 14.04 "Trusty Tahr" packages but is very similar to its predecessor.
Puppy 7.5 is built from Ubuntu 16.04 "Xenial Xerus" packages, which has binary compatibility with Ubuntu 16.04 and access to the Ubuntu package repositories. XenialPup is built from the woof-CE build system, forked from Barry Kauler's Woof. It is built from the latest testing branch, incorporates all the latest woof-CE features and is released in PAE and noPAE ISOs, with the option to switch kernels. It has a new UI, a new kernel update for greater hardware compatibility, redesigned Puppy Package Manager, some bugfixes and base packages inclusion into the woof structure.
Puppy 8.0 is built from Ubuntu "Bionic Beaver" 18.04.2 packages, has binary compatibility with Ubuntu 18.04.2 and access to the Ubuntu package repositories. BionicPup is built from the woof-CE build system, forked from Barry Kauler's Woof. It is built from the latest testing branch and incorporates all the latest woof-CE features.
Puppy 8.2.1 is built from Raspberry Pi OS packages, has full support for the Raspberry Pi 0 to the Raspberry Pi 4, and is relatively similar to its predecessor. Raspberry Pi OS is based on Debian, meaning that Puppy Linux still has Debian/Ubuntu support. This version of Puppy Linux is not compatible with personal computers, like desktops or laptops.
Puppy 9.5 is built from Ubuntu "Focal Fossa" 20.04 (64-bit) packages, has binary compatibility with Ubuntu 20.04 and access to the Ubuntu repositories. FossaPup64 comes with JWM as the default window manager. Also, at this release, Puppy Linux's Ubuntu-based release has dropped support for 32-bit (x86) computers, due to Ubuntu dropping 32-bit support at this release before reverting its decision and supporting only select 32-bit libraries. However, its Debian-based and mixed releases (i.e, BookwormPup32 and NoblePup32, respectively) continue to support 32-bit systems.

## Features

Puppy Linux is a complete operating system bundled with a collection of applications suited to general use tasks. It can be used as a rescue disk, a demonstration system that leaves the previous installation unaltered, as an accommodation for a system with a blank or missing hard drive, or for using modern software on legacy computers.
Puppy's compact size allows it to boot from any media that the computer can support. It can function as a live USB for flash devices or other USB mediums, a CD, an internal hard disk drive, an SD card, a Zip drive or LS-120/240 SuperDisk, through PXE, and through a floppy boot disk that chainloads the data from other storage media. It has also been ported to ARM and can run on a single-board computer such as the Raspberry Pi.
Puppy Linux features built-in tools which can be used to create bootable USB drives, create new Puppy CDs, or remaster a new live CD with different packages. It also uses a sophisticated write-caching system with the purpose of extending the life of live USB flash drives.
Puppy Linux includes the ability to use a normal persistent updating environment on a write-once multisession CD/DVD that does not require a rewritable disc; this is a unique feature that sets it apart from other Linux distributions. While other distributions offer live CD versions of their operating systems, none offer a similar feature.
Puppy's bootloader does not mount hard drives or connect to the network automatically. This ensures that a bug or even unknowingly incompatible software won't corrupt the contents of such devices.
Puppy Linux offers a session save on shutdown. Since Puppy Linux fundamentally runs in RAM, any files and configurations made or changed in a session would disappear otherwise. This feature enables the user to either save the contents to a writable storage medium, or write the file system to the same CD containing Puppy, if "multisession" was used to create the booted CD and if the disc drive supports burning. This applies to CD-Rs, CD-RWs, and DVDs.
It is also possible to save all files to an external hard drive, USB stick, or even a floppy disk instead of the root file system. Puppy can also be installed to a hard disk.

## User interface

The default window manager in most Puppy releases is JWM.
Packages of the IceWM desktop, Fluxbox and Enlightenment are also available via Puppy's PetGet package (application) management system (see below). Some derivative distributions, called puplets, come with default window managers other than JWM.
When the operating system boots, everything in the Puppy package uncompresses into a RAM area, the "ramdisk". The PC needs to have at least 128 MB of RAM (with no more than 8 MB shared video) for all of Puppy to load into the ramdisk. However, it is possible for it to run on a PC with only about 48 MB of RAM because part of the system can be kept on the hard drive, or less effectively, left on the CD.
Puppy is fairly full-featured for a system that runs entirely in a ramdisk, when booted as Live system or from a "frugal" installation. However, Puppy also supports the "full" installation mode, which enables Puppy to run from a hard drive partition, without a ramdisk. Applications were chosen that met various constraints, size in particular. Because one of the aims of the distribution is to be extremely easy to set up, there are many wizards that guide the user through a wide variety of common tasks.

## Package and distribution management

Puppy Linux's package manager, Puppy Package Manager, installs packages in PET (Puppy Enhanced Tarball) format by default but it also accepts packages from other distros (such as .deb, .rpm, .txz, and .tgz packages) or by using third-party tools to convert packages from other distros to PET packages. Puppy Package Manager can also trim the software bloat of a package to reduce the disk space used.

## Building the distribution

On earlier releases of Puppy Linux, Puppy Unleashed was used to create Puppy ISO images. It consists of more than 500 packages that are put together according to the user's needs. However, on later versions starting with Puppy Linux version 5.0, it was replaced by Woof. It is an advanced tool for creating Puppy installations. It requires an Internet connection and some knowledge of Linux to use. It is able to download the binary source packages from another Linux distribution and process them into Puppy Linux packages by just defining the name of that Linux distro. It is equipped with a simpler version control named Bones on earlier releases but on later versions of woof, Fossil version control is used.
Puppy also comes with a remastering tool that takes a "snapshot" of the current system and lets the user create a live CD from it, and an additional remastering tool that is able to remove installed components.
Puppy Linux uses the T2 SDE build scripts to build the base binary packages.

## Official variants

Because of the relative ease with which the Woof tool and the remaster tool can be used to build variants of Puppy Linux, there are many variants available. Variants of Puppy Linux are known as puplets.
After Barry Kauler reduced his involvement with the Puppy Project, he designed two new distributions within the same Puppy Linux family, Quirky and Wary.
Quirky – An embedded, less-stable distro with all files contained in an initramfs built into the kernel. It has simple module loading management but fewer drivers are included. It is used for experimental purposes.
Racy – A variant of puppy optimized for newer PCs.
Wary – A Puppy variant targeted at users with old hardware. It uses an older Linux kernel, which has long-term support and the newest applications.
Easy – A puppy variant in which the init script is completely rewritten and which uses originally developed application containers aside the conventional package management.

## Reception

DistroWatch reviewer Rober Storey concluded about Puppy 5.2.5 in April 2011: "A lot of people like Puppy — it's in the top 10 of the DistroWatch page-hit ranking. I enjoy Puppy too, and it's what I run exclusively on my netbook. Maybe the only thing wrong with Puppy is that users' expectations tend to exceed the developer's intentions."
In a detailed review of Puppy Linux in May 2011 Howard Fosdick of OS News addressed the fact that Puppy Linux the user runs as the root UID, "In theory this could be a problem — but in practice it presents no downside. I've never heard of a single Puppy user suffering a problem due to this." Fosdick concluded "I like Puppy because it's the lightest Linux distro I've found that is still suitable for end users. Install it on an old P-III or P-IV computer and your family or friends will use it just as effectively for common tasks as any expensive new machine."
In December 2011 Jesse Smith, writing in DistroWatch, reviewed Puppy 5.3.0 Slacko Puppy. He praised its simplicity, flexibility and clear explanations, while noting the limitations of running as root. He concluded "I would also like to see an option added during the boot process which would give the user the choice of running in unprivileged mode as opposed to running as root. Always being the administrator has its advantages for convenience, but it means that the user is always one careless click away from deleting their files and one exploit away from a compromised operating system. As a live CD it's hard to beat Puppy Linux for both performance and functional software. It has minimal hardware requirements and is very flexible. It's a great distro as long as you don't push it too far out of its niche."
In December 2011 Howard Fosdick reviewed the versions of Puppy Linux then available. He concluded, "Puppy's diversity and flexibility make it a great community-driven system for computer enthusiasts, hobbyists, and tinkerers. They also make for a somewhat disorderly world. You might have to read a bit to figure out which Puppy release or Puplet is for you. Puppy's online documentation is extensive but can be confusing. It's not always clear which docs pertain to which releases. Most users rely on the active, friendly forum for support." He also noted "Those of us who enjoy computers sometimes forget that many view them with disdain. What's wrong with it now? Why do I have to buy a new one every four years? Why on earth do they change the interface in every release? Can't it just work? Puppy is a great solution for these folks. It's up-to-date, free, and easy to use. And now, it supports free applications from the Ubuntu, Slackware, or Puppy repositories. Now that's user-friendly."
An April 2020 review of Bionic 8.0 by Igor Ljubuncic in Dedoimedo concluded, "Puppy Linux delivered on its happy message, and even exceeded my expectations. Now, I've always been a fan, and rarely had anything bad to say, so a positive result was kind of warranted. What really amazed me was not that this is a lean and fast little distro - it's the fact it manages to keep its relevance despite the obvious lethargy in the Linux desktop space. You may say, well, why bother - but if you have older hardware or travel a lot, Puppy gives you your own, complete work session that will boot and run pretty much anywhere, with tons of goodies and excellent configuration tools."