Unified software database for DNF and PackageKit
- Name: Eduard Čuba
- Email Address: edynox AT fedoraproject DOT org
- Blog URL: https://edynox.github.io
- IRC: edynox - #yum
- Mentor: Jaroslav Mráček - jmracek AT redhat DOT com
Nowadays DNF is using obsoleted YUM databases. PackageKit is accessing flat YUM database yumdb in very hacky way.
Therefore there is no connection between DNF and PackageKit transactions causing unintended user installed package removal hazard - F24 blocker.
I'm working on solution for replacing these old YUM databases with new, universal one.
New design called "Unified Software database for DNF and PackageKit" or shortly "SWDB" replaces flat "yumdb", "history.sqlite" and "groups.json" databases.
- SWDB is only integrated into DNF, PackageKit integration is missing. Integration is done using dnf-swdb library (going to be part of libdnf), which is providing all required functionality.
- 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.
- There is no shared database API between DNF and PackageKit. PackageKit is using libdnf modules to operate yumdb, DNF has its own ones.
- Connect libdnf modules used by PackageKit with dnf-swdb library.
- Use dnf-swdb shared API to access SWDB in both package managers
- Correctly log every PackageKit and DNF transaction into SWDB
- Provide transaction history support for PackageKit shared with DNF
Goal and benefits
- Better DNF and PackageKit(PK) integration.
- With SWDB integrated both in DNF and PK, it should be possible to install packages via PK and list, undo, redo or rollback these transactions with DNF.
- No unintended user installed package removal hazard
- Better database integrity - shared API
- Better performance and reduced disk usage
- No data duplicity
- libdnf dnf-swdb modules
- Active pull request: https://github.com/rpm-software-management/libdnf/pull/199
- I presented SWDB project at developer conference DevConf 2017 in Brno.
- Nowadays I'm finalizing integration of dnf-swdb into DNF.
- Active pull request: https://github.com/rpm-software-management/dnf/pull/630
- Student of Brno University of Technology, Faculty of Information Technology - Czech Republic.
- 7 years of robotics at high school (8 year). I loved robot programming so I decided for career in IT.
- This is my first Google Summer of Code proposal
- Contributing to project SWDB for DNF 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 which 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.
|1 - 2||June 9.||Design and research||Find out what needs to be changed||List of required changes|
|2 - 4||June 23.||Module integration||dnf-swdb integration with libdnf - evaluation||SWDB integrated in libdnf using compilation switch|
|4 - 6||July 7.||Writing transactions||Writing transaction and package data from PackageKit into SWDB||PK trans data being logged into SWDB|
|6 - 8||July 21.||Reading data||Providing data from swdb to PackageKit(installed packages, updates etc.) - evaluation||PK trans data being loaded from SWDB|
|8 - 10||August 4.||DNF-PK interoperation||DNF-PK cooperation debugging (conflicts, RO mode, packages uninstalled with RPM)||Reading PK trans data from DNF, preview|
|10 - 12||August 18.||Preparation for release||Testing and bugfixing (CI DNF stack tests, data migration from various versions - Fedora, RHEL)||Continuous integration tests|
|13||August 21 - 29.||Submission||Final Evaluation|
- strong experience with this project
- knowledge of DNF and libdnf source code
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.