A long time ago, GNOME software used to show star ratings as popularity next to the application using the fedora-tagger application. This wasn’t a good idea for several reasons:
- People can’t agree on a scale. Is an otherwise flawless application with one translation issue 5 stars or 4? Is a useful computational fluid dynamics application that crashes on startup but can be run manually on the command line 1 star or 3 stars?
- It only worked on Fedora, and there was no real policy on how to share data, or the privacy implications of clicking a star
- People could “game” the ratings system, for example hardcore KDE users could go through all the GNOME apps and give then one star. We then limited this to only rate applications that you have installed, but it was really a cat and mouse thing.
So, lets go two steps back. What is the star rating trying to convey to the user? When I look at a star rating, I want to see a proportional number of stars to how awesome it is to me. The rest of this blog tries to define awesomeness.
As part of the AppStream generation process we explode various parts of the distro binary package and try to build metadata by merging various sources together, for example AppData, desktop files and icons. As part of this we also have access to the finished binary and libraries, and so can also run tools on them to get a metric of awesomeness. So far, the metrics of awesomeness (here-on known as “kudos”) are:
- AppMenu — has an application menu in line with the GNOME 3 HIG
- HiDpiIcon — installs a 128×128 or larger application icon
- HighContrast — installs hicontrast icons for visually impaired users
- ModernToolkit — uses a modern toolkit like Gtk-3 or QT-5
- Notifications — registers desktop notifications
- SearchProvider — provides a search provider for GNOME Shell or KDE Plasma
- UserDocs — provides user documentation
These attempt to define how tightly the application is integrated with the platform, which is usually a pretty good metric of awesomeness. Of course, some applications like Blender are an island in terms of integration, but of course are awesome. We still need new ideas for this, so ideas are very much welcome.
There are some other “run-time” kudos used as well. These are not encoded by the builder as they require some user information or are too specific to GNOME Software. These include:
- FeaturedRecommended — One of the GNOME Software design team chose to feature this
- HasKeywords — there are keywords in the desktop file used for searching
- HasScreenshots — more than one screenshot is supplied
- MyLanguage — has a populated translation in my locale, or a locale fallback
- PerfectScreenshots — screenshots are perfectly sized, in 16:9 aspect
- Popular — lots of people have downloaded this (only available on Fedora)
- RecentRelease — there been an upstream release in the last year
When added together, the number of stars will correspond roughtly to the number of kudos the application has.
You can verify the kudos your application is getting by doing something like:
killall gnome-software gnome-software --verbose
and then navigating to the details for an application you’ll see on the console:
id-kind: desktop state: available id: blender.desktop kudo: recent-release kudo: featured-recommended kudo: has-screenshots kudo: popular kudo-percentage: 60
Comments (as always) are welcome, as are new ideas on how to test for awesomeness.