Task:Karma for applications

This is an ongoing task, planned to be completed during the current maemo.org development sprint. Any help is appreciated!
Please see the talk page for discussion.

Application karma seeks to provide plausible "score number" for each application in the Maemo application catalog.

The application karma will follow a pattern familiar from Maemo's user karma (see http://maemo.org/profile/list/ and http://maemo.org/profile/view/bergie/), utilizing various sources of information about the application to calculate its activity and importance.


[edit] Goals

  • Provide a simple, unified way for users and developers to judge an application's quality.
  • Provide a distributed quality assurance system for handling package promotion.
  • Provide a fast-updating list of "currently hot" applications
  • Provide a way to rate applications remotely

[edit] Metrics for judging "quality"

These are calculated using information inside maemo.org Midgard database:

  • Number of downloads
  • Number of ratings
  • Average rating
  • Frequency of updates
  • Number of releases available
  • Number of OS versions supported

As well as from outside it:

  • Bug activity (in Bugzilla)
  • Freshmeat.net stats (when the new Freshmeat reimplements their APIs)
  • Blog mentions (via Technorati, using "unixname" as tag)
  • Screenshots uploaded (via Flickr, using "unixname" as tag)
  • Number of contributors in Garage

All karma items are counted once per day, and stored so that the development of application karma can be followed on a graph. The total karma of an application will be available in the application's metadata.score.

[edit] Counting currently "hot" applications

To make a dynamic listing of applications that are "hot right now", we need to store some additional download statistics per application:

  • Total amount of downloads
  • Average downloads per day during last week
  • Yesterday's downloads

These can then be used to calculate whether an application is getting more downloads on a given day than usual, meaning that it is "currently hot".

This should be possible to count via:

current karma = (yesterday's karma - age modifier) + (total download count - yesterdays downloadcount - lastweeks daily average)

[edit] Remote rating of applications

Maemo applications will be featured in other services outside the regular Maemo.org website scope, including the application manager in the device itself.

To support rating applications through these, we should implement an API for rating and commenting applications remotely.

The API could be modeled after CommentsApi.