← Back to team overview

software-store-developers team mailing list archive

How to implement "Recommended for you"

 

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Matthew McGowan wrote on 13/06/11 23:22:
>
> My only concern is recommendations quality. 
> 
> In all the mock-ups recommendations are prominent.  Are we able to
> provide quality recommendations at this point?  The zeitgeist based
> recommendations we have at the moment seem lacklustre IMHO.

The current recommendations seem to be based on filetypes, which was an
interesting idea, but I doubt it could ever produce good results.
<http://launchpad.net/bugs/745662>

>                                                              I know
> there was some exciting conversation at UDS about tapping RnR and
> contacts to make suggestions but when would this likely be ready?
>...

I guess in some cases basing it on contacts would produce results better
than basing it on Ubuntu users in general. For example, if you had a lot
of classmates or colleagues as contacts ("oh, everyone else here is
playing Hedgewars and chatting on Mumble, maybe I should too").

To start with, though, let's design recommendations assuming that we can
use ratings but not contacts yet. We can always juice them up with
contacts later.

On Friday I identified six problems to solve for each of these new
features: generation, storage, serving, displaying, caching, and fallback.

So, here's a straw-man sketch of what those might look like for
recommendations. Please, everyone pick holes in it. :-)

Generation

    By default, the "Recommended for you" box contains only a "Turn On
    Recommendations" button, and an explanation that turning them on
    will submit data about what software you have installed. When you
    turn it on, USC securely submits to the server a list of all the
    packages you have installed, together with a UUID and (if you're
    signed in) your SSO ID to link with your ratings. So you don't need
    to sign in to an SSO account to get recommendations, you just need
    to click one button.

    Whenever you submit the data (which is whenever you install,
    remove, or rate anything subsequently), the server uses a
    recommender algorithm
    <http://en.wikipedia.org/wiki/Recommendation_system#Algorithms> to
    identify the ~50 packages you don't have installed that you're
    most likely to rate as excellent.
<http://cacm.acm.org/blogs/blog-cacm/22925-what-is-a-good-recommendation-algorithm/fulltext>

Storage

    The server stores the list of each participant's installed
    packages, and a cache of the recommendations generated for them.

Serving

    When sent a request containing the UUID, the server returns a
    space-separated ordered list of packages representing the
    recommendations for that UUID.

Displaying

    USC asks the server for updated recommendations whenever the
    feature is turned on and, since it last requested them:
    -   you've installed or removed anything
    -   you've rated anything
    -   at least a week has passed (in case anything hot has been
        released since then)
    -   the cache is missing or unparseable.
    The top ~6 recommendations are shown in a box on the home screen,
    with an "All" link to a separate screen to show them all.

Caching

    USC caches the list of recommendations.

Fallback

    If USC can't contact the server, it displays the cached
    recommendations. If no cache is available, it either tells you to
    connect to the Internet or to try again later, depending.

What have I got slightly wrong? What have I got completely wrong? What
have I missed? What have I included that's unnecessary?

One thing I am really fuzzy on is what should happen if you use multiple
computers for different purposes. They'll have different UUIDs, but
you'll be signed in to the same SSO account.

Cheers
- -- 
mpt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk33McsACgkQ6PUxNfU6ecoM9wCdFOwSRU+bnDk6wo9QT51nFhhg
ocEAoNJfypfiquED4NLF2B/ZsBlUt+eg
=qY98
-----END PGP SIGNATURE-----


Follow ups

References