= Proposed System Wide Change: Host and Platform =
* Petr Šabata <contyk AT redhat DOT com>
Host and Platform is an evolution of the Base Runtime module concept
introduced in Fedora 26 Boltron, splitting the minimal system further
into independent modules allowing for greater flexibility when
composing and maintaining the base system.
This change focuses on modular content structure;
] deals with
details regarding modular delivery.
== Detailed Description ==
The end goal of this change is to provide the modular base operating
system content in a way that allows for hardware enablement and
general userspace separation, enabling different update cadence and
life cycles for each of the two parts.
Being the successors of Base Runtime, the two new modules will include
all the content Base Runtime does as well as content from additional
Fedora 26 Boltron modules currently extending it. Additional system
configuration & management services and utilities are expected to be
part of the base system experience, making all the essential content
available for installation from the base level modules that are
enabled by default.
=== Implementation ===
The concept is defined by the following set of objectives and expectations:
* Host and Platform are built and composed as modules, benefiting from
all the modularity pipeline enhancements Factory 2.0 provides and are
distributed with useful module metadata
* The Host part should deliver hardware enablement components such as
the kernel, bootloaders, firmware, possibly additional device drivers
and components closely linked to these
* The Platform part defines the operating system release and includes
various base userspace components ranging from the C library and init
system to system management & deployment tools, container runtime and
possibly several services commonly considered to be part of the base
* The Host and Platform modules should be independent, making it
possible to run the same Host with different Platforms and vice versa
* Each of the two modules has its own life cycle, update cadence and
* The Host can only be experienced through the Platform
* The Platform part provides all the content needed to produce
container base images; the Platform can therefore run without the Host
in that scenario
* Both modules are built in a shared, self-hosting buildroot (also
known as the Bootstrap module) providing all the build time
dependencies needed to build the Host and Platform as well as itself
* While independent on the source level, given the shared build
environment the modules' binaries are tightly coupled and the Host
part therefore needs to be built for every supported Platform it's
intended to be distributed with
* The Platform module provides the minimal build environment for
application level modules -- this means that modules built against a
certain version of Platform are built using the Platform compiler;
this doesn't affect what additional compilers are available to the end
users, for example via additional application level modules
=== Modules ===
At minimum the group is going to deliver three modules, one of which
being an implementation detail only that won't be part of the Host and
* '''The Host''' includes the kernel, bootloaders, firmware, and
components tightly coupled with any of these
* '''The Platform''' includes the C standard library, the init
basic system tools, filesystem and networking utilities, system Python
runtime, system management and deployment tools such as dnf and
anaconda, container runtime(s) and possibly additional system services
and components necessary to provide a reasonable base system
* '''The Bootstrap''' module includes a self-hosting package set
needed to build the Host and Platform modules. Host and Platform are
subsets of this module. The binaries are not part of the compose.
This module is also part of Fedora 26 Boltron, defining the buildroot
for Base Runtime and several other modules.
Host and Platform modules might be implemented as simple modules or
module stacks, depending on what provides more practical value. Given
that the content of each will be bound by the same life cycle and
update cadence, we don't expect to split them into sub-units unless
The Host module might be a module stack from day one to simplify
packaging of the UEFI bootloader.
The Bootstrap module will be initially created by manually tagging
traditional Fedora binaries into a special purpose, module-like tag.
The module is self-hosting so that it can later rebuild itself, as
well as serve as a base for building future releases, spins, and
derived distributions. Unfortunately it's not possible to build the
new Bootstrap module using the Fedora 26 Boltron version due to the
introduction of a new architecture (s390x) and numerous FTBFS issues.
=== Differences from Base Runtime ===
Runtime becomes Host and Platform]]
Fedora 26 Boltron Base Runtime module was created with a different set
of requirements in mind: it was meant to provide a minimal bootable
environment with hardware enablement, init system, basic system tools
and a minimal package manager. Unlike Host and Platform, Base Runtime
is usable on its own.
Base Runtime is both smaller and larger than Host and Platform -- it
provides the basic functionality of both but the Base Runtime
userspace package set is much smaller than that of the Platform.
== Scope ==
* Proposal owners:
Modularity WG will prepare both modules -- define the generic module
metadata, buildroots, profiles, components and API. The group will
also build the components and will deliver an installer boot image,
container base image and virtual machines built from the Host &
Platform content. The group will also create and maintain additional
modules needed to accomplish these tasks, such as a "self-hosting
buildroot package set" module similar to the one used for building
Base Runtime for Fedora 26 Boltron. The group will assist package
maintainers and release engineering with fixing packaging problems,
component build and module compose issues.
* Other developers:
Package maintainers are expected to fix packaging & build issues
affecting packages they maintain in a timely fashion.
* Release engineering:
#6815 [ https://pagure.io/releng/issue/6815
* List of deliverables:
Modularity & modular compose will be affected.
* Policies and guidelines:
Not needed for this change.
* Trademark approval:
Not needed for this change
Platform & Fedora Program Manager
Red Hat Czech s.r.o., Purkynova 99/71, 612 45 Brno, Czech Republic