[GSOC] Integrating AppRecommender with AppStream

Lucas Moura lucas.moura128 at gmail.com
Tue May 3 21:14:32 UTC 2016


Hello,

My name is Lucas Moura and I am Google Summer of Code Student working for
the Debian project. My summer project is related to AppRecommender, a
Debian package recommender system:

https://github.com/TCC-AppRecommender/AppRecommender

This application works by creating an user profile based on the user
installed packages, this profile is basically the most significant terms on
all user packages. With this profile built, AppRecommender uses Xapian to
query for Debian packages and display the closest ones with the query.

Currently, this application can only be used via terminal access. However,
my gsoc project is to change that, and allow AppRecommender to be
integrated into graphical package managers:

https://wiki.debian.org/SummerOfCode2016/StudentApplications/LucasMoura

I have already discussed about this idea on the PackageKit thread, but
since this approach is now related to AppStream, It is best to change for
the appropriate mailing list. The original thread can be seen on:

https://lists.freedesktop.org/archives/packagekit/2016-April/026411.html

In that thread, I have proposed the idea of creating a lib that would use
AppRecommender as a backend application, and the lib would just be an API
to the application. However, Mr. Matthias Klumpp and Mr. Richard Hughes
raised some concerns over this approach, specially considering the speed
from C > python > C translation and the difficulties of maintaining a new
library.

One proposed approach was to implement the algorithm directly on one of the
libappstream projects. Although this can be done, I am just afraid of
having to maintain the same code on different projects.This would be a
problem if I decide to change one of the recommendation algorithms, since
the algorithm would need to change on two different places and in two
distinct languages.

However, upon reading AppStream docs more carefully, I think my original
approach was really flawed. Now, I think that instead of calling directly
AppRecommender from the lib, the new function on libappstream would just
read the content generated by AppRecommender, that should be able to
provide its recommendations as a valid XML format for AppStream. Therefore,
what I could add to libappstream is way to manage recommendations.
Therefore any recommender system that wants to be integrated with AppStream
would just need to generate a proper recommendation file and place it in an
specific place, so libappstream can read it and manage it.

I think that this approach would not add any new dependencies on
libappstream. But I would like to ask if that is a good approach to follow,
or maybe the path is really to implement the recommendation strategies
directly into libappstream.

Best regards,
Lucas Moura
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/distributions/attachments/20160503/610ba30e/attachment.html>


More information about the Distributions mailing list