Roadmap to Fedora Bootable Containers
## Important initial notes * This is a proposed roadmap that is subject to change and refinement * While not complete nor matching the current Fedora bootable container images, you can already use the Fedora Atomic Desktops using container images, with caveats. See: https://gitlab.com/fedora/ostree/ci-test#experimental-ostree-native-container-images-for-rpm-ostree-based-fedora-desktop-variants With that out of the way, let's look at the work ahead. ## Roadmap - To Do ### Rebasing on Fedora Bootc manifests / container images Tracked in https://gitlab.com/fedora/ostree/sig/-/issues/88 * Needs better support for container builds in the Fedora Infrastructure * Forgejo with runners? * Konflux? * Building with Konflux discussed in https://gitlab.com/fedora/ostree/sig/-/issues/91 * Use a single repo and set of manifests for legacy rpm-ostree manifest builds and the new bootc base image container based image builds like Fedora CoreOS does * ~~Might mean using a Git submodule or merging all manifests into a single repo~~ * ~~Investigate if rebasing to a container based workflow for those image would bring benefits~~ * ~~Investigate the new Experimental Base Images Builder:~~ * ~~https://gitlab.com/fedora/bootc/base-images-experimental/-/merge_requests/18~~ * Related to: https://gitlab.com/fedora/ostree/sig/-/issues/4, https://gitlab.com/fedora/ostree/sig/-/issues/21, https://gitlab.com/fedora/ostree/sig/-/issues/22 ### bootc integration in graphical system updaters * Support updating systems via bootc using GNOME Software & Plasma Discover * GNOME Software: TBD * Support in Plasma Discover: Partial, some bugs remain * rpm-ostree likely to stay in the image for a while until this is resolved * Bootc is currently root only: no unprivileged interface, no DBus interface * Related discussions: * https://gitlab.com/fedora/ostree/sig/-/issues/7 * https://github.com/containers/bootc/pull/472 * https://github.com/containers/bootc/issues/474 ### Local package layering * Figure out a solution for users that have locally layered packages * Similar to what's needed for Fedora CoreOS * Tracked in https://gitlab.com/fedora/bootc/tracker/-/issues/4 * Related to https://gitlab.com/fedora/ostree/sig/-/issues/45 ### Building Installer or LiveISO & disk images Tracked in https://gitlab.com/fedora/ostree/sig/-/issues/32 * Build Installer or LiveISO images and pre-installed disk images (where it makes sense) to let users directly install using Bootable Containers. * Needs support for pre-installing Flatpaks * Related to https://fedoraproject.org/wiki/Changes/BuildAtomicDesktopsWithImageBuilder ### Switching to Bootable Container images by default Tracked in https://gitlab.com/fedora/ostree/sig/-/issues/2 * Needs work and testing to migrate existing users to the new format * ~~Needs work on the installer part:~~ * ~~Initial work for the lorax one: https://github.com/ublue-os/isogenerator~~ * Needs history for container images: * Tracked in https://pagure.io/cloud-image-uploader/issue/37 * Needs signed container images (with cosign or equivalent) * https://github.com/fedora-infra/siguldry/issues/49 * Support for zstd:chunked images to reduce the size of updates: * https://github.com/ostreedev/ostree-rs-ext/issues/608 * https://gitlab.com/fedora/bootc/tracker/-/issues/9 * Reduce the update cadence to reduce the impact of updates: * https://gitlab.com/fedora/ostree/sig/-/issues/69 ### Documentation updates * We will likely have to update the documentation to link to the Fedora Bootable Containers docs. ## Roadmap - Done ### ✅ Building and publishing Bootable Container images Tracked in https://gitlab.com/fedora/ostree/sig/-/issues/48 * Container images built on Fedora's infra using support in Pungi: * Rawhide & branched: https://pagure.io/pungi-fedora/blob/main/f/fedora.conf#_730 * Stable: https://pagure.io/fedora-infra/ansible/blob/main/f/roles/bodhi2/backend/templates/pungi.rpm.conf.j2#_214 * Manifests are in https://pagure.io/workstation-ostree-config, shared with the classic ostree ones * Work in progress to publish those images in the official Fedora registry: * https://pagure.io/releng/issue/10399 * https://pagure.io/releng/issue/12081 * https://discussion.fedoraproject.org/t/we-need-to-come-up-with-a-consistent-approach-for-generating-and-publishing-containers-both-traditional-and-atomic-desktop-containers-both-stable-and-unstable-releases/109213 Note that https://gitlab.com/fedora/ostree/ci-test is synced from the same repo but the images are not built on Fedora's infra. Those images are the ones used by https://universal-blue.org/ and derivatives (Bluefin, Bazzite, etc.) right now ### ✅ DNF5 integration * Add dnf5 to the images: * https://gitlab.com/fedora/bootc/tracker/-/issues/12 * https://bugzilla.redhat.com/show_bug.cgi?id=2293627 * https://fedoraproject.org/wiki/Changes/DNFAndBootcInImageModeFedora * Better error handling / messages in dnf (on running systems) would make this less confusing to our users * A lot of testing needed, especially regarding alternative kernels, custom kernel modules, /var and /opt handling, etc. ### ✅ bootupd integration Tracked in: https://gitlab.com/fedora/ostree/sig/-/issues/1 ### ✅ Moving existing systems to static GRUB config: Tracked as part of the composefs issue: https://gitlab.com/fedora/ostree/sig/-/issues/35 * https://github.com/fedora-silverblue/issue-tracker/issues/530 * https://github.com/fedora-silverblue/issue-tracker/issues/120 ### ✅ Switching to composefs Tracked in https://gitlab.com/fedora/ostree/sig/-/issues/35 * Use composefs by default and update all current systems to it * Will not use signatures at the beginning * See: https://gitlab.com/fedora/bootc/tracker/-/issues/11#note_1929159362 * See: https://github.com/coreos/fedora-coreos-tracker/issues/1718 ### ✅ Anaconda We are already using Anaconda ### ✅ Documentation updates * Unify the docs for Atomic Desktops: https://gitlab.com/fedora/ostree/sig/-/issues/10 ## References See: * https://fedoramagazine.org/get-involved-with-fedora-bootable-containers/ * https://fedoraproject.org/wiki/Initiatives/Fedora_bootc For Fedora CoreOS, see: https://github.com/coreos/fedora-coreos-tracker/issues/1726
issue