It was created in 2004 under the name Polypaudio but was renamed in 2006 to PulseAudio.
PulseAudio operational flow chart
PulseAudio is a daemon that does mixing in software.
In broad terms ALSA is a kernel subsystem that provides the sound hardware driver, and PulseAudio is the interface engine between Applications and ALSA.
PulseAudio acts as a sound server, where a background process accepting sound input from one or more sources (processes, capture devices, etc.) is created. The background process then redirects these sound sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).
One of the goals of PulseAudio is to reroute all sound streams through it, including those from processes that attempt to directly access the hardware (like legacy OSS applications). PulseAudio achieves this by providing adapters to applications using other audio systems, like aRts and ESD.
In a typical installation scenario under Linux, the user configures ALSA to use a virtual device provided by PulseAudio. Thus, applications using ALSA will output sound to PulseAudio, which then uses ALSA itself to access the real sound card. PulseAudio also provides its own native interface to applications that want to support PulseAudio directly, as well as a legacy interface for ESD applications, making it suitable as a drop-in replacement for ESD.
For OSS applications, PulseAudio provides the padsp utility, which replaces device files such as /dev/dsp, tricking the applications into believing that they have exclusive control over the sound card. In reality, their output is rerouted through PulseAudio.
libcanberra is an abstract API for desktop event sounds and a total replacement for the "PulseAudio sample cache API":
A zero-copy memory architecture for processor resource efficiency.
Ability to discover other computers using PulseAudio on the local network and play sound through their speakers directly.
Ability to change which output device applications use to play sound through while they are playing sound (Applications do not need to support this, PulseAudio is capable of doing this without applications detecting that it has happened)
A command-line interface with scripting capabilities.
A sound daemon with command line reconfiguration capabilities.
Built-in sample conversion and resampling capabilities.
Tizen, an open-source mobile operating system, which is a project of the Linux Foundation and is governed by a Technical Steering Group (TSG) composed of Intel and Samsung, uses PulseAudio.
Problems during adoption phase
The PortAudio API was incompatible with PulseAudio's design and needed to be modified. Almost all packages using OSS and many of the packages using ALSA needed to be modified to support PulseAudio. Further development of the glitch-free audio feature required a complete rewrite of the PulseAudio core, and also changes to the ALSA API and internals were needed.
When first adopted by distributions, PulseAudio developer Lennart Poettering (also the creator of systemd) described it as "the software that currently breaks your audio". Poettering later claimed that "Ubuntu didn't exactly do a stellar job. They didn't do their homework" in adopting PulseAudio for Ubuntu "Hardy Heron" (8.04), a problem that was improved with subsequent Ubuntu releases. However, in October 2009, Poettering reported that he was still not happy with Ubuntu's integration of PulseAudio.
Interaction with old sound components by particular software: Certain programs, such as Adobe Flash for Linux, caused instability in PulseAudio. Newer implementations of Flash plugins do not require the conflicting elements, and as a result Flash and PulseAudio are now compatible.
Early management of buffer over/underruns: Earlier versions of PulseAudio sometimes started to distort the processed audio due to incorrect handling of buffer over/underruns.
Other sound servers
JACK is a sound server that provides real-time, low latency (i.e. 5 milliseconds or less) audio performance and, since JACK2, supports efficient load balancing by utilizing symmetric multiprocessing; that is, the load of all audio clients can be distributed among several processors. JACK is the preferred sound server for professional audio applications such as Ardour, ReZound, and LinuxSampler; multiple free audio-production distributions use it as the default audio server.
It is possible for JACK and PulseAudio to coexist: while JACK is running, PulseAudio can automatically connect itself as a JACK client, allowing PulseAudio clients to make and record sound at the same time as JACK clients.
PipeWire is an audio and video server that "aims to support the usecases currently handled by both PulseAudio and Jack".
General audio infrastructures
Before JACK and PulseAudio, sound on these systems was managed by multi-purpose integrated audio solutions. These solutions do not fully cover the mixing and sound streaming process, but they are still used by JACK and PulseAudio to send the final audio stream to the sound card.
ALSA provides a software mixer called dmix, which was developed prior to PulseAudio. This is available on almost all Linux distributions and is a simpler PCM audio mixing solution. It does not provide the advanced features (such as timer-based scheduling and network audio) of PulseAudio. On the other hand, ALSA offers, when combined with corresponding sound cards and software, low latencies.
OSS was the original sound system used in Linux and other Unix operating systems, but was deprecated after the 2.5 Linux kernel. Proprietary development was continued by 4Front Technologies, who in July 2007 released sources for OSS under CDDL for OpenSolaris and under GPL for Linux. The modern implementation, Open Sound System v4, provides software mixing, resampling, and changing of the volume on a per-application basis; in contrast to PulseAudio, these features are implemented within the kernel. PulseAudio support in OpenIndiana and other illumos distributions relies on the in-kernel OSS implementation ("Boomer").
^An introduction to Linux sound systems and APIs, Linux.com, 9 August 2004, archived from the original on 19 October 2014, retrieved 2013, OSS is available not only for Linux but also for BSD OSes and other Unixes. That may be its only advantage, because this system is not very powerful and was officially replaced by ALSA in 2.5 kernels...