|
Componentized Linux (CL) is a modular, highly customizable Linux distribution that can be used to build customized versions of the Linux operating system (at Progeny, we call them custom distributions).
Componentized Linux is based on the DCC Common Core, an LSB 3.0 compliant, Debian 3.1 ("sarge") based common core designed to serve as the basis for custom Debian distributions. Componentized Linux is accompanied by the Platform Development Kit (PDK), a full suite of tools—best described as "version control for distributions"—for building and maintaining custom distributions using Componentized Linux. The combination is a platform for building custom distributions that provides developers with a set of reusable building blocks, called components, that can be easily assembled into a wide variety of configurations and customized as necessary. Goals and motivations First and foremost, Componentized Linux aims to provide a common platform that others may use to build distributions customized to a particular market or geographic region. By providing a common platform to be shared across a diverse range of Linux distributions, Componentized Linux aims to foster the creation of custom distributions that are compatible with each other and, through strength in numbers, offer software developers, ISVs, and IHVs a single platform that targets a wide range of geographies and market segments. Componentized Linux also aims to make custom distributions easier to create and maintain. Rather than dealing with tens of thousands of packages, Componentized Linux developers may choose from a few dozen components designed to match the feature and technology boundaries that drive design decisions, easing the translation of design into implementation. Furthermore, because these feature and technology boundaries largely correspond one-to-one with the independent "upstream" software projects that constitute a Linux distribution, components may closely track upstream project changes, allowing the components to evolve independently of each other and providing distributions built from those components with additional flexibility. Finally, components can have multiple implementations based on different underlying package collections, allowing the formation of both Debian- and RPM-based distributions. This provides additional choice to distribution builders, allowing them to leverage existing skill sets and more easily migrate from legacy custom platforms. In combination with distribution-neutral platform technologies such as Anaconda, APT, and Discover, Componentized Linux aims to provide a "meta distribution" that abstracts away the incompatibilities that have traditionally plagued the Linux distribution industry. What is a component? A component is a collection of packages that is internally consistent, along with associated metadata. By "internally consistent", we mean that all dependencies must be satisfied within the component itself, or the component must explicitly depend on some other component that provides them. A component has both abstract and concrete representations. The abstract representation is an XML file that specifies the packages in the component along with metadata such as the component's name. The concrete representation is an APT repository and is automatically generated from the XML component specification. Components implement coarse-grained, user-visible features and technologies such as "LSB 2.0 runtime" or "Active Directory integration support", making them much more approachable than the fine-grained packages that implement these features (e.g., libldap2, libkrb53, samba, etc.). By providing a layer of abstraction above packages, components can have multiple implementations—an RPM-based implementation of an "Active Directory integration support" component might name its packages differently, but once the packages are installed, it will have exactly the same functionality as the implementation built from Debian packages. In short, then, components may be thought of as templates above an existing distribution—or, more properly, an existing collection of packages—that provide a single, unified abstraction that allow the creation and maintenance of customized Linux distributions, regardless of whether the underlying distribution is packaged in RPM on Debian format.
|