Revised version of a talk I presented at Ubuntu Summit 2022, with updated GNOME- and Flathub-specific information.
Magic8Ball is a simple GTK4 toy magic eight ball program for GNU/Linux written in Vala using GNOME technologies and making use of Libadwaita. It supports Xorg and Wayland.
How many of you have seen an app listing like this?
How many of you have written an app listing like this?
Ask questions, get psychic answers
Does he love you? Should you have pizza for dinner? Is there such thing as a stupid question? Discover the answers to these questions and more with Clairvoyant, the magic 8-ball inspired fortune teller.
Ask a question, then open Clairvoyant for an answer.
Not satisfied? Ask again, then hit “Ask Again” to try again.
Do what you’d like with the answers—just don’t shoot the messenger!
Let’s look at a more compelling example… this is the same app, but actually taking care to create a great app listing. And there’s even more cool stuff that this app listing can have that I couldn’t fit on one slide.
Spoiler alert, here’s the agenda
Who the heck is this talk for? Raise your hand if you’re a app developer. Raise your hand if you work on the “ecosystem,” like toolkit, libraries, a distro, Flatpak, an app store, or a desktop environment. Raise your hand if you want to help open source apps be successful.
App developers themselves are best suited to know what the app is all about and importantly, how to communicate that.
As a secondary audience, ecosystem people—that is, those who are working on distros, Flatpak, GNOME platform, Flathub, etc.—because it might reveal some capabilities you didn’t know about that could be implemented in your products.
Potential contributors: if you’re looking for a way to improve your favorite app’s app listing, it is good to know what’s possible!
Also remember: games are apps, too!
I hope I’m allowed to say this word in front of the open source community… you ready?
Marketing! Is not a bad word! In fact, I’d go a step further…
Marketing is a requirement for open source apps.
App store listings are marketing pages. There’s no way around it, it’s the same as a landing page on the web or a flyer in the physical world introducing your app to a new person; you can try to be dry and strictly factual, but it is going to bore them. You have to market your product.
Marketing is a requirement if you want people to find and enjoy—and even contribute to—your hard work.
Look at the mainstream, proprietary app stores: popular apps there have paid marketers designing icons, writing copy, and composing screenshots to ensure their app is the one you download. While we don’t have to (or necessarily want to!) do everything like the big app stores, this is the level of detail and quality people will expect when evaluating whether or not they should install your app.
As an example, this is straight from Apple’s website; so in a way, our apps and ecosystem are competing with Apple’s massive marketing resources. And Google has similar programs for Google Play.
On the open desktop, we have to do a great job!
When creating an app store listing, always think from a marketing perspective.
An app’s README on GitHub is a great place to put technical information, but your app store listing should be selling your app to the people you want to use it.
If you’ve never heard of this before, it really sounds like I just made it up; we really like our compound technical words. Let’s look at each word really quick in case you’re not familiar
Software & specs to make open source desktops & ecosystems interoperable
This is a lot of words, but the key here is interoperable.
This is why clicking the icon of a GNOME app works whether you’re on GNOME, KDE, elementary OS, XFCE, etc.
Or, clicking a link in one app opens your preferred web browser, even if they’re totally different toolkits.
It’s also the umbrella for projects like Portals, which are used on every modern Linux-based OS to provide sandboxed apps different functionalities and access while keeping users in control.
FreeDesktop: really important stuff, basically the plumbing between apps on a modern desktop
Software & specs to present & describe apps
This might make more sense when we look specifically at MetaInfo…
<Specification for describing apps />
How to describe apps in an interoperable way
FreeDesktop AppStream MetaInfo: the way to describe apps in an interoperable way!
Still a mouthful, but now you know what it is!
Yes it’s tiny, no I don’t expect you to read it, it’s just an illustration that it’s XML.
If you were to read that tiny text, you’d see (list on the left)
Basically: everything you need to make something like…
How do we ensure quality?
Follow the icon guidelines!
developer.gnome.org/hig/guidelines/app-icons
For example, an RSS reader that doesn’t feature any content by default can be “All Ages”, but the rating for a manga app with pre-configured servers should reflect the content of those default sources.
It is used in placed like elementary OS AppCenter, so if your app is on Flathub and a user enables it on elementary OS, it will be shown there
You could imagine using the brand color in rich ways, like in GNOME Software (this is an old, crappy mockup I made, but shows the idea)
Instead of algorithmically basing it off the app icon on GNOME Circle, we could use the brand color directly
GNOME Software uses the license to determine how “safe” an app is, with recognized open licenses informing the user that the code is auditable
Flathub really wants to improve the first impression on the front page, so they recently added great recommendations, examples, etc. as a first step. In the future, they plan to start enforcing some of these recommendations to be featured.
There’s also a web app to help you write your MetaInfo