From Fedora Project Wiki

Unified software database for DNF and PackageKit

Contact information

  • Name: Eduard Čuba
  • Email Address: edynox AT fedoraproject DOT org
  • Blog URL: edynox.github.io
  • IRC: edynox - #yum

Abstract

Nowadays DNF is using old YUM databases. PackageKit is accessing yumdb in very hacky way. Therefore there is no connection between DNF and PackageKit transactions and unintended user installed package removal hazard (F24 blocker).

I'm working on solution for replacing these old YUM databases with new, universal one. New database called SWDB replaces flat yumdb, history sqlite and groups json databases.

Goal and benefits

Better DNF and PackageKit integration.

With this database integrated both in DNF and PackageKit, it should be possible to install packages via PackageKit and list, undo, redo or rollback these transactions with DNF.

Problem

Swdb is only integrated into DNF using dnf-swdb library (part of libdnf), which is providing all required functionality to operate with swdb. PackageKit integration is missing.

When dnf-swdb will be merged with DNF upstream, there will be need to provide support for PackageKit to avoid package conflicts and unintended removals. PackageKit is using libdnf modules to operate yum and history database.

I would like to:

  • rewrite libdnf modules to cooperate with dnf-swdb
  • provide transaction history support for PackageKit shared with DNF

Related work

Nowadays I'm finalizing integration of dnf-swdb into DNF.

About me

  • Student of Brno University of Technology, Faculty of Information Technology - Czech Republic.
  • I was doing robotics for 7 years at high school (8 year). Programming robots was fun so I decided for career in IT.
  • Contributing to project SWDB for DNF team since May 2016
  • Some of my contributions:
  • I like when my work is my hobby and when I can see real impact of my work
  • I prefer to work in calm environment - using notes and emails for work organization

Why fedora and this project?

Fedora became my favorite operating system at university. I was excited that even my work can be part of it. We are facing new requirements for software every day and sometimes it is really hard to keep things organized. Package manager YUM is great example of this issue. While significant part if YUM is already rewritten, YUM databases remained. Outdated design, data duplicity and no shared API is dangerous combination for cooperation of multiple package managers. SWDB is providing new design suitable for current needs of DNF. Problem is, that DNF is not only package manager in the system. Gnome Software Package Manager is probably more convenient way how to install package for regular user. It is using PackageKit and PackageKit is logging into outdated yumdb, so DNF will not remove user installed packages. Unifying DNF software databases is opportunity to make connection between PackageKit and DNF stronger and safer.

I want to continue providing support for SWDB after GSoC, maybe start a new fedora project for my bachelor's thesis.

Schedule

Weeks Due date Task Description
1 - 2 June 9. Design and research Find out what needs to be changed
2 - 4 June 23. Module integration dnf-swdb integration with libdnf - evaluation
4 - 6 July 7. Writing transactions Writing transaction and package data from PackageKit into swdb
6 - 8 July 21. Reading data Providing data from swdb to PackageKit(installed packages, updates etc.) - evaluation
8 - 10 August 4. DNF-PK interoperation DNF-PK cooperation debugging (conflicts, RO mode, packages uninstalled with RPM)
10 - 12 August 18. Preparation for release Testing and bugfixing (CI DNF stack tests, data migration from various versions - Fedora, RHEL)
13 August 21 - 29. Submit code Final Evaluation

Why me?

I have strong experience with this project.

My plans

I don't have any specific plans for summer. I will be able to work as required. From time to time I will need a free day for travelling between my university in Czech Republic and home in Slovakia.