PackageKit provides a common API (D-Bus) to perform package management operations on several distributions. It supports several backends: apt, yum, zypp, conary, and so on.

I wrote the Python based APT backend and on the packaging for Ubuntu. The Python backend was replaced by a C++ one.

PackageKit consists of a system D-Bus interface which should be used by package managers (e.g. system updater or application installer) and a session D-Bus interface which allows third-party applications to easily install additional software (codecs, fonts, packages, plugins, ...). The later one is also provided by Session-Installer which uses aptdaemon instead of PackageKit.