 So, hello, my name is Jan Beran and I would like to tell you something about making flat bags from Fedora RPMs, but because of technical problems, it will be much shorter than I expected. But anyway, so first of all, I would like to say something about flat bags and about the anatomy of flat bag and about how does it work and what is it because I don't know if you are familiar with that or not. Then I will step aside and speak about Fedora Silver Blue because that's one of the reasons why we decided to make Fedora flat bags. Then I will tell you something about Fedora flat bags and what are the advantages and what are the differences in comparison with classical flat hub flat bags and there will be some very short demonstration. So, what is a flat bag? I'm not sure if you know it or not, but a flat bag is some kind of container and what's the idea behind it? I think most of you used RPM or Debian packages or something like that and when you want some application, you have to download the application itself, but many dependencies and it can happen that two or more applications needs one dependency but in different versions and flat bag solves this problem by, as you can see here in this image, by making something, what is called runtime and here in this runtime, there are libraries that are commonly used across many applications and when you want to build a flat bag from the application, you just target specific runtime and you can use libraries which are there, but sometimes it can happen that you need some specific library or some different version of library which is not in the runtime. So, you just grab these special libraries, the application itself and you make one container. And that's called flat bag. And these flat bags doesn't target specific operating system, but specific runtime. That means that if you can run this runtime on your operating system, no matter if it is Fedora or Ubuntu or something like that, you can run the application as well. And the second concept of flat bag is containerization and that means that application in flat bag cannot interact with the host system in any way. You have to explicitly say what this application can do. So, for example, if you want to communicate over the internet, you have to explicitly say that this application will need internet connection. Okay. Fedora Silverblue. Why I'm here speaking about operating system in talk which is aimed for flat bags? Because Fedora is, Fedora Silverblue specifically, is one of the reasons why we decided to make flat bags from Fedora RPMs. Because Fedora Silverblue is pretty solid immutable system. And that means you cannot or you can, but it's not the preferred way. You shouldn't use RPMs and change the slash user and these folders which are commonly veritable. So, you need to distribute applications in containers. And we have two main ways how to distribute these applications. First way is toolbox. There will be another talk about toolbox. So, I will skip it. And the second way are flat bags. But we wanted to use RPMs and advantages which RPMs provides. So, we decided to convert RPMs into flat bags. So, how we do that? We use Fedora modularity concept. So, if we want to convert some application into flat bag, we first make a module. And we have to rebuild everything because flat bag application has its own file system and explicitly slash app. And you have to rebuild all the RPMs which are somehow involved in the application. Because you cannot just grab a binary from slash user and move it to slash app. And expect everything to work. And next, when you have a module done, you just convert it into OCI image. I will skip it. Here, I can show you the application.yml and container.yml which are two files we use for converting RPMs into flat bags. In application.yml, this is, we can say, a module MD file. It is a file which tells you how to make a module from RPMs. In this example, this is application.yml of supertooks. It's one small game. And as you can see, supertooks has no special dependencies. So, there is only supertooks itself. But in case of some bigger applications, there will be also some special dependencies. For example, here, I don't know if you see my cursor, but I hope so. Here, you can see there is flat bag runtime of version Fedora 33. Fedora runtimes are versioned according to the current system. So, now we have Fedora 33 version. And then it will be Fedora 34. And container.yml is a file that tells the tooling how to make a container or flat bag if you want from that module. The most interesting part is finish arcs, which tells you the permissions as I said before. So, for example, supertooks needs to communicate over the internet, play sounds, because there is a socket plus audio. And it also needs, for example, show you something. So, it needs these two sockets. Okay. And now there should be a demo. And I hope I will be able to share my terminal. So, if we want to convert some application, we first need to generate application.yml, in this case supertooks.yml and container.yml. That's done by the tool called Fedmod, which is tool for handling modularity in Fedora, but it can be also used for generating these two files. So, we pass rpn to flat bag subcomment and then we pass I see I have no time, so I will skip it. In full version, we should pass two arguments flatback.comment, which is a module where there are some rpms already built with slash app prefix. So, it can make your application.yml file smaller, because you don't need to rebuild everything. And we just pass another argument, sorry, dash dash flat app. And if you specify the name of the application in flat app, it will look for its manifest and copies permissions. Because permissions are not automatically derived from rpms, you have to write them on your own, but this can make the process easier. You have something to start with. I will skip it because it can consume some time and I have already have them. So, it looks very similar to the two files I showed you. Here is the flatback runtime and supertux rpm. And because I have very little time, I will skip it. The next step is to make a module and OCI image locally. It's done by flatback module local build. Flatback module is similar to flatback builder for flathub packages. We have for Fedora, we have flatback module. It takes some 20 minutes, so I will skip it. But the result of that command is OCI image. And you can just install it and test it if everything is okay. I will switch back to presentation and hope everything goes smoothly now. So, here in the slides, there is the process described a little more better, but I have no time to go through it. And if you are a little interested, I know this talk wasn't quite good, but if you are at least a little bit interested, you can visit these four links. There you can find some tutorials and better versions of what I have said before. And here you can, for example, find some packages, some rpm packages, which should be quite easy to convert into flatback. These two tutorials, first and third, there are some text versions of this presentation, and they should teach you how to convert your application. And the last one is the same, but in Czech language. So, if you can speak Czech, you can visit this one. Okay. And very briefly about the near future of flatbacks. In current state, we would like to introduce flatbacks also to RHEL, and we have some ideas about making flatbacks from comparer repositories. And we would also like to include community because now only very few people are making flatbacks. But the process is very similar to making rpms. So you can definitely at least try it. And maybe, for example, if you maintain some rpm package, some application, you can try to convert it to flatback. And we would also like to automate the process because now it's quite manual. Like you have to fire all these commands and see the result. We would like to be able to only passively watch the updates and rebuild everything in Fedora infrastructure. So, this is the plan. And here in the presentation, there is also a command how to activate Fedora flatback repository in case you use Ubuntu or something like that, and you want to try Fedora flatbacks. So, if you have some questions, are there any links for the copper integration project? There are no links for the copper integration because now it's only an idea. We are working on that, but it's nothing in the process now. Slides can be available. If you can go to Discord, I will share the link, or I will try to add to chat as well. How are these grid branches named? Most of you specify the runtime Fedora version. It would be nice to just pick it based on the branch name. What happens when a new Fedora branch is created? I'm not sure what branches are you talking about. If you mean branches of the runtime, it is specified by the current version, and if you are talking about something else, we can discuss it on Discord.