Jump to content

🍌: Difference between revisions

From KDE Community Wiki
Ngraham (talk | contribs)
Migrate more things
Wesfun (talk | contribs)
Redirected page to KDE Linux
Tag: New redirect
Β 
(33 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?

Latest revision as of 16:27, 28 October 2024

Redirect to: