 Hello everybody, my name is Kaleb Lambert and I've been working on GNOME software for a while now. I'm not sure if everybody knows what GNOME software is. GNOME software is this really nice piece of software that can install applications. One of the things it does is that it tries to make apps look really nice. It tries to make apps look nice so people would want to install them. There's a lot of screenshots and icons and heavy reliance of graphics to make apps look good. Every app that shows up in GNOME software is supposed to have nice descriptions so that people actually know what they're getting into when they install something. GNOME software is basically the application center that is written for Fedora Workstation. It's written by Richard Hughes and I've been hacking on it as well. It's used on Fedora Workstation for four or five releases now. It's starting to work pretty well by now. We fixed a lot of bugs and made it try to make it look good. The technology behind it is that it uses a package kit to actually install software. It has a few other mechanisms as well to install stuff, but package kit is the main one. In addition to what the RPMs, in addition to the metadata that the RPMs contain, there's another side channel that provides screenshots and application descriptions and it's called AppStream. All of GNOME software is application-centric as opposed to being package-centric because it's written for Fedora Workstation and Fedora Workstation is a graphical thing. We are mainly concentrating on installing applications through there. Application is something that we define as something that has a desktop launcher and can be as a window and as opposed to a terminal program. When I put together this talk, I was trying to make it a more practical thing so that people could come to this talk and learn how to add support for their app so that it shows up properly in our app installer. The technology for this is called AppData. It's just a small XML file that is shipped in RPM packages. That XML file describes the app. It has descriptions for the app. It references screenshots and basically that's it. It's really, really easy to write. What I'd like to do today is just to go through the process of writing one app data file just to show how it's done because it's really easy and makes apps look much nicer in GNOME software. The previous thing I mentioned was AppData, but there's another very similar concept called AppStream. The difference between those is that AppStream is actually what GNOME software consumes. AppData is the one that individual packages contain. What happens is that all the individual app data files that package is shipped are combined together into one big XML file called AppStream metadata. That is supposed to be distributed alongside regular YAM metadata or DNF metadata. Also during this process, the process that extracts all the descriptions and screenshots, it also mirrors the screenshots and caches them on the Fedora infrastructure, which makes it possible if you have your own web server, you can easily upload the screenshot there for your own app. You can be sure that when someone accesses that screenshot through GNOME software, it actually uses the cache copy on the Fedora server and it doesn't go downloading it directly from your web server and doesn't de-doss it or bring it down to its knees because so much bandwidth uses. Also the screenshot caching is good for privacy because third parties can't then track what people are searching. It's only Fedora infrastructure that has that info. The current state of AppStream metadata is that we aren't actually shipping it alongside with YAM metadata, but there's a plan to start doing it really, really soon now. What's happening right now is that instead of shipping it with the YAM metadata, it's actually a separate package that has the AppStream data and it's manually updated once a month or so. It's not ideal, but it works because we don't get so many new applications every so often and the old descriptions still work. If you're writing your new update and it doesn't show up in Fedora instantly, this is why because there's a manual process involved for regenerating the metadata package. Right, so how to ship an update in your package? And why? It's needed just to make sure that your app looks as good as possible in Kineum software and it's also required because we decided that it is really important that we only show good apps and so we are only showing those apps that actually have metadata and actually look good. And as it turns out, it's actually a lot of apps that have updated by now. I'm not sure the exact numbers, but it's close to 90% for Kineum apps and maybe 50% for KDE. Actually, I'm not sure if the numbers are right. I was writing those slides on a plane last night. There were the Atlantic and I had no connection to actually look up the numbers, but it's roughly in that ballpark. And app data writing is really simple. It's just one XML file to edit and add a few lines and take a screenshot and that's it.