 Okay next talk gonna be Getting our software on user sense and I'm happy to introduce you Alex. Enjoy Well, we need me thanks for being here I'm going to talk about getting the software and the user's hands. This talk is going to be a bit about Spelling the obvious because sometimes it's needed There's a lot of assumptions that we're taking for granted and I would like to well challenge some of them and some other just Well discard them To get started. My name is Alish. I I work for blue systems and during the day and during the night I do the rest of the things I do just mostly I'm part of the board and I develop in several KD projects like K develop and Katie at you and so on Also, I have a life outside of Katie Some people like to know that Sorry Yeah, apparently have a cat. I can tell you about him later So today we're talking about we're people who makes software who makes applications and What does it look like our our work and as Katie as a as a community? What do we do? the developers in Katie what what we do is We push our code to get and then there's two kinds of projects some of them are Released through the release team and the magical releases. So you just put the things in the right branching it and they have automatically Appear in in the user system somehow There's another kind of projects which is the ones that we used to call extra gear now We don't really have a good name for them But basically instead of having a release team you get the release team hat you put it on and then you create a package out of the software the the code we have In git and then some other sources such as the translations our place somewhere else and then The icons can be also in weird places and so on but essentially what we are doing then is is we release tar balls tar balls are The obvious I was talking about They are source code and they are useful for not really anybody because it's basically redundant with the what we have in git and It's not something that the user can use as as is when the user definitely he will have a compiler He will have All of the libraries in his system and he can compile all of the stuff But essentially this tar ball is not fun to use especially taking into account that people are used to things being reasonably automatic lately and And so on nobody wants to spend 20 minutes or even one hour or five hours to compile the applications so This has been like that though for the last 20 years three server projects release tar balls and then there's People from the woods who come and turn those into things that can be used by by by actual users And this has a certain amount of problems that I will I will I will enumerate a little bit To be able to explain my point of view. The first one is that Since it's the People from the woods who come and turn the the the source code into things that people can use It's them who decide what versions are people allowed to to be using and That can be a bad thing It's good. It's a good thing that there is somebody who is thinking about the user and deciding what think the people should be doing But on the other hand as developers we we like to think that we work for the user And that we work for the people and then when we fix something we expect it to get to the people If the last table version is not on the people's and our users computers we get frustrated This leads to a lack of feedback the if I talk to somebody who's using an LTS release about K develop he will tell me about he will give me feedback about the problems He we used to have in 2012 or in 2014, but not the problems we have now. So it will be a Sad Conversation where he will tell me yeah, we have this problem and then I will say yeah, I remember we something like that Bad times right and then he will not and say yes, I use a stable system So that's why my system is not working or your application is not working and the The problem can be extrapolated to all of the most of the end user application that the the people are using because most of the rules that Are being followed for the for deciding which software to bring to the user are Thoughts for system components such as open SSL or The kernel but not really for Katie at the applications or K develop or office switch, right? But things are like they are right and then as well in Katie We are not only about Linux. We try to think about other platforms because we think it's important and then those minions from the woods Like Linux, but apparently they don't like compiling things for other applications of platforms They don't do windows things. They don't do OS X things. They don't do Android things which are platforms that We like it or not. They're very important like the people we want to get to are often in these platforms and And we want to serve these people as well Despite their lack of taste when it comes to choosing an operating system or a kernel for that matter So anyway, we need to find solutions for that problem for the other platforms because Nobody's going to come from elsewhere and solve the problem for us and in the end We've had to solve the problem as well for for other cases such as the CI. We have an immense set of of computers in the Clouds that are already compiling everything we're doing and in a more very similar Way than the distributions are compiling the things. Of course, there's technical differences, but most of them are not very interesting and In general, it always seems a logical and a good idea that we could be leveraging that But at the moment what we're doing is just throwing it away and That's what if I think about how the communication goes it it's a bit like this So us as developers we have some things on get those things We get feedback from the CI the CI tells us some things about those but the things that We know about for example that the CI is trying those things are discarded because we don't nobody cares about what these computers are doing Right. We just cared about about the warnings at least nowadays on the other hand like I said that those things we have On on get the developers puts on get Is a feedback that the distributor gets and then the distributor pushes the problem the server to the user And then the user has something that some developers worked on in the past by Random tea depending on the distribution you use in fact one of the big Decisions you take when you choose the distribution or another is whether this tea is going to be bigger or old, right? Like the arch Linux user will tell you he likes arch because he really wants to use a lot stuff And then the Debian person will tell you I really like to use old stuff. It doesn't really work this way But it feels that way But in general what the part we're interested in is the red line right like all of the developers or Maybe 95% of the developers in Katie are interested in in in making things for the user making sure that the user is Fed the the best software we can offer him right and And when the user gives us feedback, we don't want the feedback from something that we already Produced in the past, but we want something that is the freshest the possible and and well As Katie and as the people who care about about this problem it sounds like it should be our UT a little bit to See how to improve it prove it So to spell it a bit the problem is that we're not being efficient at solving the problems of the users when the user has the problem is Not at the moment where we can Solve it very often We have some mechanisms, right? Some some of the things we we try to do is to have a separate branch which is basically It's basically what the code used to be when we released that version and We solve things over there and then release Those things from the past again, but that has problems as well, right? It has problems because we have to spend time making sure that some other branch which is basically nothing that The current development team has in his mindset. We're we have to care about it and Then we also have the LTS releases, which is the same solution, but just at It's making the problem a bit a bit bigger, but We still make sure that the people who are using things from one year in the past. They are Not really miserable, which is a good thing But it's still not the solution so when we talk about we want to provide the people the best solution the best Linux operating system that we're looking for we're not talking about Having lots of branches and lots of of stable releases at least that's that's how I see it And I am confident that somebody should or would have to Tell me I'm wrong But I don't see that this is going to be the way that Linux is going to become stable It's going to become useful that the ways I see Linux being useful is by making sure that what the The community spends their time on is the things that the the the users can profit and benefit from so What's the what's the conclusion there the conclusion there is that everyone is sad developers are sad because they spend time fixing things and The users keep Being sad because the things that the developers Sadly did wrong they cannot leverage them and the distributors are in the middle So if a user asked distributor, he will tell you that the developers are doing the job wrong And if the developers tell the distributors the distributors will say well That's our rules and and we need to be played by them because otherwise the wall is craziness, which is true but then Well compromises, I guess I don't know The CI is always sad Because it's doing so many things and nobody's using them, right? So we've been talking about distributions the new trend nowadays is to talk about Phoenix bundles I'm going to talk about a little bit about the bundling bundling systems We have nowadays and then I will talk about the other platforms I want this second part of the presentation to Provide a bit of perspective on how I think we could could solve the problems of outline Otherwise you would be all sad as well when you leave the room and that wouldn't be nice That's why you also make these bad jokes because it's good for the for the brain So knowing this problem one of the big companies in the in the ecosystem I Want to say redhead, but theoretically this is a no idea I don't know. I'm not gonna get into into politics anymore It's interesting because they have exactly the same problems as us and they are trying to solve it How are they trying to solve it? Well They came up with a format where you can Compile applications as upstream and then you can distribute it to everyone who uses Linux These more or less works the idea how it would work on flat back is that when you use an application This application would be run on a sandbox environment and then every organization such as LibreOffice, GNOME, KDE could have a repository or 23 and then you could get the software from it then This is what So to create those packages they came up as well with a format so that you can create the packages easily They support something they call platforms. So since we don't want to have huge packages They they give you the possibility to create for each application one version of what we could consider is the SDK of the platform We use that on on on other platforms like Apple or Windows we have some SDK which is a base where you can build all of the applications That's something that that wouldn't work on on Linux or at least that's not how we work So basically each of us can decide to use a platform and then live with it What I did when I started looking into Flatback is create one a Big package kind of thing that has all of cute it has all of the key frameworks and a couple of components we need to integrate properly and then go by it So basically you say which is the runtime you're using which is the SDK thing then the name of the application. This is the Things you want the sandbox to expose and then you list the modules you want to have compiled within your your bundle It's interesting to note that Everything that is not part of the platform is part of the developer to decide To bring in one of the big problems we have nowadays with the current model of package systems is that When you're developing your application, you have to you can't assume that any of the libraries around you is going to be consistent and That's a problem because some versions will have some problems and some other versions will have other problems The solution is clearly always let's fix it. Let's fix it upstream and make sure everything works But when we want to provide an auto-contained Solution we often want to be able to say well That's what what it looks like for me And that's what it's going to look like for my users and it's it's really powerful to be able to say I've tested that you can use that other than I tested this code send it to the Sky and then you will get something that it's an outcome and probably will look similar to what I sent But you never know that it's exactly the same. So here Specifically I get to say Which is my application which is the the libraries I depend on I can specifically say which are How they are compiled so I have full control of them and Then I get some output that is what the user would get Also, it's not really necessary to use this format. There's More hackeric ways of getting a package. It's just convenient. Did you have a question? You know these girls have these deaf package and then the binary package for libraries It's more or less the same. So you don't want to have a huge runtime You don't want application to require a huge runtime, right? So some things will be stripped out of it because are things that they are things that you only need for compiling applications So it's just split Then there's nappy which is Similar solution also to be able to run applications on every Linux by every little thing in every Linux distribution to some extent it's also using some unboxing and they use a partner for the sandboxing and Instead of having this repository for each distribution they more like plan to provide a huge kind of store To to offer all the applications where you can list them you can have them up there some rating reviews and stuff like that and They also have their own little Format we can look at it a bit So that oh of course not But let me see if I can get internet connection Well, it will take a while Anyway, maybe it's it makes sense to get back to it later If I don't have it yet, I did have it so that's that's the example that they they suggest So it's obviously the nice one But it can give you a bit the idea. So you basically Sorry Yeah, it's a good idea thinking how this isn't off Well, kind of basically here. It's interesting. They are using a lot more the Semantics of of Ubuntu and devian packaging, but basically you pull the dependencies you need as well Here they're talking about binary packages and then you explain a bit how you want it to be executed since all of those systems need some kind of magic to happen to To make sure that the applications will run properly and we'll know about the right environment variables and the right Places of the system. They usually have these things here. They're talking about the Qt5 launch But I mean that's what it's going on there I Want to show as well another example Which is using neon so in Katie we have Advantage that a lot of things have been already being packets for Ubuntu So this is for an application as well So what they're doing here is instead of of compiling the application when you create the the bundle is already Pulling the the application itself and and putting it in the package and then it more or less works What what I really like about these Processes and I think it's something we should look into is to make sure that it's a developers that Create those packages because it's a developer who tests what the end user will be using and It's not some machine that produces something and then it's goes untested That that could be bad. I don't really have good solutions for that yet because we're not doing it so Well, oh, so if you have questions about those you can ask Scarlett and Harold they know more about it than I do and Then the third I wanted to mention is up image Up image The developer is also here in the room. So I will be a bit careful with what I say I don't want any tomatoes but the idea a little bit is It's a very different approach. The other two is about providing something part of the system that We'll be able to execute applications here. What we're talking about. It's a system that will You download the file you click the file and the application is executed deal with it so the It's relying on how Linux works and how Linux has been working for a long time So the advantage clearly is that it's retro compatible by some definition of retro compatible I don't know if it's very easy to be able to tell whether an application is going to work on any system or not It's probably not possible But then it's not possible with snappy or flatback anyway as well because you need to be able to have the runtime on all systems which they want The big difference as well is that the other two solutions provide some boxing solutions Which is important because here we are talking about users installing binaries from random places from the interwebs, so Having some kind of security is is a good idea up image leaves that up to the system. So Well, since it is retro compatible It means that on the normal systems you have nowadays there won't be any kind of of security So you will have to trust whether you're downloading it from Maybe in the future this can be looked into Anyway, you can talk about that with Simon. I don't know anything about it Yeah, we can look at the recipe for K develop for For up image it's a bit a bit Scary, so I will just say take into account. It's a complex application. Don't Don't expect something big, but it's basically a by script So I don't know if you saw there was a docker thing before the idea is that you create a docker with a very old Linux system such as CentOS 6. I think it's they're using and then you Compile your pool you compile all of the dependencies you install them somewhere and then out of it you create the package So as you see it's what I was saying it's The Linux we are talking about we're talking about things that have been possible to do on Linux since long time it just we're doing it now because now it's trendy and Ten years ago. It wasn't handy But some of these things probably should or could have been able to be done back then Then on Android we're doing something similar Android I started working on it with the idea that it's when you create the when you develop the software On using the same build system and build directory you get to generate the APK Which is the thing you send to the device or to the app store. So it's part of the development process Here it's the documentation. I don't I don't know of any person that has a Scripted it's obviously possibly possible to script. You just need to script see make make make install and then make create APK This is all the documentation we have What we tried there is to make sure that it's the same development process that that you use on on Linux Interestingly, it's the opposite way of how all of these systems work on on flat back. They created their own tooling So if you want to develop using flatback from your application from K develop What you should end up doing or you would end up doing is calling the flatback tools that we'll call the source code somewhere But you won't be able you won't be calling make theoretically or You will be calling make through flatback so that things happen On what we're doing on Android is we're just using normal CMake and cross compilation on on Android OS X The new trendy thing on on the KD cross compilation world nowadays is to use something we call a merge This is This is Kate I think I'm not seeing it from here Yeah, so here you see there's a weird loop. It's because they try to compile K write and Kate on the on the same script But basically what it does is? That's the icons remove the things they don't want and then they create the DMG to With the Mac deployed cute thing Yeah, that's only for deploying isn't it well there There's been this tool for and I forgot windows But what I wanted to say is that on OS X on windows? We're using some tool that was created for the KD windows guys that basically pulls all of the dependencies and outputs lots of binaries and From there we create the formats that are used for on those platforms Let's say an MSI for Windows and the MG for For for all sex, but what we're trying here is on all of those platform firms to be Like the most native as possible right like to make sure that the what the user gets from us is something similar That what the user would get from another normal project in in the platform so to sum up we have an opportunity to create a better flow of a better experience between What the user has with and what the developer is offering and what the developer can offer when the user is not happy We don't want to compromise the stability actually having applications outside of the system construction part I Think that it's a good opportunity for so that distributions can rely more on LTS services services solutions, so You won't have to upgrade your Linux distribution so often as soon as you can just upgrade the applications Which is actually what you often want to have up to date right that what you usually interact with? It's with with Kate you want to have all of the features on Kate on K develop you don't want to miss out on those but One is not often really eager to have The last version of network manager it can it can happen and on those cases you will have all of the Linux possibilities But I think that for a user it will The bundling solution makes the most sense when When using an LTS solution Which means happy users and happy developers because we have these Cycle of feedback solved and the system distributors they can focus on making actual Secure and solid systems and that they don't have to be worried about the packaging of all the applications Which I understand it's a problem at least to some level right Because then they need to have these two heads like the people are asking them for Never releases, but what their problem usually is is that they want to offer really good SSL a really good kernel a really good base but An application doesn't applications don't play by the same rules Then as as KD we need to also decide a bit how we would like to work like is it really the developers who need to be providing those packages or Should it be the CI system or the CD so continuous distribution system? Or should we the be the release team that they're outputting all of that? I mean everything has ups and downs. Nobody likes to have to test a package or nobody likes to have to Well compile something weird, but then on the other hand It's it's useful and it will give us the that experience I was talking about that you're testing the same thing that the user is I Think it's related to the that problem that we want to make sure as well that Those new systems that are starting are really part of the development process So it's not ideal that the developer is using For example, let's say may make install for for using his development And then when he makes the final version he starts using the snappy or flatback or whatever he's using I think ideally the developer should be compiling every time the the thing that will be Tested in the end and that what we'll also make sure that the the thing that has been tested and that has been developed on He's the thing that you're using you don't want that on the last step you see to see that lots of assumptions are broken and then we need to make sure that we Done By turn on hands we need to make sure that security isn't Compromised Linux hasn't had lots of problems because of viruses and one of the big reasons for that has been that most of The software we've been getting is from distributions at least that's my impression you can correct me if you think I'm wrong But that's my impression Having things coming from elsewhere could be a problem All of us we've tried if you use Android you see that whenever you want to install something that coming from outside they made you Check out some checkbox That That is saying basically don't let things come from the outside It's not that things from the outside are bad by definition, but while trusting human nature is not also ideal on every case We also need to make sure that Adapting these solutions is bad for When it comes to integrating with the system being in a sandbox environment. It's good. It's great makes everything more Makes everything safer, but then it it is a barrier of communication you have with the whole system It's not bad bad by definition, but it will it will pose problems in the Moments and we need to solve them and it's good that we solve them as early as possible So we see them coming an example is that it's really common nowadays that applications talk with things in the system through debuts that doesn't really work by default on on any of the Sandboxing systems not on on flatback not on snappy it's possible to do and On the desk the test we've been doing it's it can be done But then it's something you need to request and it's something that you need to take into account That's all and then system resources. We don't want that The user by adopting these technologies. He starts wasting his system resources that he has paid for When buying his laptop just because there's a new fancy technology. We don't want less memory by default We don't want less this space I mean we need to make sure that we're doing good good use of the resources Some might be lost, but we don't we need to make sure we're not going back by orders of magnitude That's that's my perception And now if you have any questions you can make any questions So you presented like three different solutions, right? I was wondering if any of these have Have an answer for like optional dependencies because traditional Distributions had like you had K developed and you had the PHP plugin which you can install and then you get a new feature in K Can you do that with this? It's possible to do. It's not trivial So both of them they have on snappy they call them Interfaces yes on on on flatback. I don't remember, you know Yeah, well anyway, the problem is that you need to make sure that the The whole build dependency tree is the same right because otherwise people I have people things may not Work together properly and then you would have problems and I think that one of the interesting parts of this is that Maybe then it's K develops responsibility to offer PHP in in in the bundle. I mean it shouldn't be that hard, right? Well depends on the case right there is this desktop environment I think it's called plasma which has plugins that are called plasmoids and you don't want to install them all by default, right so Well, another another interesting discussion is whether we would make sense to have plasma as As a process or the plasma shell in a bundle, right? it would have good things but then plasma especially it's one of those things that connects to everything like crazy and Well, I don't know we should look into that at least at some point. Maybe Which provides the basis for the actual Samples application so it can't be in the sandbox. It must be outside challenge accepted Shit, I said that Sorry, I think you need something outside Which would present you a window like for file dialogue or something like that at least that could be queen as well, right? Sorry, that could be queen as well, right? What queen what is the window manager? I give it now. Okay. Yeah. Yeah, that's that could be also I doubt Quinn we can make it a bundle Maybe we can I don't know. I mean we definitely can we can also have a demon, right? It it's not like we're forced to take an approach Anymore question? Yeah. Hey, I'm Simon. So I'm the app image guy I just wanted to clarify one point about app image Which is actually not so much a system for building what's going into the image, but really a format for The image itself. So it's it's a bundling format, which doesn't define what you put inside Which is entirely up to you you can think of it as Basically a disk image that is mounting itself when you execute it and then executes whatever you put into that disk image So far the project hasn't been about how you create that stuff that goes into it So in theory you could use existing Dab files unpack them put them inside or you can go the way shown here That's obviously much more work by spinning up a centos virtual machine and compiling stuff there. So By the way, I will be holding a lightning talk about app image It's actually the very last one in the very last room today So if you have more questions or would like to chat about app image, I would be happy to see you there Thank you So there seems that we are back at having two standards at least to do the same thing maybe three If you had to bet money, where would you bet your money? I? Don't want Come on I'm not I'm not gonna say that You can't we'll have to pay for a lot of your you want to answer and it's not gonna be recorded as well But no more questions. Anyone else? No one okay, that's your text. Thank you