Recent from talks
Nothing was collected or created yet.
Linux Standard Base
View on Wikipedia
| Linux Standard Base | |
|---|---|
The LSB logo | |
| Abbreviation | LSB |
| Status | Published |
| First published | June 29, 2001 |
| Latest version | 5.0 June 2, 2015 |
| Committee | ISO/IEC JTC 1/SC 22 |
| Series | ISO/IEC 23360 |
| Base standards | POSIX, SUS |
| Domain | Software compatibility |
The Linux Standard Base (LSB) was a joint project by several Linux distributions[which?] under the organizational structure of the Linux Foundation to standardize the software system structure, including the Filesystem Hierarchy Standard. LSB was based on the POSIX specification, the Single UNIX Specification (SUS), and several other open standards, but extended them in certain areas.
According to LSB:
The goal of the LSB is to develop and promote a set of open standards that will increase compatibility among Linux distributions and enable software applications to run on any compliant system even in binary form. In addition, the LSB will help coordinate efforts to recruit software vendors to port and write products for Linux Operating Systems.
LSB compliance might be certified for a product by a certification procedure.[1]
LSB specified standard libraries (centered around the ld-lsb.so), a number of commands and utilities that extend the POSIX standard, the layout of the file system hierarchy, run levels, the printing system, including spoolers such as CUPS and tools like Foomatic, and several extensions to the X Window System. It also specified boot facilities, such as $local_fs, $network, which were used to indicate service dependencies in System V-style initialization scripts.[2] A machine readable comment block at the top of a script provided the information necessary to determine at which point of the initialization process the script should be invoked; it was called the LSB header.[3]
The command lsb_release -a was available in many systems to get the LSB version details, or could be made available by installing an appropriate package, for example the redhat-lsb package in Red-Hat-flavored distributions such as Fedora,[4] or the lsb-release package in Debian-based distributions.
The standard stopped being updated in 2015 and current Linux distributions do not adhere to or offer it; however, the lsb_release command is sometimes still available.[citation needed] On February 7, 2023, a former maintainer of the LSB wrote, "The LSB project is essentially abandoned."[5]

Backward compatibility
[edit]
LSB was designed to be binary-compatible and produced a stable application binary interface (ABI) for independent software vendors.
To provide backward compatibility, the LSB adopted an interface deprecation policy to give application developers enough time to adapt in case an interface was removed from LSB. An interface that is to be removed would first be marked as deprecated in an LSB release; that interface would still be supported in that release and at least two subsequent LSB releases. This allowed the developer to rely on every interface in LSB for a known time and also to plan for changes.[6]
LSB 5.0 was the first major release that broke backward compatibility with earlier versions, as it removed Qt 3; applications dynamically linked with Qt 3 libraries were not guaranteed to run on all LSB 5.0-compliant distributions.[7]
Version history
[edit]- 1.0: Initial release June 29, 2001.
- 1.1: Released January 22, 2002. Added hardware-specific specifications (IA-32).
- 1.2: Released June 28, 2002. Added hardware-specific specifications (PowerPC 32-bit). Certification began July 2002.
- 1.2.1: Released October 2002. Added Itanium.
- 1.3: Released December 17, 2002. Added hardware-specific specifications (Itanium, Enterprise System Architecture/390, z/Architecture).
- 2.0: Released August 31, 2004
- LSB is modularized to LSB-Core, LSB-CXX, LSB-Graphics, and LSB-I18n (not released)
- New hardware-specific specifications (PowerPC 64-bit, AMD64)
- Synchronized to Single UNIX Specification (SUS) version 3
- 2.0.1: Released October 21, 2004, ISO version of LSB 2.0, which included specification for all hardware architectures (except LSB-Graphics, of which only a generic version is available).
- 2.1: Released March 11, 2005.
- 3.0: Released July 1, 2005. Among other library changes:
- GNU C Library version 2.3.4
- C++ ABI is changed to the one used by gcc 3.4
- The core specification is updated to ISO POSIX (2003)
- Technical Corrigenda 1: 2005
- 3.1: Released October 31, 2005. This version has been submitted as ISO/IEC 23360:2006.
- 3.2: Released January 28, 2008. This version has been submitted as ISO/IEC 23360:2006.
- 4.0: Released November 11, 2008. This version contains the following features:
- GNU C Library version 2.4
- Binary compatibility with LSB 3.x
- Easier to use SDK
- Support for newer versions of GTK and Cairo graphical libraries
- Java (optional module)
- Simpler ways of creating LSB-compliant RPM packages
- Crypto API (via the Network Security Services library) (optional module)
- 4.1: Released February 16, 2011:[8]
- 5.0: Released June 2, 2015, This version has been submitted as ISO/IEC 23360:2021
- GNU C Library version 2.10 (for psiginfo)
- First major release that breaks backward compatibility with earlier versions (compatible with LSB 3.0, and mostly compatible with LSB 3.1 and later, with some exceptions[10])
- Incorporates the changes made in FHS 3.0
- Qt 3 library has been removed
- Evolved module strategy; LSB is modularized to LSB Core, LSB Desktop, LSB Languages, LSB Imaging, and LSB Trial Use
ISO/IEC standard
[edit]The LSB, version 3.1, is registered as an official ISO/IEC international standard. The main parts of it are:
- ISO/IEC 23360-1:2006 Linux Standard Base (LSB) core specification 3.1 — Part 1: Generic specification[11]
- ISO/IEC 23360-2:2006 Linux Standard Base (LSB) core specification 3.1 — Part 2: Specification for IA-32 architecture
- ISO/IEC 23360-3:2006 Linux Standard Base (LSB) core specification 3.1 — Part 3: Specification for IA-64 architecture
- ISO/IEC 23360-4:2006 Linux Standard Base (LSB) core specification 3.1 — Part 4: Specification for AMD64 architecture
- ISO/IEC 23360-5:2006 Linux Standard Base (LSB) core specification 3.1 — Part 5: Specification for PPC32 architecture
- ISO/IEC 23360-6:2006 Linux Standard Base (LSB) core specification 3.1 — Part 6: Specification for PPC64 architecture
- ISO/IEC 23360-7:2006 Linux Standard Base (LSB) core specification 3.1 — Part 7: Specification for S390 architecture
- ISO/IEC 23360-8:2006 Linux Standard Base (LSB) core specification 3.1 — Part 8: Specification for S390X architecture
There is also ISO/IEC TR 24715:2006 which identifies areas of conflict between ISO/IEC 23360 (the Linux Standard Base 3.1 specification) and the ISO/IEC 9945:2003 (POSIX) International Standard.[12]
The LSB, version 5.0, is also registered as an official ISO/IEC international standard.
- ISO/IEC 23360-1-1:2021 Linux Standard Base (LSB) — Part 1-1: Common definitions
- ISO/IEC 23360-1-2:2021 Linux Standard Base (LSB) — Part 1-2: Core specification generic part
- ISO/IEC 23360-1-3:2021 Linux Standard Base (LSB) — Part 1-3: Desktop specification generic part
- ISO/IEC 23360-1-4:2021 Linux Standard Base (LSB) — Part 1-4: Languages specification
- ISO/IEC 23360-1-5:2021 Linux Standard Base (LSB) — Part 1-5: Imaging specification
- ISO/IEC TS 23360-1-6:2021 Linux Standard Base (LSB) — Part 1-6: Graphics and Gtk3 specification
- ISO/IEC 23360-2-2:2021 Linux Standard Base (LSB) — Part 2-2: Core specification for X86-32 architecture
- ISO/IEC 23360-2-3:2021 Linux Standard Base (LSB) — Part 2-3: Desktop specification for X86-32 architecture
- ISO/IEC 23360-3-2:2021 Linux Standard Base (LSB) — Part 3-2: Core specification for IA64 (Itanium™) architecture
- ISO/IEC 23360-3-3:2021 Linux Standard Base (LSB) — Part 3-3: Desktop specification for IA64 (Itanium TM) architecture
- ISO/IEC 23360-4-2:2021 Linux Standard Base (LSB) — Part 4-2: Core specification for AMD64 (X86-64) architecture
- ISO/IEC 23360-4-3:2021 Linux Standard Base (LSB) — Part 4-3: Desktop specification for AMD64 (X86-64) architecture
- ISO/IEC 23360-5-2:2021 Linux Standard Base (LSB) — Part 5-2: Core specification for PowerPC 32 architecture
- ISO/IEC 23360-5-3:2021 Linux Standard Base (LSB) — Part 5-3: Desktop specification for PowerPC 32 architecture
- ISO/IEC 23360-6-2:2021 Linux Standard Base (LSB) — Part 6-2: Core specification for PowerPC 64 architecture
- ISO/IEC 23360-6-3:2021 Linux Standard Base (LSB) — Part 6-3: Desktop specification for PowerPC 64 architecture
- ISO/IEC 23360-7-2:2021 Linux Standard Base (LSB) — Part 7-2: Core specification for S390 architecture
- ISO/IEC 23360-7-3:2021 Linux Standard Base (LSB) — Part 7-3: Desktop specification for S390 architecture
- ISO/IEC 23360-8-2:2021 Linux Standard Base (LSB) — Part 8-2: Core specification for S390X architecture
- ISO/IEC 23360-8-3:2021 Linux Standard Base (LSB) — Part 8-3: Desktop specification for S390X architecture
ISO/IEC 23360 and ISO/IEC TR 24715 can be freely downloaded from ISO website.[13]
Reception
[edit]While LSB was a standard and without a competitor, it was followed only by few Linux distributions. For instance, only 21 distribution releases (versions) were certified for LSB version 4.0, notably Red Flag Linux Desktop 6.0, Red Hat Enterprise Linux 6.0, SUSE Linux Enterprise 11, and Ubuntu 9.04 (Jaunty Jackalope);[14] even fewer were certified for version 4.1.
The LSB was criticized[15][16][17][18] for not taking input from projects, most notably the Debian project, outside the sphere of its member companies.
Choice of the RPM package format
[edit]LSB specified that software packages should either be delivered as an LSB-compliant installer,[19] or (preferably) be delivered in a restricted form of the RPM Package Manager format.[20]
This choice of package format precluded the use of other existing package formats not compatible with RPM. To address this, the standard did not dictate which package format the system must use for its own packages, merely that RPM must be supported to allow packages from third-party distributors to be installed on a conforming system.
Limitations on Debian
[edit]Debian included optional support for LSB early on, at version 1.1 in "woody" (3.0; July 19, 2002), 2.0 in "sarge" (3.1; June 6, 2005), 3.1 in "etch" (4.0; April 8, 2007), 3.2 in "lenny" (5.0; February 14, 2009) and 4.1 in "wheezy" (7; May 4, 2013). To use foreign LSB-compliant RPM packages, the end-user needs to use Debian's Alien program to transform them into the native package format and then install them.
The LSB-specified RPM format had a restricted subset of RPM features—to block usage of RPM features that would be untranslatable to .deb with Alien or other package conversion programs, and vice versa, as each format has capabilities the other lacks. In practice, not all Linux binary packages were necessarily LSB-compliant, so while most could be converted between .rpm and .deb, this operation was restricted to a subset of packages.
By using Alien, Debian was LSB-compatible for all intents and purposes, but according to the description of their lsb package,[21] the presence of the package "does not imply that we believe that Debian fully complies with the Linux Standard Base, and should not be construed as a statement that Debian is LSB-compliant."[21]
Debian strived to comply with the LSB, but with many limitations.[22] However, this effort ceased around July 2015 due to lack of interest and workforce inside the project.[23] In September 2015, the Debian project confirmed that while support for Filesystem Hierarchy Standard (FHS) would continue, support for LSB had been dropped.[24] Ubuntu followed Debian in November 2015.[25]
Quality of compliance test suites
[edit]Additionally, the compliance test suites were criticized for being buggy and incomplete—most notably, in 2005 Ulrich Drepper criticized the LSB for poorly written tests which can cause incompatibility between LSB-certified distributions when some implement incorrect behavior to make buggy tests work, while others apply for and receive waivers from complying with the tests.[26] He also denounced a lack of application testing, pointing out that testing only distributions can never solve the problem of applications relying on implementation-defined behavior.[26]
For the vendors considering LSB certifications in their portability efforts, the Linux Foundation sponsored a tool that analyzed and provided guidance on symbols and libraries that go beyond the LSB.[27]
See also
[edit]- Intel Binary Compatibility Standard (iBCS)
- POSIX (Portable Operating System Interface)
References
[edit]- ^ "Certifying an Application to the LSB". Linux Foundation. 2008. Archived from the original on July 15, 2009. Retrieved April 26, 2010.
- ^ "Facility Names". Linux Standard Base Core Specification 3.1. 2005.
- ^ "Comment conventions for init scripts". Linux Standard Base Core Specification 3.1. 2005.
- ^ "Package redhat-lsb". fedoraproject.org. Archived from the original on September 1, 2015. Retrieved August 15, 2015.
- ^ "Re: Archive of this Mailing List". lsb-discuss mailing list. February 7, 2023. Archived from the original on February 7, 2023.
- ^ "LSB Roadmap". Linux Foundation. 2008. Archived from the original on July 23, 2011. Retrieved April 26, 2010.
- ^ "LSB 5.0 Release Notes". linuxfoundation.org. Archived from the original on July 8, 2017. Retrieved June 3, 2015.
- ^ djwm (March 10, 2011). "Java removed from Linux Standard Base 4.1". Archived from the original on December 7, 2013.
- ^ "Java removed from Linux Standard Base 4.1". h-online.com. March 10, 2011. Retrieved August 15, 2015.
- ^ "LSB 5.0 Release Notes: Qt 3 Removed". linuxfoundation.org. Retrieved June 3, 2015.
- ^ ISO/IEC 23360-1:2006 - Linux Standard Base (LSB) core specification 3.1 -- Part 1: Generic specification. Retrieved October 15, 2011.
- ^ ISO/IEC TR 24715:2006 - Information technology -- Programming languages, their environments and system software interfaces -- Technical Report on the Conflicts between the ISO/IEC 9945 (POSIX) and the Linux Standard Base (ISO/IEC 23360). Retrieved October 15, 2011.
- ^ "ISO Publicly Available Standards". Retrieved October 15, 2011.
- ^ Certified Products Product Directory on linuxbase.org (2015-01-12)
- ^ "bugs.debian.org".
- ^ "linuxfoundation.org".[permanent dead link]
- ^ "openacs.org".
- ^ "osnews.com".
- ^ "Chapter 22. Software Installation 22.1. Introduction". Linux Standard Base Core Specification 3.1. 2005.
- ^ "Chapter 22. Software Installation 22.3. Package Script Restrictions". Linux Standard Base Core Specification 3.1. 2005.
- ^ a b "Debian -- Details of package lsb in lenny (stable) -- Linux Standard Base 3.2 support package". Debian Project. August 18, 2008. Retrieved April 26, 2010.
- ^ "Debian LSB". Debian Project. Retrieved April 26, 2010.
- ^ "Debian LSB ML discussion". Debian Project. Retrieved September 12, 2015.
- ^ "Debian dropping the Linux Standard Base". LWN.net.
- ^ "lsb 9.20150917ubuntu1 source package in Ubuntu". November 19, 2015.
- ^ a b Drepper, Ulrich (September 17, 2005). "Do you still think the LSB has some value?". Retrieved April 26, 2010.
- ^ "All About the Linux Application Checker". Linux Foundation. 2008. Retrieved April 26, 2010.
External links
[edit]- Linux Standard Base Specifications Archive, linuxfoundation.org
- Linux Standard Base (LSB), wiki.linuxfoundation.org
- Open Linux VERification (OLVER) Project, linuxtesting.org
- search for lsb packages, pkgs.org
- lsb, pkgs.org
- lsb in Launchpad, launchpad.net - bug reports
Media:
- Additional Vendors Participate in Growing LSB Effort, 1998, debian.org - describes the breakdown of teams (at the time) and who was involved, of historical interest
- Four Linux Vendors Agree On An LSB Implementation, 2004, slashdot.org
- Yes, the LSB Has Value, 2005, licquia.org – response to Drepper by Jeff Licquia
Linux Standard Base
View on GrokipediaIntroduction
Definition and Objectives
The Linux Standard Base (LSB) is a collaborative project under the Linux Foundation, involving multiple Linux distributions, aimed at establishing a set of open standards that define the structure and interfaces of Linux-based software systems.[6] This initiative seeks to create a unified baseline for the Linux ecosystem, specifying requirements for system libraries, utilities, and runtime environments to support consistent application deployment across diverse implementations. The primary objectives of the LSB include enhancing binary-level compatibility, enabling applications to run seamlessly across compliant distributions without the need for source code recompilation. It promotes software portability by standardizing application binary interfaces (ABIs) and application programming interfaces (APIs), drawing directly from established open standards such as POSIX (ISO/IEC 9945) and the Single UNIX Specification (SUS).[6] Additionally, the LSB provides a minimal environment for installation scripts and runtime support, ensuring a predictable foundation for developers targeting Linux platforms. By defining common interfaces for key system components—including libraries, commands, and filesystem hierarchies—the LSB works to mitigate fragmentation within the Linux ecosystem, allowing vendors to build and support products against a single, consensus-driven target rather than distribution-specific variations.[6] This approach fosters broader adoption of standardized practices, ultimately lowering the costs associated with cross-distribution software development and maintenance.Scope and Components
The Linux Standard Base (LSB) specifies a binary interface for compiled applications and position-independent executables, along with a minimal environment for dynamic linking and package formats, to promote portability across conforming Linux distributions. It focuses exclusively on userland elements, including application programming interfaces (APIs), application binary interfaces (ABIs), libraries, commands, and utilities, while deliberately excluding kernel interfaces and behaviors. This scope ensures that software developed for one LSB-compliant system can run on others without modification, targeting user-space compatibility rather than hardware or kernel variations.[7][8] The LSB is organized into modular components, each addressing specific aspects of the system environment. The LSB Core module provides the foundational system interfaces, such as standard C libraries (e.g., libc for I/O and system calls, libm for mathematics), utility libraries (e.g., libdl for dynamic loading), and essential commands (e.g., ls, cp), forming the runtime environment upon which applications depend. The LSB C++ module extends this with C++ runtime support, including the GNU libstdc++ library for features like exception handling and runtime type information. The LSB Desktop module covers graphical user interfaces, specifying libraries such as libX11 for X Window System interactions and components from Qt or GTK for desktop applications. The LSB Imaging module handles image processing, printing, and related tasks, incorporating libraries like libjpeg for format support and CUPS via libcups for print job management and rendering. The LSB Languages module ensures support for scripting languages, providing runtime libraries and interpreters for Perl (e.g., libperl) and Python (e.g., libpython), enabling consistent execution of language-specific applications.[7][8] LSB conformance is structured around profiles to accommodate varying implementation levels and architectures, with the Generic profile establishing minimal, architecture-independent requirements for broad compatibility. Platform-specific profiles, such as those for IA-32 (x86) and AMD64, supplement the Generic profile with architecture-dependent details like binary formats and instruction sets. The standards also encompass filesystem layout adherence to the Filesystem Hierarchy Standard (FHS), package formats like RPM for installation consistency, and environment variables (e.g., PATH, LD_LIBRARY_PATH) to define runtime behaviors. Supported architectures include IA-32, AMD64, and others like PowerPC, but the emphasis remains on userland portability without mandating kernel uniformity.[7][8]Historical Development
Origins and Formation
In the late 1990s, the rapid proliferation of Linux distributions led to significant fragmentation, complicating software development and deployment across varied platforms, which hindered Linux's adoption in enterprise environments.[9] Commercial interests, including major vendors, recognized that standardization was essential to streamline application portability and make Linux a viable alternative to proprietary operating systems for business use.[10] The Linux Standard Base (LSB) project was formally established on June 29, 2001, under the auspices of the Free Standards Group (FSG), a nonprofit consortium founded in 2000 to promote open standards for free and open-source software.[1] Initial sponsors included prominent technology companies such as IBM, Hewlett-Packard (HP), Red Hat, Intel, Oracle, and TurboLinux, which provided resources and expertise to drive the initiative forward.[11][12] These organizations aimed to foster collaboration among Linux distributors and developers to mitigate the risks of platform divergence.[13] Early milestones included the release of the LSB 1.0 specification on the same date as the project's formation, marking the first comprehensive document outlining binary compatibility standards for Linux systems.[1] Initial working groups focused on the Core profile for essential system interfaces, with additional groups for profiles such as Desktop (for graphical environments) and others established later to address diverse use cases, enabling targeted standardization efforts.[14] This foundational structure laid the groundwork for subsequent refinements while prioritizing interoperability in enterprise software deployment.[12]Version History
The Linux Standard Base (LSB) began with version 1.0 as an initial baseline specification establishing a common system interface for compiled applications and installation scripts across Linux distributions.[1] This version focused on core elements without architecture-specific details, laying the foundation for binary compatibility.[15] Subsequent early releases introduced minor updates and expanded hardware support. Version 1.1 added specifications for the IA-32 architecture, while version 1.2 incorporated PowerPC 32-bit (PPC32) support.[1] Version 1.3 further extended compatibility to IA-64, S390, and S390X architectures.[1] These iterations maintained the Core profile as the primary focus, emphasizing generic interfaces applicable across systems.[16]| Version | Release Date | Key Changes | Associated Profiles |
|---|---|---|---|
| 1.0 | June 29, 2001 | Initial baseline with common specifications for core system interfaces. | Core (generic) |
| 1.1 | January 22, 2002 | Minor updates including IA-32 hardware specifications. | Core (generic, IA-32) |
| 1.2 | June 28, 2002 | Added PPC32 architecture support. | Core (generic, PPC32) |
| 1.3 | December 17, 2002 | Introduced support for IA-64, S390, and S390X. | Core (generic, multiple architectures) |
| 2.0 | August 31, 2004 | Restructured documents; added initial desktop and graphical support; omitted some prior architectures like PPC32 and S390 for simplification. | Core, Desktop (generic) |
| 2.0.1 | October 21, 2004 | Minor updates and preparation for ISO submission. | Core, Desktop (generic) |
| 2.1 | March 11, 2005 | Expanded architecture support and refinements. | Core, Desktop (generic, multiple architectures) |
| 3.0 | July 6, 2005 | Aligned core specifications more closely with POSIX standards; introduced new features for broader application compatibility. | Core (generic) |
| 3.1 | October 27, 2005 (Core); April 24, 2006 (full, including C++ and Desktop) | Served as base for ISO standardization; added Desktop module and errata updates in 2007. | Core, Desktop, C++ (generic) |
| 3.2 | January 25, 2008 | Incorporated LSB-Printing and LSB-Languages modules; made Qt4 mandatory, deprecating older elements. | Core, Desktop, Languages, Printing (generic) |
| 4.0 | May 1, 2009 | Evolutionary focus on runtime environments and binary interfaces; refined modular structure. | Core, Desktop, Languages, Printing (generic and architecture-specific) |
| 4.1 | February 16, 2011 | Bug fixes and minor refinements to previous runtime specifications. | Core, Desktop, Languages, Printing (generic and architecture-specific) |
| 5.0 | June 3, 2015 | Final major release with modular restructuring; removed Qt 3 support, breaking some backward compatibility; aligned with Filesystem Hierarchy Standard (FHS) 3.0 for updated directory layouts. | Core, Desktop, Languages, Imaging (generic and architecture-specific) |
Standardization Efforts
Technical Specifications
The Linux Standard Base (LSB) core specifications define the essential system interfaces, libraries, and runtime environment required for application portability across conforming Linux distributions. These include mandated libraries such as glibc for C and C++ compatibility, along with libm for mathematics, libpthread for threading, libdl for dynamic loading, and others like libcrypt, libpam, libz, libncurses, libutil, and libstdcxx to support standard runtime behaviors.[21] The specifications require POSIX-compliant commands and utilities, such as core system tools listed in the LSB command tables, ensuring a consistent set of executables like ls, cp, and grep with defined behaviors and options.[21] Interfaces for dynamic linking are specified through the ld.so loader, which handles ELF binary execution and shared library resolution, including requirements for the program interpreter path and symbol versioning to maintain binary compatibility.[21] LSB aligns its filesystem standards with the Filesystem Hierarchy Standard (FHS), mandating directory structures such as /bin for essential binaries, /lib for shared libraries, /usr for user utilities, and /dev for device files to ensure predictable locations for system components.[21] For packaging, LSB prefers the RPM format due to its management benefits, requiring packages to include defined metadata such as name, version, dependencies, and file lists, while also supporting CPIO as an alternative for basic archiving; this setup facilitates installation verification and conflict resolution across distributions.[22][21] LSB defines conformance through profiles tailored to different implementation scopes. The Generic profile provides minimal, architecture-agnostic requirements for basic system elements like core libraries and commands.[23] The Core profile extends this to a full userland environment, incorporating architecture-specific details for platforms like IA32, AMD64, and PPC64, with comprehensive coverage of utilities, libraries, and execution environments.[23] The Desktop profile builds on Core by adding graphical requirements, including X11 for windowing, GTK libraries for widget toolkits, and support for desktop environments to enable portable GUI applications.[23]ISO/IEC Standardization
The Linux Standard Base (LSB) achieved international standardization through adoption by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) under the joint technical committee JTC 1, specifically subcommittee SC 22, which focuses on programming languages, environments, and system software interfaces. The Linux Foundation, as the steward of the LSB specifications, submitted the relevant documents for review and adoption via the Publicly Available Specification (PAS) transposition process, which allows developed standards to be fast-tracked into ISO/IEC international standards after national body reviews and harmonization efforts. This process included multiple cycles of technical review, ballotting by national standards bodies, and alignment with related standards such as POSIX (ISO/IEC 9945) to minimize conflicts and ensure interoperability.[24][17] The initial adoption occurred with LSB version 3.1, where the core specification was published as ISO/IEC 23360-1:2006, defining a generic system interface for compiled applications and a minimal environment for installation scripts. This standard encompassed multiple parts, including ISO/IEC 23360-1 for the core generic profile, with additional parts addressing specific architectures and extensions such as desktop and imaging profiles (e.g., ISO/IEC 23360-2 through 23360-8). The publication followed the Linux Foundation's submission of LSB 2.0.1 documents in 2004, refined through LSB 3.1 releases in 2005–2006, culminating in formal ISO/IEC endorsement on December 15, 2006, after resolution of discrepancies with POSIX standards.[25][26] Subsequent updates aligned with LSB 5.0, released by the Linux Foundation in June 2015, leading to a revised multipart standard published as ISO/IEC 23360:2021. This edition, finalized in October 2021, replaced the 2006 version and incorporated modular structures for common definitions (Part 1-1), core specifications (Part 1-2), and architecture-specific profiles (e.g., Parts 3-1 for x86-32, 6-1 for desktop on x86-64). The revision process involved further harmonization with POSIX, addressing areas of prior conflict such as API behaviors and library requirements, through collaborative input from the Linux Foundation and SC 22 working groups.[27][28][29] This ISO/IEC formalization provides official international recognition of LSB compliance, facilitating its use in regulated environments, government procurement, and cross-border software certification by establishing a verifiable baseline for Linux system interfaces. It enhances the LSB's credibility in legal contexts, such as intellectual property disputes or contractual obligations requiring standardized operating environments, while promoting global adoption without mandating distribution-specific implementations.[30][1]Compatibility and Implementation
Backward Compatibility
The Linux Standard Base (LSB) establishes backward compatibility as a core principle, requiring that implementations of a given major version number support binaries and applications developed for prior minor versions within the same major release. This ensures that software built against an older minor version, such as LSB 4.1, remains functional on systems conforming to a newer minor version like 4.2, without necessitating recompilation.[7][31] To maintain support for legacy application programming interfaces (APIs), LSB specifications mandate the use of symbol versioning in shared libraries, allowing multiple versions of the same function to coexist within a single library file. For instance, the GNU C Library (glibc) employs version tags like GLIBC_2.4 for functions such as__fgets_chk, enabling dynamic linkers to resolve symbols to the appropriate implementation while preserving compatibility for older binaries. This mechanism, detailed in the ELF symbol versioning sections, prevents ABI breakage by associating symbols with specific version nodes defined in .gnu.version_d and required in .gnu.version_r sections of ELF objects. Deprecation policies further support this by marking obsolete interfaces—such as tempnam in libc or sigpause in signal handling—for potential removal only at major version increments, providing developers with advance notice to migrate code.[32][33][34]
A notable challenge arose with LSB version 5.0, the first major release to intentionally break backward compatibility by removing support for Qt 3 interfaces, which had been included in version 4.0 under libraries like libqt-mt.so.3 based on Qt 3.3.6. This omission affected dynamically linked applications relying on Qt 3, requiring distributions to implement shims, compatibility layers, or alternative runtime environments to run legacy software without violating LSB conformance. The specifications recommend that distributions provide such alternatives or migration paths, emphasizing the deprecation policy's role in giving developers time to update to Qt 4.2.0 equivalents, such as libQtCore.so.4.[35][31]
LSB addresses forward compatibility through extensible profiles, such as core and desktop, which allow implementations to add optional features without disrupting base compatibility, while runtime behavior testing ensures consistent execution of legacy code across conforming systems.[36][31]
