= PackageKit Backend for Ubuntu Software Center = This page describes work done by AlexEftimie during GSoC 2011, on adding a PackageKit backend to SoftwareCenter. == Internals and Feature Status == The PackageKit backend has been added as an alternative to the current AptDaemon / AptCache backend. Several code refactoring changes have been made, but at the user level, only a `--packagekit-backend` command line switch is visible. When run with `--packagekit-backend`, the channel pane will be populated only with generic channels loaded from database (this means no ''PPA'', no ''For Purchase''). === What works === * Getting packages, showing them in categories; getting detailed information about a package; * Installing/Removing a package, and also handling dependencies changed * Watching transaction progress and canceling transactions === What's left === * performance issues Viewing installed software takes a significant amount of time, due to calling `resolve` for each package. This must be fixed by caching an all software query; also `update-software-center` is slow, for the same reason. * package the appdata.xml or provide it via repository Currently, this file is generated manually from a set of `.desktop` files, using XML parsing tool at http://gitorious.org/appstream/resources * package/distribute icons Currently, icon names for software programs are fetched from `appdata.xml`, but icon files are not distributed * fix category view The category separation in SoftwareCenter relies on `software-center.menu` XML; the category hierarchy specified there does not correspond exactly with categories that are extracted from `.desktop` files via `appdata.xml`. Either the menu file or the application info generator must be modified, for a perfect match between indexed applications (database) and shown categories (gui). * proper package origin handling When populating database using the PK backend, no package origin information will be stored; instead all packages will be nested under a generic ''Provided by DISTRONAME'' channel. A better solution should be find for getting friendly origin information from PK. == Testing == Grab ''lp:software-center'' and `./software-center-gtk3 --packagekit-backend` === First run === * download a test AppStream application information xml, from http://swarm.cs.pub.ro/~alexef/gsoc/appdata.xml * copy it into `/usr/share/app-info/xmls/` (create the folder if it doesn't exist) * issue `update-software-center --use-packagekit --appstream-only [--local]` to have the database populated with data from the xml previously downloaded * run `python setup.py build` to generate a local `./build/` directory with resources === Dependencies === * PackageKit (>=0.6.16) * pygobject (>=2.90.1) === openSUSE === * there is a packaging request on openFATE [[https://features.opensuse.org/312728|here]] (it also includes link to my personal OBS project) == Contact details == For any questions, check with AlexEftimie, alex3f on Freenode.