desktop parity audit
This document outlines the desktop parity requirements, contract specifications, and verification tools established to address tuna-os/tunaos-packages#133.
Context & Problem Statementβ
An audit of 37 published edition images identified that 24 editions were undersized or missing expected desktop packages. Specifically:
marlinnon-GNOME editions (marlin:kde,marlin:cosmic,marlin:niri,marlin:xfce): No-op builds resulting in images identical in size (1.51 GB) containing zero desktop session files or desktop packages (marlin:kdecontains 338 packages vsmarlin:base480 packages andmarlin:gnome631 packages).floundercosmic/niri editions (flounder:cosmic0.73 GB,flounder:niri0.71 GB): Smaller thanflounder:base(1.11 GB), missing essential session components.sailfin,flounder, andgrouperacross all desktops: Authoring package lists against RPM/DNF package names resulted in unresolved names failing softly underaptandzypper, yielding incomplete desktop installations.
Furthermore, image compressed size alone cannot reliably distinguish between missing packages and legitimate architectural differences (e.g. EL-family XFCE Wayland stack vs Fedora X11 XFCE).
Desktop Experience Contracts & Validationβ
To guarantee desktop completeness and prevent regression before publishing images, package-level contracts and verification tools must be enforced for all target desktops across all base distributions (RPM, DEB, openSUSE).
1. GNOME Desktop Contractβ
Defined in docs/gnome-desktop-contract.md and checked via scripts/verify-gnome-desktop-experience.py.
Required package components:
gdmgnome-keyringgnome-sessiongnome-shellgvfsmutternautilusxdg-desktop-portal-gnome
2. Contract Enforcement Rules for All Desktopsβ
- Hard Failure on Unresolved Package Names: Package resolution in image builds for Debian/Ubuntu (
apt), openSUSE (zypper), and Enterprise Linux/Fedora (dnf) must fail hard on any unresolved desktop package name rather than ignoring missing dependencies. - Published Installed Package Inventory: Every edition build must export its effective installed package list (
rpm -qa/dpkg-query -W) alongside image metadata so desktop parity is diffable directly. - Session & Portal Verification: Every desktop edition must ship valid session entries in
/usr/share/wayland-sessions/or/usr/share/xsessions/, appropriate greeters/display managers, and required XDG desktop portals.
Status & Action Planβ
marlinnon-GNOME &floundercosmic/niri: Fixed by enforcing mandatory package verification and hard-failing builds when desktop session files or required desktop roots are missing.- Package Name Mapping (zypper/apt): Cross-base package list mappings are continuously audited and synchronized across DNF, APT, and ZYPPER definitions in
manifests/.