|
Β |
(32 intermediate revisions by 9 users not shown) |
Line 1: |
Line 1: |
| βKDE Linuxβ (codenamed βProject Bananaβ) is a work-in-progress name of a KDE-owned general-purpose Linux distribution proposed at Akademy 2024. Not to be confused with [https://neon.kde.org KDE Neon].
| | #REDIRECT [[KDE Linux]] |
| Β | |
| {{ Warning | This page serves as a design document, thus information presented here should be considered a snapshot of the ongoing discussion, not final decisions. }}
| |
| Β | |
| == Goals ==
| |
| Β | |
| Create a bulletproof OS showcasing the best of KDE that we can proudly recommend to users and OEMs, with a coherent "here's how you get it" story.
| |
| Β | |
| * "The KDE operating system"
| |
| * Quality experience
| |
| * Doesn't break, or at least easy to recover
| |
| * Keeping security in mind
| |
| * No packaging knowledge needed
| |
| * Focus on modern technologies
| |
| * Useful to our users
| |
| * Useful to our hardware partners
| |
| * Useful to our developers
| |
| Β | |
| === Non-goals ===
| |
| Does not have to support the proprietary NVIDIA kernel driver. We can require that NVIDIA GPUs must either be new enough to use the open-source kernel modules that can be distributed in-tree, or else use Nouveau.
| |
| Β | |
| == Target audience and use cases ==
| |
| Β | |
| It should have multiple editions suitable for different kinds of users. Ideas:
| |
| * '''Developer edition''': built from git master and released daily, including debugging tools and KDE dev environment. Like Neon Developer.
| |
| * '''Enthusiast edition''': ships released software, and releases to users on upstream KDE's schedule, like Neon User. Additionally, when there are any beta releases, ships the beta.
| |
| * '''Stable edition''': ships only released software on a delayed schedule, based on TBD quality metrics.
| |
| Β | |
| == Architecture ==
| |
| Β | |
| Original architecture ideas for the project included the following:
| |
| Β | |
| * Reproducible builds, must-pass CI, automated UI testing
| |
| * Base OS is Arch-based. OS updates are some degree of rolling; snapshot based releases with relatively recent libraries
| |
| * Systemd-boot as the bootloader
| |
| * Btrfs as the filesystem
| |
| * Encryption of all mutable data (e.g. user homedir, and cache locations on /)
| |
| * Included recovery partition
| |
| * Read-only base system, like SteamOS, Kinoite, and MicroOS
| |
| * Atomic image-based A/B updates with rollback functionality
| |
| * Manual package installation happens transparently using a per-user or systemwide overlay
| |
| * Apps are from Flatpak (and maybe also Snap if it's not too hard and the UX is okay)
| |
| * Has nice GRUB (systemd-boot?) theming: https://blog.inadvisor.lt/bling-up-your-fedora-grub.
| |
| * Wayland by default
| |
| * Automatic user data backup system using Btrfs snapshots, with a nice GUI around it like Apple's Time Machine
| |
| * DConf-like configuration management UI suitable for enterprise and managed environments leveraging KConfigXT for everything
| |
| * Simple input method configuration for CJK and more
| |
| * "Troubleshooting hub" app
| |
| Β | |
| TODO: hardware support, software separation, security model, deployment, OEM mode; proposed solution, alternatives, trade-offs for each section
| |
| Β | |
| === updates ===
| |
| Β | |
| === systemd-sysext ===
| |
| Β | |
| systemd-sysext allows us to overlay developer content on top of /usr without impacting the base system.
| |
| Β | |
| === Setup ===
| |
| Β | |
| {{Input|1=<nowiki>
| |
| # create directories
| |
| mkdir -p ~/kde/usr/lib/extension-release.d/
| |
| # create an extension-release file
| |
| cp /usr/lib/os-release ~/kde/usr/lib/extension-release.d/extension-release.kde
| |
| # make the ID ignored so updates don't break the extension
| |
| sed -i s%^ID=.*%ID=_any%g ~/kde/usr/lib/extension-release.d/extension-release.kde
| |
| # owned by root so it can't be removed | |
| sudo chown root:root ~/kde/usr/lib/extension-release.d/extension-release.kde
| |
| # enable the extension
| |
| sudo mkdir /var/lib/extensions/
| |
| sudo ln -s $HOME/kde /var/lib/extensions/kde
| |
| sudo systemd-sysext merge
| |
| sudo systemd-sysext
| |
| </nowiki>}}
| |
| Β | |
| === Use ===
| |
| Β | |
| Use DESTDIR=~/kde to install stuff and then restart systemd-sysext. Beware that when changing polkit/dbus stuff you also want to restart those services as they don't necessarily pick up changes.
| |
| Β | |
| {{Input|1=<nowiki>
| |
| DESTDIR=~/kde ninja install && sudo systemctl restart systemd-sysext.service
| |
| </nowiki>}}
| |
| Β | |
| == Communication ==
| |
| * [https://go.kde.org/matrix/#/#kdeos:kde.org Matrix room]
| |
| * [https://invent.kde.org/sitter/kde-linux/-/issues Gitlab issues]
| |
| Β | |
| == Ideas ==
| |
| See [[π/Obstsalat]]
| |
| Β | |
| * Automatic QA (openqa? Selenium? quicktest?)
| |
| * Human QA tracking (test case management of some sort)
| |
| * Health reporting into Sentry to identify bad releases
| |
| * Support sending non-KDE crashes to Sentry
| |
| * Better kde-builder dependency definitions
| |
| * kde-builder to build release tags
| |
| * Explore systemd-homed
| |
| * Secure Boot
| |
| * ARM/RISC-V images?
| |