FOSS Open Standards/The Linux Standard Base

The GNU/Linux operating system consists of the Linux kernel itself and, together, the rest of the system software and tools/utilities make up the operating system. Most of the system software is from the GNU Project. In addition, for an operating system to be useful to most people, it has to be made available with support for some application software. The strong community-based history and support of GNU/Linux together with the nature of the licensing of the Linux kernel and GNU software resulted in many people taking the kernel, system software from GNU and possibly other FOSS utilities/tools, adding in some application software which they deem useful, and putting all these together to form a working package. This working package is termed a GNU/Linux distribution or distro. Consequently, the GNU/Linux operating system comes in very many distros. The large number of distros available, coupled with the fact that since most software, if not all, included in a distro are FOSS and, hence, can be customizable to suit the requirements of a particular distro, have resulted in a fair measure of binary and configuration incompatibilities among distros. Some incompatibility problems include different library versions, package formats and differences in directory and file layouts. It has been recognized that if GNU/Linux is to be fully embraced and supported by mainstream computing as a legitimate alternative to proprietary operating systems, there is a need to cut down on these incompatibilities so that a software package with source can compile cleanly across distros and a binary version can run properly across all distros. The Linux Standard Base Project (LSB) tries to do this by specifying a standard for GNU/Linux.

What is the Linux Standard Base?
The Linux Standard Base is a project under the Free Standards Group. It attempts to develop and promote a set of binary standards that will increase compatibility among GNU/Linux and other similar systems. These standards will also enable software applications to run on any conforming system.

While the main goal of the LSB project is to increase compatibility among GNU/Linux distributions by specifying and promoting standards for their use, it does not limit the applicability of the specification to only the GNU/Linux environment. The LSB specification has been written so that it can be readily implemented on any UNIX-like operating system, natively or as a compatibility layer. With some more work, it can also be implemented on other operating systems.

The LSB is a community-based project and anyone can contribute to it by participating in the various LSB mailing lists. There is considerably good support for the LSB standard among commercial software vendors like Mandrakesoft, Miracle Linux, Novell, Progeny, Red Flag, Red Hat, IBM, Oracle, Veritas, MySQL, etc.

The Linux Standard Base Specification
The LSB comprises a single common (generic) specification and architecture specific specifications. The complete specification for a particular platform consists of the generic specification plus one of the architecture specifications. Architectures supported currently are IA32 and IA64 (Intel 32- and 64-bit processors), PPC32 and PPC64 (IBM's 32- and 64-bit PowerPC family), S390 (IBM's S390 processors) and S390X (IBM zSeries processors), and AMD64 (Advanced Micro Devices 64-bit processors).

The LSB defines both a set of Application Program Interfaces (APIs) for source code and Application Binary Interfaces (ABIs) for compiled binaries. A conforming implementation has to support all of the ABIs in the LSB but not all of the source-level APIs.

The LSB is divided into specification modules in which a specification module refers to a unique collection of one or more functions that have value for a certain group of runtime implementations. The modules currently available are LSB-Core, LSB-C++, LSB-Graphics and LSB-I18N. Both LSB-Core and LSB-C++ have generic and architecture-specific specifications while the LSB-Graphics and the LSB-I18N have only the generic specification. Table 10 summarizes the currently available modules.

The latest version of the LSB is 3.0.0. LSB 2.0.1 had been submitted to ISO to become an international standard for GNU/Linux.

LSB-Core Specification
This is the Core module of the Linux Standard Base. This module provides the fundamental system interfaces, libraries, and runtime environment upon which all conforming applications and libraries depend. It provides specifications for the following areas:
 * 1) Executable and Linking Format (ELF)
 * 2) Base libraries
 * 3) Utility libraries
 * 4) Command and utilities
 * 5) Execution environment
 * 6) System initialization
 * 7) Users and groups
 * 8) Package format and installation

The specifications make extensive use of existing standardized APIs and ABIs from other bodies. Some normative references include those from ISO POSIX, the System V Interface Definition (SVID) and the Filesystem Hierarchy Standard (FHS).

In particular, the LSB-Core specification includes many interfaces described in ISO POSIX (ISO/IEC 9945) and it specifies that such interfaces should behave exactly as specified in the POSIX standard. It is also the long-term plan of the LSB to converge with ISO/IEC 9945.

One of the problems plaguing the many different GNU/Linux distros has been the various formats used in software package distribution. The LSB addresses this by specifying that applications shall be packaged in the RPM packaging format as defined in the LSB, or supply an installer which is LSB conforming (for example, by invoking LSB commands and utilities). This means that while packages are encouraged to be supplied in Red Hat Package Manager (RPM) format the LSB does not mandate the use of the RPM program or database.

LSB-C++ Module
This is the C++ module of the LSB. It supplements the core interfaces by providing system interfaces, libraries, and a runtime environment for applications built using the C++ programming language.

Normative references include the LSB-Core, IOS POSIX and the ISO/IEC 14882 C++ Language standard.

It provides specifications for the following areas:
 * 1) Low level system information
 * 2) Base libraries
 * 3) Package information

The LSB-Graphics Module
This specification defines the graphical interface found on an LSB conforming system. Normative references include the LSB-Core and graphic libraries and specifications from The X.Org Foundation.

It provides specifications for the following areas:
 * 1) Graphic libraries
 * 2) OpenGL libraries
 * 3) Package information

The LSB-I18N Module
This module corresponds to the OpenI18N Global Specification from the OpenI18N Project.

Linux Standard Base as an ISO Standard
LSB 2.0.1 had been submitted to ISO for use as an international standard for GNU/Linux through the ISO PAS (Publicly Available Specification) process and this was recently approved as the standard ISO 23360.

The availability of an ISO GNU/Linux standard is an important milestone, symbolically, in the development of GNU/Linux. It signifies that the GNU/Linux operating environment has come of age and is now officially recognized as a full-fledged mainstream computing platform. As a result, corporations and governments, that so far have been reluctant to use GNU/Linux due to uncertainty regarding its long-term viability and international acceptance, now have the confidence to consider it on an equal footing with other more established operating systems. An ISO GNU/Linux standard will also help the acceptance and usage of FOSS in general as many FOSS products are implemented on GNU/Linux and it is arguably the most wellknown FOSS product.

Linux Standard Base Certification
GNU/Linux distributions that conform to the LSB can be certified as such. The LSB certification scheme is run on behalf of the Free Standards Group by the Open Group, a vendor- and technology-neutral consortium, to ensure neutrality and confidentiality. Certification charges are kept to a minimum to encourage developers, Independent Software Vendors (ISVs) and GNU/Linux distributions to become LSB certified.

LSB certification is currently available for the following:
 * 1) LSB Runtime Environment
 * 2) LSB Application
 * 3) LSB Internationalized Runtime Environment

Developers and vendors are granted a license to use the LSB Certified trademark in connection with a particular product, once it has passed the applicable certification test suites.