 DobroRed. Thank you for coming to my talk. First of all, this presentation is online. There are some examples, but I don't have enough time to present them, so you can try them at home later. Let's start with what's FedPak. FedPak is an edge generation technology for building and distribution applications for Linux. It is focused on applications, as an app store on iOS and Android. je sovodno razvujet, zato je stvarzena podljena. Di je to zelo prigovoril. If you publish your applications directly, by publishing them on FlatHub, the distance between the lower profiles and users and the feedback should be much more effective. I will give a few examples regarding myproject, which focuses on web-based streaming services, Spotify in 28 others in integrist in with Linux desktop. It's open source and the technologies involved are GTK, Chrome embedded framework, Vala, Python and JavaScript. In development, this is the application, basically what it does. It runs the interface of streaming service. In checks, JavaScript inspects the metadata and it then provides extra features, such as Linux fetching, media player interface, multimedia keys and so on. During development, I faced many issues, the fragmentation of Linux. The problem is that independent software vendors cannot target something which could be called standard Linux. There was old default Linux data base, but I don't think it's relevant anymore. The problem is that there are various distributions, they include various versions of libraries and various package formats. Typically you need to build one package per distribution because package often changes names, gets split or merged and so on. Bit flatback, you can build one package, one distribution package. The app is running in a sandbox, which is shielded from the jungle on the host OS. You choose the runtime, which provides the user the space for application and the application is run with the same runtime when it's run by the users. Moreover, you don't need to rebuild flatback for new destroy releases, so much more convenient. Nuvala is written in Vala, which is a nice language with C-like syntax. The Vala code is translated to C code and then compiled. There are Vala epifiles, which describes the integration with C and the G object libraries, which is very handy because I can use the GNOME stack with nice syntax. Every release of Vala fixes bugs and improves the epifiles, which is great. On the other hand, it is sometimes done in a compatible way. So I ended up with conditional combination if Vala is very soon, then this and so on. I kept local copies of the epifiles and of course I didn't kept them updated and I didn't receive the new bug fixes. With flatback I can target Vala from SDK, one specific version or I can build Vala from source and include bug fixes and patches. I dropped conditional compilation and removed local epifiles I finally had three events to start a major refactoring. I extended unit test and ran them with ValaGrain. During that I found a few bugs in Vala and reported them or sent merge requests. And the bugs were fixed promptly and I could include them in my flatback and benefit from that immediately. I also test my application with Vala from Bitmaster branch for regressions. Another issue was that bug fixes weren't always reported. Each distribution has a unique set of bugs and there is not just enough human resources to fix them all. So as a developer I could try to find a workaround or suggest users to wait until the next release of the distribution which is not very great. With flatback I have full control of the dependencies. I can add patches to fix bugs and I can even override the libraries from the runtime if it isn't necessary. Another limitation was that some libraries I are not present in all distributions or they have optional features which are not always enabled. So you are limited to common subset. You may need to disable some optional features of your applications depending on the distribution which is quite sad because I spent a lot of time developing even the optional features. With flatback again I have full control of dependencies. I can bundle extra libraries I need and I can make sure that my application provides all features I developed. Novala used to use WebKit GTK as a web-printed engine. The problem was that whereas the development of the web stack was very fast WebKit GTK was updated very slowly. It's much better nowadays but still it was problem in the past. Moreover users wanted to get a bit of flash plugin for audio playback but the media source extension which is needed for flashless playback was experimental and disabled in common WebKit GTK builds. With flatback I could use always up-to-date WebKit GTK and I could enable the experimental features. However it was still not enough because the MSE support in WebKit was incomplete and for example Google Play Music didn't work with that. Flash support was also buggy and for the more there was no support for Widevine which is needed by Spotify and Amazon Music. So I switched to Chromium embedded framework which is not available in any distribution as library. I don't wonder because there are no stable uses and it's quite a mess. But it works and it supports media source extensions and Widevine and finally after years of struggling I could achieve the goal that most Novala apps no longer use flash for audio playback. I think there is only one app left. Common approach to somehow workaround the fragmentation is to target all distributions add workarounds for bugs in a hope that you can drop them in two years. You are disconnected from the platform development because yeah there is new release of GTK but I can use it in two years. And also there is a faster incentive to report bugs and fix them because there is no immediate benefit with flatpack. I can use the latest library stack. I can benefit from new features and bug fixes. I can even help with development by reporting bugs. If the bugs is fixed I can immediately play the patch in my flatpack and even better I can fix the bugs and send my patches upstream. So maybe there are some people who heard of flatpack for the first time. So there is a gentle introduction. Flatpack platforms provide basic libraries and unique tools. They are shared between applications to save this space a memory. They are maintained by skilled people with some degree of quality and security assurance. The platforms are mounted under the user prefix in the sandbox. They are runtime dependency of the applications and are automatically installed. Common platforms are feeder-stopped, GNOME and KDE but they are also platforms which are based on the distributions. I will skip this. SDKs are basically platforms extended with developers and other developer tools such as C header files, package config files and so on. SDKs and platforms usually come in pair so there is free desktop SDK, GNOME SDK, KDE SDK, flatpack SDKs are balltime dependency so only developer needs to install them but not users. And SDKs are mounted under the user prefix in the sandbox. By default the sandbox is very limited and we need to set ex-exit permissions for example for five system access, access to X1, server availand, network access. This is mostly temporary and the long term goal is to get rid of the dangerous permissions and switch to. Portals are used with debas services which run on the host and are called from the sandbox. Actions of the portals are confirmed by the users so he is in charge but it was happening. There are portals for opening, saving files, printing, taking screenshots and so on. Portals are also used for screen sharing in availand which is development in sandbox. The benefit of that is that you develop in the same environment your application will run in so it should be easier to reproduce bugs. The basic approach could be to just launch a bash session in the sandbox and to make all whatever you need. Or you can use GromBuilder or KaiK develop which contains a certain degree of flatback support. For example in this screenshot you can see GromBuilder with demo application depending on Grom platform and you can see the typical actions built-rebuilt you can also export a flatback bundle and you can run the application and in just magic works. However, I don't use GromBuilder I use Nuvola CDK called Elbracid which is basically a flatback which contains all dependencies I need for Nuvola but without Nuvola the benefit is that if I need to debug some list of integration in different distribution I have easiest setup of my environment and just install the flatback execute execute this command right away I don't need to install dependencies on the host of us and so on. There is also Nuvola IDK which is used to develop the web integration scripts the benefit is that the script maintainers don't need to build Nuvola or Vala and whatever I also include Nuvola SDK if you help the scripts written in Python on Bash so all the script maintainers need to do is to install the flatback run the flatback type Nuvola SDK new project edit json file javascript file editor and that's all the final flatbacks I built one flatback for each application independently the builds are fast because Nuvola and all dependencies are already prebuilt in a base flatback and it is just copied in the clean sandbox and it is not built again and then the flatback builder just adds these files and that's it it's really fast because of that I can publish flatbacks whenever I fix a bug and I got really good feedback that the users like that that the bugs are fixed really fast and they can get a new flatback in few days instead of the monos like common distributions I also use circle continuous integration to check the project with Nuvola adk there are also some robots of flatback packaging you need to maintain the libraries in your manifest so I wrote a script which helped me to update manifest with like this versions of libraries it takes version information from this public app and it's quite good of course not all applications can run in sandbox because of missing functionality you just need to talk to flatback developers and explain your needs and they can improve the portals or add new portals another issue is the poor online experience for example in order to get track information for Nuvola with normal package you could write only Nuvola CTL track info but with flatback you need to write this long command or you can create alias and there is a new limiting factor on the host OS and that's the version of flatback and the portals because in all the distribution there is all the version of portals and there are not all features you may need in your conclusion without flatback Nuvola would be stuck with flash plugin for audio playback or probably discontinued flatback provides me with stable platform I can optimize for and rely on cross distribution delivery full control over dependencies quality I can enable or features I developed and by delivering the applications directed to users there is better interaction and the bug reports or feedback are more valuable and effective that's all thank you for attention you can look at the features the question was whether there is any benefit to use Nuvola with Spotify instead of the Spotify application in flatback and I think you need to look at the Nuvola features and then you can decide whether these features could be tempting to use Nuvola or you are happy with Spotify as it is if you don't need any of these features you can you don't get any benefit this is black I don't like black my desktop is not black if I run this on my desktop will it be black or green? it will be black by default but the question was whether there is a interface will be black on his desktop I don't know you can change the theme by default it's dark but you can choose lighting in the application I'm not talking about the Nuvola application I'm talking about flatback and it's access to my preferences for GTK themes you can install themes for flatback and flatback will use it automatically but by default it won't be able to see my themes and my preferences for my desktop it will be seen by default and recent versions will automatically install extension for your desktop theme so you will have the same desktop theme on your desktop or in flatback applications automatically so basically it works the way that you are not going to write you are not going to write so basically it works the way that the application of the GTK in the sandbox is not exposed to the system theming or theme because the theme you have installed in the system is pretty much optimized for the version of the GTK that is in your system and the GTK in that time will be different to reach to different results but basically what you can do like the most popular themes for GTK are also packaged as extensions for downtime and then the author of the extension makes sure that theming was developed in downtime and when you install the application for example from one help it looks as the theme you have installed in the system and if you find the same in flatback it installs as an extension to downtime so I am not sure how many themes you can support it like 10, 15 maybe the most popular ones but it is not like you can it supports anything you can find on the internet Theoretically it could be possible but then like if you use for the system theme and time-dates with the different GTK in many areas it is pretty much better The question was whether Nubelaburg is offline the answer is no it is only smart web interface there are other projects such as Tomahav Polerov I think maybe the Spotify the original supports maybe offline listening but I am not sure Nubelaburg is offline listening and you need to be online someone wants to find