SoK/2021/StatusReport/Mariam Fahmy

From KDE Community Wiki

Plasma Discover rpm-ostree backend


Plasma Discover is a KDE software center app that makes it easy to browse, install and remove apps on the Plasma desktop.
I am currently writing a new backend for Discover which supports doing system upgrades using rpm-ostree to support Fedora Kinoite upgrades which is a KDE version of Fedora Silverblue.
OSTree is a tool which manages file system trees, it uses a git like repository that records the changes to any files while package managers know how to install, uninstall and configure different packages but OSTree has no idea about the relationships between files, by adding RPM capabilities on OSTree, it becomes rpm-ostree which is a hybrid image and package system.
The idea behind that is to use a server architecture to keep the operating system installed in the client machine in sync with the latest versions.
Our goal is to perform a backend service for system upgrade using rpm-ostree for Plasma Discover.


Aleix Pol and Timothée Ravier.


Work Done

February 2021

  • I started by writing a new backend for rpm-ostree, its aim is:
    • Getting the list of deployments which is equivalent to rpm-ostree status from the rpm-ostree DBus class and displaying them on qDebug()/terminal.
    • Detecting the currently active deployment.
    • Checking if there is a new deployment update by using QProcess which executes rpm-ostree update --check.
    • Implementing the AbstractBackendUpdater so that Discover can be notified if there is an available update.
  • Writing a new rpm-ostree resource for the currently active deployment which contains its information:
    • Deployment name.
    • Deployment version.
    • Deployment BaseCommit.
    • Deployment GPCSignature.
    • Deployment origin.
  • Writing a new rpm-ostree transaction which downloads the update and perform the update, it is equivalent to rpm-ostree update

March 2021

  • Listing the remote refs of kinoite by using QProcess which executes ostree remote refs kinoite.
  • Detecting the current refs by using QProcess which executes ostree refs.
  • Filtering the remote refs list and detecting the most recent available refs.
  • Adding new button in the currently active deployment resource if there is a new available refs that can be switched to.
  • Modifying rpm-ostree transaction to support rebasing to a new refs, it is equivalent to rpm-ostree rebase <new refs>

Contact Me: