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

— has an application menu in line with the GNOME 3 HIG HiDpiIcon — installs a 128×128 or larger application icon

— installs a 128×128 or larger application icon HighContrast — installs hicontrast icons for visually impaired users

— installs hicontrast icons for visually impaired users ModernToolkit — uses a modern toolkit like Gtk-3 or QT-5

— uses a modern toolkit like Gtk-3 or QT-5 Notifications — registers desktop notifications

— registers desktop notifications SearchProvider — provides a search provider for GNOME Shell or KDE Plasma

— 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

— One of the GNOME Software design team chose to feature this HasKeywords — there are keywords in the desktop file used for searching

— there are keywords in the desktop file used for searching HasScreenshots — more than one screenshot is supplied

— more than one screenshot is supplied MyLanguage — has a populated translation in my locale, or a locale fallback

— has a populated translation in my locale, or a locale fallback PerfectScreenshots — screenshots are perfectly sized, in 16:9 aspect

— screenshots are perfectly sized, in 16:9 aspect Popular — lots of people have downloaded this (only available on Fedora)

— 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.