A lot of technical terms get thrown around in DistroWatch articles and in the comments following our weekly news letter. In an effort to make the world of Linux, BSD and open source less confusing, especially to newcomers, we have compiled a glossary of commonly used terms. We present them in alphabetical order to make definitions easier to find.
- 1 ACPI
- 2 Alpha (beta, release candidate)
- 3 Architecture (amd64, ARM, i386, i486, i586, i686, x86, x86_64)
- 4 BSD
- 5 chroot
- 6 Codec (media codec)
- 7 CPU (processor)
- 8 Desktop environment
- 9 DHCP (Dynamic Host Configuration Protocol)
- 10 Distribution (distro)
- 11 Driver (device driver)
- 12 ELF (file type)
- 13 Encryption
- 14 File system
- 15 Firewall (packet filter)
- 16 Free software
- 17 FUSE (File system in userspace)
- 18 GNU (GNU/Linux)
- 19 GPL (General Public License)
- 20 Hash (checksum, hash function, MD5, SHA1, SHA256, SHA512)
- 21 Hypervisor (virtual machine)
- 22 Init (systemd, SysV)
- 23 Image file (IMG, ISO)
- 24 Kernel
- 25 Linux
- 26 Open source
- 27 Operating system (OS)
- 28 Out of the box (OOTB)
- 29 Package (package manager) (dependency)
- 30 Partition (partition manager)
- 31 Personal package archive (PPA)
- 32 Physical Address Extension (PAE)
- 33 Portable application formats (AppImage, Flatpak, Snap)
- 34 POSIX
- 35 Repository (package repository)
- 36 Rolling release (verse fixed release)
- 37 Root (root file system) (root user)
- 38 Shell (command line)
- 39 SMP
- 40 Source-based distribution
- 41 Swap (swap area, swap space)
- 42 Tarball (file type)
- 43 Terminal (console, virtual terminal)
- 44 UEFI (Secure Boot)
- 45 Unix
- 46 Unix Philosophy
- 47 Upstream (downstream)
- 48 Userland
- 49 Wayland and Mir
- 50 Window manager
- 51 X (X11) (X-Windows)
- 52 Zombie process
ACPI stands for Advanced Configuration and Power Interface and refers to a standard method operating systems can use to communicate with the computer's hardware with regards to power management. Put in simple terms, ACPI allows the operating system to set power states and to monitor information with regards to electrical usage. ACPI is what allows the operating system to enter a sleep or hibernation state, for example.
In the past there have been a number of implementation problems with ACPI which is why some operating systems offer users a chance to boot without ACPI functions enabled. In some cases disabling ACPI will provide a more stable operating system, though at the cost of losing electricity-saving features.
Alpha (beta, release candidate)
The terms alpha, beta and release candidate (rc) are labels applied to development versions of software. Though different projects use the terms in slightly different ways, usually an alpha release is a very early preview of features being worked on. An alpha release generally is not feature complete and not considered to be stable. Alpha releases give people a chance to preview new features in progress and provide feedback to the developers.
A beta release usually marks a point where software has become feature complete, but the developers believe there are still bugs left to fix. The software being showcased is close to being completed, but there are still some aspects that require polish.
A product that is given the title "release candidate" is thought to be finished. The features are all in place and all serious known bugs have been fixed. A release candidate offers users one last chance to check for (and report) bugs before the product's final release. Usually a release candidate is identical, in everything but its name, to the final product the project ships.
Any software that ships with an alpha, beta or release candidate label is designed to be used by testers and early adopters who do not mind experiencing software crashes or unexpected behaviour. People who wish to run stable, reliable software should not run these releases, and instead wait for the final release.
Architecture (amd64, ARM, i386, i486, i586, i686, x86, x86_64)
The term architecture refers to the inner workings of a computer's CPU. Each type of CPU (the brain of the computer) can handle different types of instructions or perform different tasks more efficiently.
CPUs contain small areas of storage space where information is processed and these areas are called registers. More modern CPUs tend to have more and larger registers and can therefore work on more information at a time.
In the open source community we generally hear about two different families of architectures: x86 and ARM. ARM processors are common in mobile devices and small computers like the Raspberry Pi. ARM CPUs are typically used where energy efficiency is important. The x86 family of processors is used in most desktop and laptop computers.
The x86 architecture has had a long life and has gone through many generations. For this reason, the x86 family is often further divided into sub-categories. Most often people divide the x86 family into 32-bit and 64-bit. A 32-bit bit processor has CPU registers which hold 32 pieces of information, called bits. The newer, 64-bit processors have registers twice as large. The 64-bit branch of the x86 family of processors is sometimes referred to as either x86_64 or AMD64.
The 32-bit branch of the x86 family tree is further divided into sub-categories or "generations". The earliest generation of the 32-bit x86 processor was called i386, with the following generations being i486, i586 and i686. Some distributions that support 32-bit x86 processors will target a specific generation, like i586 or i686.
It is important to note that in the x86 family of processors, newer generations of the architecture can run code built for older generations (they are backward compatible), but the reverse is not true. This means a 64-bit AMD64 processor can run code built for old 32-bit i585 processors. However, an old i386 processor will not be able to run programs built to run on i686 processors.
The term BSD is short-hand for "Berkeley Software Distribution". BSD is a Unix operating system that was developed by the University of California, Berkeley. These days the term BSD usually refers to a family of related open source operating systems, specifically FreeBSD, NetBSD, OpenBSD and their derivatives.
The BSD operating systems are sometimes viewed as cousins to GNU/Linux distributions and share a lot of the same tools and general design.
A chroot environment (sometimes called a chroot jail) is an environment where a directory has been set up to act as the root directory for a process (or processes). A chroot is usually used for one of two reasons: we may want to isolate a process so it cannot see parts of our operating system outside of the local directory. Or we may wish to run a command in a directory or partition in such as way that the command treats the specified directory as the root directory.
Often a chroot environment is used from a live disc when recovering or repairing another operating system. The chroot allows us to dive into a mounted partition and act as though the partition we are navigating is the top-level file system, rather than a mounted extension.
While chroot environments can be used to provide a small degree of isolation to processes, it is not a good idea to use a chroot as a method of security. Misbehaving processes can break out of chroot environments, making a chroot a poor substitute for a jail, virtual machine or sandbox. A chroot should be used when the processes we are running need to act as though they are in the root directory, but will not maliciously try to escape from the chroot environment.
Codec (media codec)
A media codec is a bit of software that is used to convert the data in a media file into audio and/or video which can be played by the computer. Codecs are also used to take audio and video that is being recorded and encode it into a file.
A media codec might be thought of as a translator which takes the raw 1s and 0s stored in a media file and decodes it into something we can display on our screen or play through our speakers.
Media players (such as VLC, MPlayer, Rhythmbox and Totem) use codecs to play our media files. Without codecs, it is not possible for us to play our MP3 audio files or our videos.
Different media codecs have different benefits. For example, some codecs are designed to compress data to make transferring video over the Internet more efficient. Others might try to maintain all of the available audio data to give the most authentic playback possible.
Some codecs can be used without a license or patent. These codecs are considered to be "free" in the sense they may be redistributed legally and may be included in open source operating systems. Other codecs may be "encumbered" and, in some countries, may not be distributed without a license. This is why some Linux distributions such as Fedora and openSUSE will not play many video or audio files by default. With both distributions, to play common media formats, it is necessary to locate and download codec packages from a third-party repository.
The term CPU is an abbreviation for central processing unit. A computer's CPU is essentially its brain, the place where information and instructions are processed. A CPU is where a program is run. When a program is performing a lot of instructions it uses up more of a CPU's processing capability. We say "The program is using a high amount of CPU," or "The program's CPU usage is high."
A desktop environment is a graphical workspace where a computer user can interact with multiple applications, usually by using a mouse and keyboard (or a touch screen). A desktop environment typically includes a menu where programs can be launched and a panel where windows can be selected.
From a technical point of view, a desktop environment consists of a window manager and various programs that assist the user in launching applications and switching between them. Popular desktop environments include Cinnamon, GNOME, KDE, MATE and Xfce.
On a GNU/Linux distribution it is possible to install multiple desktop environments and switch between different desktops each time the user logs in. This gives GNU/Linux distributions more flexibility when it comes to how users interact with the desktop when compared against proprietary operating systems.
DHCP (Dynamic Host Configuration Protocol)
DHCP is a method by which a computer can automatically receive and use networking configuration information from another device on a network. Usually this takes the form of a desktop computer, phone or laptop requesting networking information (such as an IP address) from a local router. The router provides the requesting computer with an IP address and Internet gateway information.
DHCP is used by most Linux distributions as a way to automatically set up a network or Internet connection. When DHCP services are not available, then the user must manually supply their operating system with an IP address, netmask and Internet gateway. DHCP is usually enabled by default and works transparently, requiring no work on the part of the user.
A distribution (or distro, for short), in the context of this website, refers to a specific implementation of a GNU/Linux operating system. A project which ships an operating system that includes the Linux kernel is said to be a Linux distribution.
Since most Linux distributions also include the GNU userland software, many people call these operating systems GNU/Linux distributions.
It is perhaps easiest to think of a distribution as an operating system, like OS X or Windows, which can be run on a computer. A distribution typically provides an installer, a package manager and usually a desktop environment. Most projects which provide GNU/Linux distributions also offer their users documentation, support forums and a way to report problems.
Popular distributions can be found on our Major Distributions page.
Driver (device driver)
A driver (or, more properly, a device driver) is a piece of software that is usually implemented as part of the kernel. It is the job of device drivers to talk to the computer's hardware and make it work. For a computer's video card or printer to work properly the kernel needs to have a device driver which knows how to communicate with that specific piece of hardware.
While most companies who sell hardware also make sure their devices ship with drivers that work with Windows and OS X, most hardware companies do not supply device drivers for Linux or BSD. This means open source developers often need to create drivers without official help.
Despite this setback, open source operating systems tend to have support for many pieces of hardware and Linux in particular includes support for most modern devices.
ELF (file type)
The term ELF stands for Executable and Linkable Format. It is a commonly used file format for executable files and shared libraries on GNU/Linux distributions and some other Unix and Unix-like operating systems. When you check the properties of a file and find it is listed as an ELF, that usually means the file is intended to be run as a program, or a part of a program, in the case of shared libraries.
Encryption is the process of taking data (sometimes called plain text) and scrambling it so that the information cannot be read. In theory, encrypted data can only be unscrambled back into its original form by a person who holds the proper key or "cipher". Usually this key takes the form of a password or a special file only an authorized person can access.
Generally speaking, there are two types of encryption. In one form, information is encrypted using the same key that is used to unlock it. This is useful for someone who is creating encrypted backups of their files, for example. Since they are the only person who should ever need to access the files, protecting the encrypted information with a password (or a key only they have) is a suitable arrangement. However, for communication between two people it is not advisable for both people to know the same key, partly because this would require one person to send the other person their key and it could be intercepted. For this reason, communication between two or more people is usually achieved using public key/private key encryption. In this scenario, each person sends the other a "public" key which can be used to encrypt messages, but not unencrypt them. Messages are encrypted with the public key and only the person who holds the private key can unlock the encryption. This makes public/private key encryption ideal for e-mail communication.
Encryption is often confused with hashes. In both cases information is transformed into unrecognizable and seemingly random data. When data is encrypted, someone who holds the proper key can unlock the encrypted information and read it. With hashes, the hashed data cannot be used to get back the original information. In other words, a hash is a one-way function while encryption can be applied to information and then undone to get the original information back.
A file system is a method of storing and organizing information on disk, such as a computer's internal hard disk, a USB thumb drive or a DVD. It is a file system's job to organize files on your hard disk and most file systems will take special steps to insure data does not become corrupted when a computer suddenly crashes.
Linux supports a wide range of file systems and different file systems have various strengths and weaknesses. Some file systems are designed to be especially fast, others specialize in storing massive amounts of data while others may try to be more reliable than others. In recent years, advanced file systems that work across multiple hard drives, store snapshots (or copies) of files automatically and that can store very large amounts of data have become popular. These advanced file systems include Btrfs (which is exclusive to Linux), HAMMER (which is currently exclusive to DragonFly BSD) and ZFS (which works across most open source operating systems).
On Linux the default file system is usually ext4, though many others are supported. In the BSD family of operating systems UFS is usually the default file system.
Firewall (packet filter)
A firewall or a packet filter is a device or program which blocks or redirects network traffic. A firewall is typically used to prevent network connections from unknown parties from accessing network services running on the local network. A firewall may also block locally installed malware from communicating with the outside world or slow down remote attackers trying to gain access to a computer.
A firewall is often one of the first lines of defence put in place to secure a computer, especially a computer which will be accessed over the network.
Some common firewall technologies include iptables and nftables on Linux and PF on BSD.
Free software is a special kind of open source software. Free software refers to software that has been licensed in such a way as to encourage users to be able to view, modify and redistribute the source code of programs they run on their computers.
The Free Software Foundation, the primary advocate of free software, states on their website, "Free software developers guarantee everyone equal rights to their programs; any user can study the source code, modify it, and share the program. By contrast, most software carries fine print that denies users these basic rights, leaving them susceptible to the whims of its owners and vulnerable to surveillance."
There is a common misconception that free software refers to software that is available at no monetary cost. However, this is not the case. While many free software programs are available at no charge, the term "free" in this case refers to the freedom to modify and redistribute software. In other words, "free software" is a similar concept to "freedom of speech".
FUSE (File system in userspace)
FUSE is a method by which non-privileged users (users other than root) can access and work with file systems in userland. When FUSE modules are installed on an operating system, users can attach to supported file system types without requiring administrator access. While FUSE modules can be created for any type of file system, FUSE is most commonly used to provide a file system interface to data which is typically not treated as a part of the local file system.
For example, there are FUSE modules that, when installed, allow the local user to browse SquashFS archives or remote FTP servers as if they were part of the local file system hierarchy. This makes accessing, reading and sometimes even editing remote archives or compressed files work (from the user's point of view) just as if the accessed files were part of the local directory tree.
FUSE is often used to provide basic access to foreign file systems. For example, Linux users might access ZFS file systems through a FUSE module rather than install the ZFS kernel module. FUSE can also be used to treat files on another machine, accessed over secure shell, as though the files were available on the local hard drive.
There are more exotic FUSE modules which allow the user to mount e-mail accounts or website forums and treat the contents as though they were just files and directories in the local file system.
GNU is a collection of software which makes up an operating system that is licensed as free software. GNU, which is sometimes called the GNU Operating System, was founded by Richard M Stallman and is sponsored by the Free Software Foundation.
In the 1980s, GNU formed a mostly complete Unix-like operating system. Most of the pieces of the operating system were in place and functioning, with the notable exception of a kernel. In the early 1990s, Linus Torvalds created the Linux kernel. Developers from around the world began to use the GNU Operating System with the Linux kernel. The combination of the two (GNU and Linux) is called GNU/Linux or a GNU/Linux distribution.
GPL (General Public License)
The General Public License (usually referred to simply as the GPL), is one of the more commonly used free software licenses. The GPL is designed to protect the rights of people who use software and who may also wish to modify and redistribute their software. Most components of GNU/Linux distributions are licensed under the GPL, which means GNU/Linux distributions can usually be modified and shared with others with few restrictions.
More information on this important software license can be found on the GNU website.
Hash (checksum, hash function, MD5, SHA1, SHA256, SHA512)
A hash or checksum is a method for taking data and creating a unique fingerprint for that data. Hashing is often used to verify the contents of a file as two identical copies of file will have the same hash. Hashing can also be used to securely store passwords as the hash will not resemble the original password and it is not easy to determine a password based on its hash.
In the open source community it is common practice for projects to publish checksums (or hashes) of the ISO files they distribute. This allows a person who has downloaded an ISO file to verify the file's checksum to confirm the file they have downloaded has not become corrupted during the download. Common hash functions include MD5, SHA1, SHA256 and SHA512. (SHA1 is currently considered to be less secure than the others.)
Common command line programs for finding the checksums of a file on GNU/Linux are md5sum, sha1sum, sha256sum and sha512sum. On BSD systems, the "sum" part of the program name is dropped so the BSD equivalents are md5, sha1, sha256 and sha512.
It is important to note that hashes are often confused with encryption. While encrypted data is information that has been "scrambled" and can be "unscrambled" again into its original content, a hash is a one-way function. This means that a person who has a hash of a file cannot (under normal circumstances) re-create the original file based on its hash.
Hypervisor (virtual machine)
In computing, a virtual machine is essentially a computer which is emulated in software. A virtual machine is a program which acts as though it were a physical computer and can run operating systems as though they were running on a real, physical computer. Virtual machines allow developers, system administrators and end-users to run multiple operating systems on the same computer with each operating system isolated from the other.
Virtual machines are ideal for testing operating systems and running programs (or operating systems) in isolation from each other. This allows system administrators to test new configurations or run more operating systems on fewer physical computers, reducing costs. Since virtual machines are software, it is relatively easy to migrate a virtual machine from one physical computer to another without changing the configuration of the operating system running inside the virtual machine.
A hypervisor is a program which monitors, creates, destroys or otherwise controls virtual machines. The hypervisor program usually runs on the "host" computer, where the virtual machines are stored. The hypervisor controls "guest" computers, the virtual machines running on the "host" computer(s).
Init (systemd, SysV)
On GNU/Linux and BSD systems, init is the name given to the first program the kernel runs when the operating system boots. Traditionally, the init program has had few responsibilities, but they are very important. The init program is responsible for bringing the rest of the operating system on-line. This can be done by passing the job off to another program or script or reading a configuration file and loading programs specified there. How init kick-starts the rest of userland varies by implementation, but that is its first duty.
The init software also collects zombie processes if the zombie's parent process is no longer running.
There are a number of implementations of init, each with their own strengths. Some require very few resources, some aim to be flexible, others may focus on speed or ease of configuration. For many years the SysV implementation of init was the most widely used by GNU/Linux distributions. In more recent years some alternative init implementations have been put forward. The Ubuntu and Fedora distributions used an init called Upstart for a time. More recently, the systemd implementation has gained wide spread usage and has been adopted by most GNU/Linux distributions.
The adoption of systemd caused a lot of controversy in the GNU/Linux community, partly because the software works quite a bit differently than the older SysV implementation and partly because systemd was adopted quite quickly by most distributions without much transition period. There has been a lot of debate about the merits and flaws of systemd which is outside the scope of this document.
Image file (IMG, ISO)
An image file, in this context, refers to a file which contains an exact copy of a hard drive, partition, thumb drive or optical disk. An image file can be thought of as a snapshot or exact "image" of data stored in another location. Having this data in a file makes it portable and an image file is often used to transfer operating systems from one person or place to another.
Files whose names end with ".iso" are image files which can be written to an optical disc such as a DVD. Some .iso files can also be written to other devices too. Typically, a file that ends with ".img" is a disk image and can be written to a USB thumb drive. Most GNU/Linux distributions and flavours of BSD are distributed as ISO files which can then be "burned" onto a CD or DVD using a special program.
An operating system is made up of many individual parts. One of the more important elements of an operating system is the kernel. The kernel's primary task is to communicate with the computer's hardware. The kernel allows applications to talk to or access a computer's hardware, like the mouse and keyboard. The kernel enables programs to write files to a computer's hard drive and read the files stores there. On modern operating systems the kernel makes it possible to run multiple programs at the same time.
It might help to think of the kernel as the core or lowest level of the operating system. It is the part which holds control over all other aspects of the operating system.
On GNU/Linux distributions and on Android devices, Linux is the name of the kernel. The Linux kernel was originally created by Linus Torvalds and is currently worked on by many developers and companies around the world.
Because of the importance of the role of the Linux kernel in GNU/Linux distributions, such distributions are often referred to under the simplified term "Linux distributions".
These days the Linux kernel is used not only in GNU/Linux distributions and Android devices, but also in embedded devices and appliances all around the world. Linux is also run on most of the world's fastest super computers. Linux is a complex and flexible kernel which makes it useful in a wide range of computing environments.
Open source is a term which is usually used to indicate that people who run a program can see the program's source code, the building blocks which are used to make the program work. Software licensed under an open source license can usually be modified and redistributed by anyone who has acquired a copy of the software.
There are many types of open source licenses, with some being very liberal in what people can do while others may contain several restrictions which put limits on users and developers. As the Open Source Initiative's website states, "Generally, open source software is software that can be freely accessed, used, changed, and shared (in modified or unmodified form) by anyone. Open source software is made by many people, and distributed under licenses that comply with the The Open Source Definition."
Open source software is often regarded as beneficial to users as anyone with the proper skills can fix or improve an open source program. In the open source community, such improvements are usually shared quickly and, as a result, all users of the software benefit. This is in contrast to proprietary software licenses where usually only one person or company is allowed to fix a program's bugs or improve the software.
Since there is a lot of overlap between the concepts of open source software and free software, the two are often combined under the blanket term "free and open source software" or simply "FOSS".
Operating system (OS)
An operating system is a collection of software which works together to make a computer or mobile device work. The operating system's job is to communicate with the computer's hardware, receive input (in the form of typing, voice commands and mouse movement) from the user and provide a way for applications to display output back to the user.
An operating system typically consists of a kernel, some simple applications such as a text editor, a file manager, a method for installing/removing applications and quite often a desktop environment.
Some popular examples of operating systems include Windows, OS X, Android, GNU/Linux distributions and the BSDs.
Out of the box (OOTB)
The term "out of the box" is used to indicate a feature or behaviour is the default on a new product or operating system. The term is often used in reviews to differentiate between features were are present by default as opposed to features which may be installed or configured later.
For instance, if a distribution supports playing media files with its default settings, without any work on the part of the user then we can say "The distribution supports playing media out of the box." Or if printing support is not available by default, we might say, "This operating system is not able to print out of the box."
Package (package manager) (dependency)
A software package (or simply "package") is a piece of software, such as an application, which can be installed on your computer. For example, your web browser is an application which can be distributed as a single package. Chances are your music player is also delivered to your computer as a package.
On GNU/Linux and BSD systems, packages are usually found, installed, upgraded and removed by an application called a package manager. Most Linux distributions have both desktop package managers and command line package managers. These tools can be used to search through a distribution's collection of packages, download and install the desired software. On Linux systems the package manager is also responsible for installing any security updates provided by the distribution.
Packages built for one GNU/Linux distribution usually will not work on another distribution. This is because each distribution uses different versions of software and may create different types of application packages.
Most packages will rely on other pieces of software and these additional pieces of software are called dependencies. In order to make packages small and easy to maintain, most distributions supply dependencies as separate packages which are automatically located and installed by the package manager.
Partition (partition manager)
A hard disk, where our files are stored, can be separated into separate sections called partitions. Each partition can hold its own file system. This helps to keep different types of data separated into different areas of the storage disk.
On GNU/Linux and BSD systems, partitions are often used to separate the operating system's files from a user's data files. The operating system's files are typically stored on what is called the root file system (often represented by the slash symbol "/") while the users' files are stored in the home directory (represented by "/home").
Disk partitions can be created, destroyed or resized by a program called a partition manager. Some popular partition managers include the GParted desktop partition manager and the cfdisk command line partition manager.
Personal package archive (PPA)
A personal package archive (PPA) is a small software repository that is not supported by a distribution. Generally, a PPA is created and maintained by a single developer (or small development team) that wants to provide additional packages for a distribution's users, but for one reason or another cannot get their packages included in the distribution's official repositories.
PPAs are often used by application developers to provide the latest builds of a package or newer versions of packages already in a distribution's repositories. A PPA might also offer kernels with alternative configurations or software that uses a license that prevents it from being included in a distribution's main repositories.
The term PPA often refers to specifically personal software repositories designed to work with Ubuntu and Ubuntu's many community editions. The concept is not unique to Ubuntu though as most distributions support some form of third-party software repositories. openSUSE has community repositories, for example, the Fedora distribution has Copr repositories, Sabayon has the Sabayon Community Repositories and so on.
Physical Address Extension (PAE)
By default, 32-bit operating systems running on the x86 CPU architecture can not access more than approximately 4GB of the computer's memory. The PAE feature enables 32-bit systems to access additional memory space (generally up to about 64GB on Linux), when the CPU supports the feature.
Th PAE feature provides applications with access to more memory when the operating system would normally be limited to 4GB due to its 32-bit nature. Operating systems which are built to run in 64-bit mode do not face the 4GB memory limitation.
Portable application formats (AppImage, Flatpak, Snap)
On most GNU/Linux distributions, applications are provided separately from their dependencies -- the data and files required to run the application. This allows the application package to be relatively small and it means dependencies common to multiple applications can be downloaded just once and shared between several applications. While this approach is flexible and efficient in most cases, it raises some problems. Breaking up an application and its dependencies into separate packages means the application package may not be portable to another Linux distribution or to another version of the same distribution as its dependencies may not be available on those platforms.
To counter this problem, several projects have created portable application formats. These portable applications should be usable across multiple distributions and versions of distributions, assuming a bare minimal framework or tools are present on the system. This makes it easier to share applications, particularly third-party or beta software, between users. Most portable applications allow the user to install multiple versions of the same program for testing purposes.
There are many portable application formats. Three of the most popular are AppImage, Flatpak and Snap. AppImage packages contain an application and its dependencies in a single file. This file can be placed on most modern GNU/Linux systems and run simply by double-clicking the AppImage file. Any user on a GNU/Linux system can download and run an application bundled as an AppImage.
Flatpak and Snap are younger than AppImage and require a framework to be in place to install and manage applications packages in their respective formats. Flatpak and Snap offer some additional security and isolation features. These formats require new packages to be installed by the system administrator. While the two formats perform similar tasks, distributions tend to support one or the other. Snap is mostly used by Ubuntu and its derivatives while Flatpak has seen adoption by Fedora.
POSIX is short for Portable Operating System Interface. POSIX is a series of standards and guidelines with attempt to provide a base level of compatibility between Unix and Unix-like operating systems such as GNU/Linux. Since the Unix family of operating systems is large and diverse, programs and utilities written for one member of the Unix family may not work on other members. POSIX attempts to provide some measure of compatibility between systems to make porting software easier and to allow administrators to move more easily between diverse platforms.
Information on POSIX can be found on The Open Group website.
Repository (package repository)
A repository, or package repository, is a collection of software. Developers of GNU/Linux distributions collect software, package it and test it to make sure it will work with the distribution. The developers usually insure all a package's dependencies are met and that the software works properly. The software packages are then placed on a server which the distribution's package manager can access.
Each distribution having its own pool of packages offers users a number of benefits. One is that most open source software can be installed from one location, removing the need to hunt down individual programs on the web. Software in a repository will also include its dependencies, saving the user the hassle of tracking down supporting programs. Another advantage is the package repository can be scanned for malware, official Linux repositories are very unlikely to be infected with malware.
Most GNU/Linux distributions include thousands of software packages, with large projects like Debian featuring over 40,000 individual pieces of software. The BSD family of operating systems also have repositories, but they are more frequently called a "ports collection" or "ports tree".
Rolling release (verse fixed release)
In software development a rolling release indicates that the software receives a steady stream of updates. In the case of Linux distributions this means that the operating system can be installed once and then receive a constant stream of software updates that offer users both new features and security updates. This allows users to stay up to date with the latest versions of software.
A rolling release distribution does not need to be re-installed or put through a special upgrade process when new versions come out, as the system is constantly updated to the latest versions of packages.
The rolling release model is in contrast to a fixed release (or point release) model in which a distribution will publish a new version and usually only provide security updates (but not feature updates) for its software packages. In this way a fixed release remains relatively unchanged during its life span, sticking with older versions of software packages.
When a fixed release distribution reaches the end of its supported life span, the user is expected to upgrade to a new version of the operating system. This causes a fixed release to "jump" forward periodically while a rolling release distribution will constantly move forward gradually.
Fixed release distributions tend to be preferred in environments where it is desired for the operating system to remain the same day to day or even year to year. A rolling release model tends to be preferred by people who want to always have access to the latest features and versions of upstream software.
Root (root file system) (root user)
In the GNU/Linux and BSD communities, the term "root" can be used in a number of different contexts. Usually "root" is used to refer to one of two things, either the operating system's administrative account, or the primary file system where the operating system resides on the disk.
The root file system is often represented by the "/" symbol. Typically the root file system will contain the core elements of the operating system, some command line utilities, at least one shell, possibly the kernel and the operating system's configuration files. Other file systems, which may contain log files or the users' personal files, are attached or "mounted" to directories contained in the root file system. As an example, the directory which contains users' files may be kept in the home (or "/home") directory.
The root user, also called the "super user" or administrator, is an account which holds special rights on the operating system. The root user is responsible for creating or removing other user accounts, managing storage disks, installing and updating software and otherwise maintaining the operating system. The root user has access to all files on the system.
On some flavours of GNU/Linux the root account is locked for security reasons. In these cases another user may act as the root user via the sudo command.
Shell (command line)
A key component of GNU/Linux, BSD and other Unix systems is the command line. The command line (or terminal) is a user interface where the computer user types commands and (usually) receives back information. The program which interprets the commands the user types is called the shell. The term shell is sometimes abbreviated to "sh".
GNU/Linux and BSD operating systems supply the user with a number of different shells and each one processes commands in a slightly different way. The specific characteristics of each shell program are beyond the scope of this document. For now we can just say that the Bourne Again Shell (bash) is usually the default on GNU/Linux systems while tcsh is most often used on BSD systems.
The shell is a core component of the operating system and is often used when trouble-shooting desktop systems and the shell is almost always the primary method of interacting with servers.
SMP is short-hand for Symmetric Multi-Processor. The term SMP is generally used to indicate a scenario where a single operating system is working on multiple CPUs. This allows the operating system to run multiple programs at the same time, spreading the workload over multiple processors.
Most GNU/Linux distributions are provided to the public in binary form. That is, the software which is packaged for the distribution has already been built from its source code into programs which can be run natively on the operating system. This is very convenient and is the way most operating systems are put together and distributed to end users.
While binary packages are very convenient to work with, in some scenarios better performance and flexibility can be achieved by the end-user building the software they plan to run on their own, local machines. A source-based distribution packages and provides source archives rather than binary packages. The user, usually with the help of a package manager, downloads these source archives, optionally configures them and builds the source code into a running program.
Quite often building packages from source code can take a long time, a few minutes to several hours, depending on the size of the application being built. Due to the complexity and the time required to build packages, not many users run source-based distributions. Those who do usually do so to enable (or disable) specific features or to strive for optimizations specific to their computer's hardware.
Swap (swap area, swap space)
A computer program, when it is running, is stored in the computer's memory. Any data or files being accessed are also kept in the computer's memory. When memory gets full, the kernel needs to remove existing data from memory. Since we usually want programs to continue running, even when memory is full, we need some temporary storage space to put program data until it is needed. The temporary storage space where the kernel places data that has been removed from memory is called swap, or swap space.
Most modern operating systems set aside a disk partition to act as swap space. This is a special partition that does not hold files, like other partitions, but can be used to hold data for short periods of time when memory is full. Most operating systems will allow us to store temporary data in a swap file too, if no partition has been designated the swap partition.
The terms "swap", "swap space" and "swap area" all refer to a disk partition or file that has been set aside as a place to put data that have been temporarily removed from memory.
Generally speaking, it is usually regarded as a bad sign when swap space is being actively used. Saving information to a hard disk (and retrieving the data back from swap space) is a lot slower than accessing data stored in memory. This means tasks tend to slow down a lot when a computer's memory becomes full and data is being sent to swap space (swapped out) or loaded back into memory from swap space (swapped in). Ideally, we usually want swap space to only be used for a brief time. When a system is using swap space on a regular basis it is usually a sign that more memory should be installed on the computer or fewer applications should be run.
System monitors and the top command line program can be used to monitor memory and swap usage.
Tarball (file type)
The term tarball refers to a file archive that has been created by the tar command (or other compatible file archiving utility). A tarball is a file which contains one or more files inside it, similar to a zip file in concept. The term tarball is often used interchangeably with "tar archive".
Tarballs are often used on GNU/Linux and BSD systems to store backups or to distribute source code. On its own, a plain tar archive is not compressed and may be quite large. For this reason, tar archives are usually compressed prior to distribution and the type of compression used is indicated in the archive's file name. For instance, mybackup.tar would indicate a backup archive that is not compressed while mybackup.tar.gz would indicate a backup archive that has been compressed with the gzip utility.
Terminal (console, virtual terminal)
Traditionally, a computer terminal has been the place where a user sat and interacted with the computer. The terminal generally included a method for inputting information (such as a keyboard) and a way for the computer to communicate information back (like a monitor).
When talking about GNU/Linux and BSD, the terms "console" and "terminal" refer to a text-based interface where the user can login to a shell, type in commands and get back text information from the operating system.
On GNU/Linux and BSD systems, the user can access a terminal screen by pressing the CTRL and ALT keys along with a function key, such as F2 or F3. Usually F1 through F6 will bring up terminal (text) screens while F7 or F8 will cause a graphical interface to be displayed on the screen.
The terminal interface is often referred to as the "console" or the "command line" or CLI. Desktop environments include graphical applications which emulate the classic console interface. These graphical applications are called "virtual terminals".
UEFI (Secure Boot)
UEFI stands for Unified Extended Firmware Interface. It is a specification and implementation which sits between the computer's hardware (firmware) and the operating system. UEFI provides a method for accessing certain hardware settings and controls even when an operating system is not installed on the computer.
UEFI replaces the earlier BIOS (Basic Input/Output System) which previously shipped with most desktop computer systems. Most UEFI implementations provide legacy support for BIOS functions, making it a suitable drop-in replacement in most circumstances.
Modern implementations of UEFI offer a feature called Secure Boot. The Secure Boot feature prevents boot loaders, operating systems and device drivers from being loaded unless they have been signed by the appropriate security key. In this way Secure Boot attempts to protect the computer from malware which may be run before the operating system or run as a device driver.
While Secure Boot can help to protect the computer from malware, it also means operating systems not signed by the proper security key also cannot be loaded on the system, unless Secure boot can be disabled. Some members of the open source community see Secure Boot as an effort to block (or at least make difficult) the installation of open source operating systems like Linux or the BSDs. This makes Secure Boot a potentially useful, but often mistrusted, technology.
Many people use the term Secure Boot interchangeably with UEFI. It is more accurate to think of Secure Boot as one of many features of the UEFI specification.
The name Unix refers both to a multi-user, multi-tasking operating system developed by AT&T's Bell Labs and to the family of operating systems which are derived from that original Unix operating system. Over the years, the original Unix inspired the rise of many operating systems which were either based off the code developed by Bell Labs or inspired by the Unix design.
The BSD family of operating systems can trace their code's lineage back to the original Unix code base, making the BSDs a modern form of Unix. Other operating systems, such as GNU/Linux distributions, share a common design with Unix, but do not contain any of the original Unix source code. This makes GNU/Linux distributions Unix-like or Unix clones.
More information on Unix, its history, its children and clones can be found in the Unix Wikipedia entry.
Software written for the Unix operating system and similar systems, such as GNU/Linux, are often guided by a series of design recommendations referred to as the Unix Philosophy. There are many different takes on the Unix Philosophy and a good deal of argument about how strictly the various points of the philosophy should be followed.
Some of the key points of the Unix Philosophy include "small is better" and "make each program do one thing well", suggesting software should be written with one specific task in mind. Fans of the Unix Philosophy also recommend prioritizing portability over efficiency and storing data/configuration information in human-readable text files.
The Unix Philosophy is perhaps best embodied in Mike Gancarz's nine points.
The term upstream, as applied to software, refers to the origin of a program. For example, if a distribution packages Mozilla's Firefox web browser, then Mozilla is the "upstream" source of Firefox. The distribution packaging Firefox for its users is considered the "downstream" location of the Firefox package.
Sometimes the "stream" becomes longer. For instance, The Document Foundation creates the LibreOffice productivity suite. Debian then packages LibreOffice for its users. Then another distribution, for example Ubuntu, takes Debian's package of LibreOffice and copies it. At this point there is a chain from The Document Foundation to Debian to Ubuntu. So Debian, being in the middle, is "upstream" for Ubuntu, but also "downstream" from The Document Foundation.
This chain of ownership can become important when filing bug reports. Often times a distribution will advise bug reporters to file a bug "upstream" with the original authors of a piece of software if they do not have the time or expertise to fix the issue themselves.
The concept of an operating system's userland can be difficult to understand at first. A modem operating system can be thought of as having two types of programs. The first is the kernel which communicates with the computer's hardware and enables multiple programs to run on the computer at the same time. The second is userland programs. The kernel has special access to the computer's hardware and can act as a sort of traffic cop for the rest of the programs running on the system.
Userland refers to programs which are not the kernel and do not have special access on the system. A userland program is usually associated with a user account and has the same access to the operating system as the user who ran the program. Quite often all the programs and users on a system which are not the kernel are thought of collectively as userland.
Wayland and Mir
Wayland and Mir are modern display servers for GNU/Linux operating systems. Both Wayland and Mir are being presented as replacements for the aging X display server. Over time the X display server, while reliable, has shown itself to be difficult to maintain. Some of the developers of X decided to start a new project to create a modern display server which would, ideally, put aside some of the legacy code/features of X and offer users better performance and new features. The Mir and Wayland projects are fresh starts in display server technology for GNU/Linux.
The term Wayland is usually used to refer both to the protocol being used in the background and the software used to implement the protocol. Many graphics libraries along with KDE's Plasma desktop and the GNOME Shell desktop have been ported to Wayland. At the time of writing, Wayland running the GNOME desktop is the default display server for the Fedora Workstation distribution.
The Mir display server was developed by Canonical, the company behind Ubuntu. The Mir display server is usually paired with Canonical's Unity 8 desktop environment. Mir and Unity 8 are designed with the idea of providing a consistent graphical user interface across multiple screen sizes, ranging from handheld smart phones running Ubuntu through to multi-screen workstation displays.
Additional information on display servers and their role in an operating system can be found in our description of the X display server.
A window manager is the software which enables the user to interact with multiple applications in a graphical user interface. The window manager handles the placement and general appearance of the application windows.
While some people use window managers on their own, most people run full featured desktop environments, of which a window manager is one key component. A full desktop environment will feature helper applications, possibly resource monitors, panels and other convenient tools as well as the underlying window manager. Running a window manager by itself, without these extra applications, provides a desktop-like interface with less visual clutter and requires fewer resources.
X (X11) (X-Windows)
X (or X11 or X-Windows) is low level software for handling the display of graphical data on a computer screen and for receiving input from devices such as a mouse or keyboard. On GNU/Linux and BSD the X software is a core component of the graphical user interface and acts as a foundation for window managers and desktop environments.
In recent years, some people have noted the X software and its legacy code have become difficult to maintain. This has given rise to alternative low-level graphical implementations such as Mir and Wayland.
On GNU/Linux and BSD operating systems, every program that is run gets started by another process. (The exception to this rule is the init program, which is started by the kernel when the computer boots.) The program which is started is called the "child" and the program which starts it is called the "parent".
Under normal circumstances, when the child process is finished, it exits and passes information back to the parent process. Usually, the parent process collects this information right away and the child's information is immediately removed from the computer's memory. In some unusual cases the parent, for one reason or another, fails to collect the information from the child process. The information from the child process is kept in memory and the child process's identification information is kept in the system. When this happens, the child process appears to still be running, even though it has concluded its work. A child process that is no longer running, but has not been completely removed from the system, is called a "zombie process".
While zombie processes do not use up any significant amount of memory or other resources, usually multiple zombie processes on a system indicate a parent program is misbehaving, since it is not reading the exit information from its children. Forcing the parent process to exit causes the zombie processes to be brought to the attention of the init program, which will collect their information and wipe them from the system.
A zombie process is quite different from a zombie computer. A computer which has been compromised by attackers and is under the control of someone acting in a malicious manner is said to be a zombie.