1 00:00:00,497 --> 00:00:07,277 Cool. So today I'm going to talk about Linux. 2 00:00:07,597 --> 00:00:11,077 I'm going to do a little bit of a different presentation than I would normally do. 3 00:00:11,937 --> 00:00:15,937 Actually, I will be doing a different presentation than any sane person would do. 4 00:00:16,837 --> 00:00:21,737 This is all of me. My name is Aleix. I am from Barcelona. I'm living in Berlin. 5 00:00:21,857 --> 00:00:26,337 I am living in Berlin because I went to work for Ambition to put KT software 6 00:00:26,337 --> 00:00:30,637 on and we learn things on Mercedes cars but I've been doing kiddie stuff for 7 00:00:30,637 --> 00:00:33,537 ages and I'm also the kiddie beat president now. 8 00:00:35,897 --> 00:00:38,937 Normally when I or like I 9 00:00:38,937 --> 00:00:42,257 said saying people would do the presentations 10 00:00:42,257 --> 00:00:45,337 they say well I'm doing this presentation from this perspective what 11 00:00:45,337 --> 00:00:49,077 I'm gonna try and do today and maybe I will succeed is 12 00:00:49,077 --> 00:00:52,237 to like sandwich all of these personas into one presentation 13 00:00:52,237 --> 00:00:56,317 and try to give you um well somewhat 14 00:00:56,317 --> 00:01:00,317 of a combined experience of how everything uh 15 00:01:00,317 --> 00:01:03,337 feels uh from 16 00:01:03,337 --> 00:01:07,957 the different perspectives uh from the perspective of um while doing a kd developer 17 00:01:07,957 --> 00:01:12,817 and seeing your software being adopted by another company and how they adopted 18 00:01:12,817 --> 00:01:20,237 from the perspective of um being an integrator of free software in these companies 19 00:01:20,237 --> 00:01:23,077 and seeing what kind of practices are useful to be done, 20 00:01:23,797 --> 00:01:27,477 are useful when they're done by an open source project. 21 00:01:27,697 --> 00:01:34,357 And then the perspective of being in the KDV, being a person in general in the 22 00:01:34,357 --> 00:01:40,497 community that tries to think how we can do our products a little bit better 23 00:01:40,497 --> 00:01:42,077 and a little bit more smart. 24 00:01:42,557 --> 00:01:46,097 And while seeing which things works on either side, right? 25 00:01:48,048 --> 00:01:53,608 Let's see. Maybe it will be chaos, maybe it will be interesting for everyone, 26 00:01:53,808 --> 00:01:57,808 or just probably a little bit of both, like everything is in life, right? 27 00:02:00,148 --> 00:02:05,568 So, on the title I was talking about embedded Linux. Embedded Linux is something 28 00:02:05,568 --> 00:02:09,088 that I had been, and I imagine that all of you who have not been working on 29 00:02:09,088 --> 00:02:12,008 it professionally, you've seen the term being used. 30 00:02:12,008 --> 00:02:18,228 And it does feel a bit diluted and you know and understand all of the technologies 31 00:02:18,228 --> 00:02:21,988 that are part of it but they're clearly being used in a different way than we 32 00:02:21,988 --> 00:02:28,968 normally do this is the definition that windriver.com gives windriver being 33 00:02:28,968 --> 00:02:31,308 one of the companies that have been doing, 34 00:02:31,908 --> 00:02:34,788 embedded links forever since forever so i thought 35 00:02:34,788 --> 00:02:37,668 uh let's go with this one because they did it 36 00:02:37,668 --> 00:02:40,568 right like when embedded has been 37 00:02:40,568 --> 00:02:43,428 presented to me in the past people tell me about no no 38 00:02:43,428 --> 00:02:48,408 no it's about uh systems that have not a lot of memory or it's about systems 39 00:02:48,408 --> 00:02:53,228 that uh i don't know they're smaller right but like none of these are actual 40 00:02:53,228 --> 00:02:59,028 um things that define a system that would say you need to work differently or 41 00:02:59,028 --> 00:03:02,588 you would need to make an operating system in a different way and even Even when Wind River, 42 00:03:02,748 --> 00:03:09,508 who are people who sell themselves as creators of embedded and embedded Linux devices, 43 00:03:09,868 --> 00:03:12,408 the definition they give is also kind of sparse, right? 44 00:03:12,548 --> 00:03:19,368 They talk about using the same Linux kernel, but they want higher reliability, they want. 45 00:03:21,708 --> 00:03:25,788 Security, tighter resource availability, right? None of these things are super 46 00:03:25,788 --> 00:03:28,128 specific about any embedded device. 47 00:03:28,128 --> 00:03:31,488 And even if we think about embedded devices, like, for example, 48 00:03:31,528 --> 00:03:36,328 when embedded maybe started to appear in the KDE spheres where when, 49 00:03:36,408 --> 00:03:41,128 like, smartphones started to be a thing and, like, they were already not that 50 00:03:41,128 --> 00:03:42,608 different from what we have on a laptop. 51 00:03:42,808 --> 00:03:46,248 And, like, for example, what we do in Mercedes, like, the computer that you 52 00:03:46,248 --> 00:03:51,188 have on those cars is not all that far off from this laptop or any smartphone. 53 00:03:51,608 --> 00:03:59,408 So, like, we're not on the crux. But on the other hand, how these products are being created is very, 54 00:03:59,468 --> 00:04:05,568 very vastly different from how we do it in communities and the traditional desktop 55 00:04:05,568 --> 00:04:12,368 and probably even server Linuxes, how they're created if we exclude the whole container part. 56 00:04:16,873 --> 00:04:19,633 We, as KDE, we do care about all of those things, right? Like, 57 00:04:19,633 --> 00:04:22,413 we care about security, of course we do. We care about resources. 58 00:04:23,673 --> 00:04:27,653 Do we not care about resources as much as an embedded device? 59 00:04:27,793 --> 00:04:29,473 It will definitely depend on the hardware. 60 00:04:29,673 --> 00:04:32,553 But, like, resources have been a big thing for us. And, for example, 61 00:04:32,553 --> 00:04:37,953 when we, like, PinePhone came to us and they told us, let's put together a device that works. 62 00:04:38,073 --> 00:04:42,173 Well, we did have, we were able to put a lot of effort in resources that actually, 63 00:04:42,193 --> 00:04:46,433 like, had a very big impact on the rest of our products, right? 64 00:04:46,433 --> 00:04:48,773 So we do care about that, and that's for sure. 65 00:04:50,073 --> 00:04:54,413 Reliability, I think that it's obvious that we want to be reliable, 66 00:04:54,633 --> 00:04:58,633 and every piece of software will want to be reliable in general. 67 00:04:59,133 --> 00:05:03,213 Maybe not by the same measures that some of them will, but again, 68 00:05:03,333 --> 00:05:06,793 it's not something that is like a yes or no kind of question. 69 00:05:06,853 --> 00:05:08,713 And availability, well, same thing. 70 00:05:10,773 --> 00:05:14,993 So that is kind of why I call it a lie. right like it 71 00:05:14,993 --> 00:05:17,893 is a lie because they're not doing 72 00:05:17,893 --> 00:05:21,893 something really different maybe 73 00:05:21,893 --> 00:05:24,633 actually like the branding of embedded Linux is 74 00:05:24,633 --> 00:05:31,013 created to be able to have your sales people go to the different work clients 75 00:05:31,013 --> 00:05:35,453 and explain how they want to do things different but and that is because that 76 00:05:35,453 --> 00:05:42,993 useful lie right When an embedded engineer goes into a project and looks at it, 77 00:05:43,053 --> 00:05:48,873 what they want to effectively make sure that always happens is that the person 78 00:05:48,873 --> 00:05:51,533 who's using this device gets to do what they want to do. 79 00:05:52,033 --> 00:05:58,653 The use cases will normally be probably more narrow, but creating the thing 80 00:05:58,653 --> 00:06:00,033 that I think that just works. 81 00:06:02,913 --> 00:06:08,633 Maybe right now you can be thinking this is also what we do but those of you 82 00:06:08,633 --> 00:06:11,753 who are developing KDN's. 83 00:06:14,317 --> 00:06:21,097 You also know that this is not right like we have a lot of of um decoration and things around, 84 00:06:21,677 --> 00:06:26,717 how we work that are not only about how making things just work for example 85 00:06:26,717 --> 00:06:30,657 we don't release things every day right like if we want the thing to always 86 00:06:30,657 --> 00:06:35,097 just work every time we do a bug fix we would get that bug fix into our users 87 00:06:35,097 --> 00:06:39,597 devices right this is not how it happens there's good reasons why it happens, 88 00:06:39,717 --> 00:06:43,697 there's good reasons why we don't want it to happen every day, 89 00:06:43,817 --> 00:06:44,737 it wouldn't be convenient, 90 00:06:45,077 --> 00:06:50,237 it also probably doesn't make all that sense, but this is kind of the difference, 91 00:06:50,397 --> 00:06:56,617 and this is normally done by allowing whatever person is doing this integration 92 00:06:56,617 --> 00:07:01,537 to just fork and license the software, like, no, not license, 93 00:07:01,697 --> 00:07:05,497 fork and adapt the software to the use case of like that device, 94 00:07:05,697 --> 00:07:07,477 like let's say this little display or, 95 00:07:08,777 --> 00:07:15,117 where this phone if you are have decided that it needs to always just work, 96 00:07:15,277 --> 00:07:20,677 you will do whatever to the software that you're shipping in there to make it work, just work, right? 97 00:07:21,397 --> 00:07:24,017 Which is gonna be a bit of a, 98 00:07:26,037 --> 00:07:30,497 Contraposition of how we normally work because we also are trying to make things 99 00:07:30,497 --> 00:07:31,477 work all the time, right? 100 00:07:35,477 --> 00:07:39,637 This leads me to think that maybe on the other side of things, 101 00:07:39,757 --> 00:07:41,857 we've been complicating a little bit our story. 102 00:07:43,197 --> 00:07:47,597 And I am very well understanding that I am not the only person kind of talking 103 00:07:47,597 --> 00:07:49,177 about this topic right here. 104 00:07:49,377 --> 00:07:55,477 Harald talked about this proof of concept of operating system that he's suggesting we do. 105 00:07:56,257 --> 00:07:59,237 Yesterday, it's very much aligned with what I'm talking about here. year. 106 00:08:01,277 --> 00:08:06,177 I think David, I didn't see his presentation, but also was talking about this topic quite a bit. 107 00:08:06,497 --> 00:08:11,257 But in practice, we've definitely complicated the story, right? 108 00:08:11,357 --> 00:08:15,957 Like, it hasn't been just us delivering to our users. 109 00:08:16,117 --> 00:08:22,677 We've had a whole mechanism that is complex, 110 00:08:22,897 --> 00:08:31,277 and it is complex also for certain reasons that is put between whoever is doing 111 00:08:31,277 --> 00:08:34,317 that bug fix and whoever is leveraging that bug fix. 112 00:08:37,840 --> 00:08:44,220 But has made it so that these bugfixes that whoever wrote is not yet on your computer. 113 00:08:45,920 --> 00:08:52,740 How this ends up happening is by shifting somewhat the responsibility of the 114 00:08:52,740 --> 00:08:54,620 stability of your system to the user. 115 00:08:54,900 --> 00:09:00,240 And we end up doing that by creating a big dependency tree. 116 00:09:00,360 --> 00:09:03,580 We do that by telling them, you can update whenever. 117 00:09:03,980 --> 00:09:08,980 We do that by different ways. But it's about shifting this responsibility of 118 00:09:08,980 --> 00:09:13,720 who is responsible for making sure that the product works. 119 00:09:14,400 --> 00:09:17,460 On an embedded product, it would be always the manufacturer. 120 00:09:17,720 --> 00:09:21,940 And the manufacturer will be insisting you on getting everything up to date. 121 00:09:22,420 --> 00:09:29,240 And the more distance you have with your user, the more flexible you will be 122 00:09:29,240 --> 00:09:30,460 with this kind of definition. definitions. 123 00:09:31,520 --> 00:09:36,900 Another thing that is very important is that in practice, we don't have a lot 124 00:09:36,900 --> 00:09:40,440 of information about how software ends up being used, right? 125 00:09:41,000 --> 00:09:49,020 An embedded developer, again, will be thinking of a very specific use case, 126 00:09:49,160 --> 00:09:55,420 and then that's why they have this, or they take this license to modify and 127 00:09:55,420 --> 00:09:57,100 adapt the software they create. 128 00:09:57,260 --> 00:10:00,660 They think that they fully understand their use case 129 00:10:00,660 --> 00:10:05,400 and they go all the way with it which is something that on the other hand kd 130 00:10:05,400 --> 00:10:13,060 we have probably not really done in in the past we've been while trying to make 131 00:10:13,060 --> 00:10:17,720 everything super configurable and we've been trying to make everything, 132 00:10:18,600 --> 00:10:24,000 adaptable to the different use cases and like linux distributions and all of that and, 133 00:10:25,640 --> 00:10:30,360 And maybe that's probably one of the differences within us and these embedded integrators. 134 00:10:32,160 --> 00:10:37,660 So what I wanted to talk about today a little bit would be, how can we better 135 00:10:37,660 --> 00:10:38,640 serve this industry partner? 136 00:10:38,860 --> 00:10:45,100 So if other projects want to come and work with our software, 137 00:10:46,120 --> 00:10:51,260 how we can make it so that we can work together better? 138 00:10:51,580 --> 00:10:57,560 What can we learn from maybe my experience and the experience from the people 139 00:10:57,560 --> 00:10:59,240 who do this kind of projects? 140 00:11:00,020 --> 00:11:05,500 And which strategies we can adopt as KDE that will better serve KDE, right? 141 00:11:05,600 --> 00:11:10,220 Like, if we have more of these people contributing patches, for example, 142 00:11:10,760 --> 00:11:17,420 we will improve because, and to be super clear, having people using our software 143 00:11:17,420 --> 00:11:21,400 doesn't improve It just, well, it's a happy thing. 144 00:11:21,520 --> 00:11:24,320 Maybe somebody will get a job, but that doesn't improve anything. 145 00:11:24,680 --> 00:11:28,440 Things start improving when you start getting the patches, you start getting 146 00:11:28,440 --> 00:11:33,640 bug fixes, or you start having some kind of conversation, right? So, yeah. 147 00:11:36,238 --> 00:11:40,798 And there are some certainly some things that we can do or that i think that could be interesting, 148 00:11:41,678 --> 00:11:51,698 that um yeah so as is and like the first thing that um normal uh embedded developer will do is, 149 00:11:52,558 --> 00:11:59,638 when something doesn't go their way we'll start to patch your thing and uh maybe 150 00:11:59,638 --> 00:12:04,538 it is obvious Yes, but what I want to convince you all today is that this is a bad thing. 151 00:12:04,938 --> 00:12:12,098 The moment that they patch your code, everything will start to become more complex. 152 00:12:12,438 --> 00:12:17,118 For them, for example, they will have a harder time updating to your next version. 153 00:12:17,658 --> 00:12:21,578 They will have less incentive to create patches for your software, 154 00:12:21,698 --> 00:12:26,298 because when you release your software with the patches that they created, 155 00:12:27,178 --> 00:12:30,018 they won't be able to rebase it, because they had other patches. 156 00:12:30,018 --> 00:12:32,098 And it all becomes a super complex story. 157 00:12:32,378 --> 00:12:39,918 So if we make our software, maybe here I would have in mind more Queen, 158 00:12:40,018 --> 00:12:42,998 which is what we've been working on mostly, but not exclusively, 159 00:12:43,238 --> 00:12:45,738 like also a ton of frameworks. 160 00:12:46,078 --> 00:12:53,018 If you create the software in ways that are easily extensible without modifying, 161 00:12:53,258 --> 00:12:57,458 so let's say adding plugins, adding what things that happen around, 162 00:12:57,458 --> 00:13:03,698 around having other processes that modify the behavior of the system in general. 163 00:13:05,058 --> 00:13:08,998 Then you have the opportunity of telling them, you make your configuration, 164 00:13:09,378 --> 00:13:15,878 your special thing over there outside, and then you keep a somewhat clean, 165 00:13:16,918 --> 00:13:23,118 queen or whatever project we're talking about, and the maintainership of that 166 00:13:23,118 --> 00:13:26,098 will be easy, the maintainership of your own modules, 167 00:13:26,298 --> 00:13:31,038 you get to do that because they're your own, you don't even need to do the whole 168 00:13:31,038 --> 00:13:33,098 engineering of patches, which. 169 00:13:35,590 --> 00:13:38,630 Is a pain in the ass and i don't think anyone wants to do that and 170 00:13:38,630 --> 00:13:41,570 well these are being done with all of your software 171 00:13:41,570 --> 00:13:44,330 if you have any free software uh in in 172 00:13:44,330 --> 00:13:47,630 the open right um another thing 173 00:13:47,630 --> 00:13:50,530 that is very important is this encouraging of working upstream 174 00:13:50,530 --> 00:13:55,770 a lot of the embedded developers might not even be like open source people like 175 00:13:55,770 --> 00:14:00,490 there's a lot of open so uh people working on linux and open actual open source 176 00:14:00,490 --> 00:14:04,710 software that i don't know they don't have the drive to uh go to go to academy 177 00:14:04,710 --> 00:14:08,050 every year or to join regular communities, right? 178 00:14:10,450 --> 00:14:15,530 But encouraging, explaining and doing all of this work, it needs to happen. 179 00:14:17,370 --> 00:14:22,170 Because, well, that's how we collectively win. And like there's objective reasons. 180 00:14:22,330 --> 00:14:30,470 It's not about at this point, moral or ethical reasons, like software should 181 00:14:30,470 --> 00:14:34,030 should be ethical or open. 182 00:14:34,150 --> 00:14:37,890 It's about we're all engineers solving complex problems. 183 00:14:38,370 --> 00:14:43,670 Let's make sure that we have one source of truth that is where you actually, 184 00:14:43,790 --> 00:14:45,870 they all got the software originally from, right? 185 00:14:48,890 --> 00:14:54,930 And even if they do everything correctly, it will happen that they will be using, 186 00:14:55,450 --> 00:15:01,590 old versions of the software. We do see that in the normal non-dat-embedded Linux normally, right? 187 00:15:01,690 --> 00:15:08,310 That people in their offices, in their stuff, they have weird old versions of 188 00:15:08,310 --> 00:15:12,510 random software because somebody decided that upgrading it was a bad idea. 189 00:15:14,633 --> 00:15:17,753 And this is bad. 190 00:15:17,853 --> 00:15:23,253 This is bad because it's less incentive for everybody to upgrade things. 191 00:15:23,373 --> 00:15:28,233 But, well, I guess we need to be still mindful of it. I still gave it a thumbs down because of... 192 00:15:29,213 --> 00:15:35,133 On the other hand, since we know that, we know that we need to be mindful about compatibility, right? 193 00:15:35,253 --> 00:15:40,853 So if we create new interfaces or if we modify interfaces, interfaces. 194 00:15:42,573 --> 00:15:45,393 If we keep, for example, source compatibility on a lot of things, 195 00:15:45,613 --> 00:15:51,893 it's very useful because you don't need to, like, the maintainership remains low. 196 00:15:52,533 --> 00:15:57,693 If things want to change, they get documented. Well, you have something to sit onto. 197 00:15:58,153 --> 00:16:02,133 I know that a lot of the, like, rebasing work I've done in Queen, 198 00:16:02,233 --> 00:16:10,613 for example, if I hadn't been so involved with the KDE part of the development, 199 00:16:10,953 --> 00:16:14,793 it would have been very hard for me to follow and do. 200 00:16:15,473 --> 00:16:20,013 And actually, even in this case, we are carrying huge patches that, 201 00:16:20,013 --> 00:16:23,973 well, when we release, we will need to keep in the open, because Queen is open source, right? 202 00:16:24,173 --> 00:16:27,793 Well, it's GPL, so it's part of the license. 203 00:16:28,073 --> 00:16:33,973 You will see that they are pretty hefty patches, so making sure that we explain 204 00:16:33,973 --> 00:16:39,533 what the changes are and what the compatibility looks and tries to be is important. 205 00:16:39,913 --> 00:16:43,253 And if for example, like I was saying before, if things become plugins, 206 00:16:43,453 --> 00:16:47,073 well, make sure that these interfaces are reasonably stable, 207 00:16:47,253 --> 00:16:49,353 right? That's something you can always do. 208 00:16:50,533 --> 00:16:56,973 Like this cosmetic changes in code go a little bit against the well, 209 00:16:57,013 --> 00:16:58,173 the spirit of what I'm talking about. 210 00:17:00,633 --> 00:17:03,553 And I was talking about before about 211 00:17:03,553 --> 00:17:07,213 how they won't be that familiar with our uh mindset but 212 00:17:07,213 --> 00:17:10,013 also it's like i said they won't be following 213 00:17:10,013 --> 00:17:15,433 the planet every day they won't be following uh like our matrix channels every 214 00:17:15,433 --> 00:17:20,313 day so it's not really about documenting things i think that very often or more 215 00:17:20,313 --> 00:17:24,913 often than not if we can simply make just things simpler i think that it serves 216 00:17:24,913 --> 00:17:28,933 us all collectively better uh And I do think that we've, 217 00:17:29,013 --> 00:17:33,633 in KDE, not always valued simplicity as much as we could have. 218 00:17:34,613 --> 00:17:38,893 So I don't know. Maybe if it's something that we can keep in mind when taking 219 00:17:38,893 --> 00:17:43,653 decisions, it's something that in the future it will serve us well. 220 00:17:45,913 --> 00:17:51,433 I was talking about plugins before. And in the Qt and C++ world, 221 00:17:51,533 --> 00:17:54,033 this normally means ABIs and actual... 222 00:17:55,602 --> 00:18:02,682 Shared objects that get loaded. These are also like a bit harder and more tightly coupled. 223 00:18:02,942 --> 00:18:05,982 Like you're already talking about C++ headers. 224 00:18:06,162 --> 00:18:09,442 It actually means that all of these extensions need to be implemented in C++, 225 00:18:09,622 --> 00:18:15,562 for example, when like companies and increasingly actually like C and C++ interfaces 226 00:18:15,562 --> 00:18:19,382 are well becoming less and less standard, right? 227 00:18:19,542 --> 00:18:24,422 So because people like to use Rust and Go and I don't know, Dart. 228 00:18:27,142 --> 00:18:31,122 So making things, if things can happen in different processes, 229 00:18:31,382 --> 00:18:36,662 it means that, for example, you can implement it in any kind of technology and 230 00:18:36,662 --> 00:18:39,742 you're less tightly bound in this kind of way. 231 00:18:39,862 --> 00:18:44,422 It also means that, for example, you can consider sandbox all of these processes, 232 00:18:44,682 --> 00:18:47,842 which actually is something that we could leverage ourselves. 233 00:18:48,242 --> 00:18:50,802 In fact, in KDE, we do have a problem with that. that, right? 234 00:18:50,962 --> 00:18:54,882 Like, right now, we need to have all of our plasmoids in Plasma Shell in the 235 00:18:54,882 --> 00:19:01,222 same process, and all of the QML plugins need to be specified in a certain ABI. 236 00:19:02,542 --> 00:19:06,182 And I don't know, I think that it's pretty clear, like, when you're starting 237 00:19:06,182 --> 00:19:09,882 Plasma Shell, like a lot of what's happening there is a lot of like, 238 00:19:09,902 --> 00:19:16,082 QML things that maybe could happen in other processes, and we could parallelize more. 239 00:19:16,502 --> 00:19:19,002 A lot of the blocking that happens, for example, is in Dbus, right? 240 00:19:19,662 --> 00:19:25,342 I'm getting ahead of myself. But what I just was meaning to say here is the 241 00:19:25,342 --> 00:19:29,922 more we can move into separate processes, the more we can keep things separate, 242 00:19:30,722 --> 00:19:33,702 the more powerful we all collectively become as well that way. 243 00:19:36,082 --> 00:19:41,662 Something that is sad but also not entirely sad is that organizations will decide 244 00:19:41,662 --> 00:19:47,622 to use open source technologies because they don't really care that much about it, right? 245 00:19:47,622 --> 00:19:52,762 Like if a big organization decides to use a piece of open source software is 246 00:19:52,762 --> 00:19:54,722 because they want to build something on top of it. 247 00:19:54,782 --> 00:19:59,862 It's not because they say, now we're going to put a huge team here to work on it. 248 00:19:59,982 --> 00:20:04,502 And like this is bad because it means you are not going to have a whole lot of development. 249 00:20:04,702 --> 00:20:08,522 It also is good, I would say, because it means like they're not normally going 250 00:20:08,522 --> 00:20:15,082 to like come and like disturb you, all of your the chickens in your community 251 00:20:15,082 --> 00:20:17,042 because they're building on top of it. 252 00:20:17,042 --> 00:20:21,482 So making sure that they can contribute, I think, the patches on top, 253 00:20:21,622 --> 00:20:23,582 making sure that there's a good communication and relationship, 254 00:20:23,902 --> 00:20:28,342 inviting them to things like the advisory board also is useful. 255 00:20:29,702 --> 00:20:34,462 I think that this is something to keep in mind as well. But normally, 256 00:20:34,562 --> 00:20:39,202 like if they decided that they really care about one of such technologies, 257 00:20:39,322 --> 00:20:42,982 what I imagine, or what I've seen happening in general, 258 00:20:43,122 --> 00:20:48,342 and I'm not even talking about Mercedes here, is like, they just created themselves, right? 259 00:20:48,462 --> 00:20:50,842 Like, how hard can it be? 260 00:20:55,488 --> 00:21:00,548 But it's also important, I think, that for our technology in general, 261 00:21:00,688 --> 00:21:02,528 that organizations are using it, right? 262 00:21:02,608 --> 00:21:08,548 Like, it's probably tempting to say, yeah, asterisk it. 263 00:21:09,928 --> 00:21:14,928 No need to care about other people outside using it. 264 00:21:15,028 --> 00:21:21,328 But it's important that the world outside of ours is using our products and 265 00:21:21,328 --> 00:21:27,328 making sure that it's reliable and it can be ported to different ways. 266 00:21:29,248 --> 00:21:31,948 Like, a lot of the work I've been able to do upstream in Queen, 267 00:21:32,048 --> 00:21:33,008 for example, wouldn't have been 268 00:21:33,008 --> 00:21:38,368 able to or wouldn't have happened if I hadn't done it because of them. 269 00:21:38,568 --> 00:21:41,988 And not only that, right? Like, when I was in Blue Systems and we were working 270 00:21:41,988 --> 00:21:46,448 with Valve and when they are working with Valve, they also get to work on things 271 00:21:46,448 --> 00:21:50,008 that if they didn't have Valve behind saying, this is important, 272 00:21:50,128 --> 00:21:52,808 this is important, and this is important, it wouldn't happen. 273 00:21:52,968 --> 00:21:56,348 And I am sure that if you talk to anyone who has been working on one of these 274 00:21:56,348 --> 00:21:59,648 projects, they will be able to tell you that they have done fixes, 275 00:21:59,828 --> 00:22:01,588 they have done optimizations, features, 276 00:22:02,708 --> 00:22:07,208 that they wouldn't have worked on if it wasn't for one of these clients and 277 00:22:07,208 --> 00:22:12,048 it has been for the best of the community and of open source in general. 278 00:22:17,807 --> 00:22:24,627 In KDE we do a lot of testing for sure. It's also done largely in the context of a community, 279 00:22:24,867 --> 00:22:31,227 but also, for example, if I see the amount of money and involvement that there 280 00:22:31,227 --> 00:22:37,747 is with testing, for example, in Mercedes and again, other deployments, maybe Valve, 281 00:22:38,067 --> 00:22:40,847 it's on a whole different level as well. 282 00:22:40,847 --> 00:22:47,527 Well, so that's also a good reason to make sure that these organizations use you, right? 283 00:22:47,667 --> 00:22:51,827 They will have like big, I don't want to say farms, 284 00:22:51,927 --> 00:22:59,067 but like groups of people whose job is to like touch the UI to make sure that 285 00:22:59,067 --> 00:23:03,567 things pop and they will find you issues with like, I don't know, 286 00:23:03,627 --> 00:23:08,927 lib input when you press every two seconds and you don't know what's happening, right? 287 00:23:10,887 --> 00:23:16,347 So, yeah, like we are not here to sell this industry and that's perfectly fine 288 00:23:16,347 --> 00:23:19,147 to say, but we're not that different. 289 00:23:19,427 --> 00:23:24,267 Like we are all sitting on the same kind of hardware. 290 00:23:24,527 --> 00:23:31,567 We are we're trying to like take what we have today and bring it to products 291 00:23:31,567 --> 00:23:33,247 into the future that go in the future. 292 00:23:35,587 --> 00:23:41,107 And the things we end up needing are not that different like we need to keep adding different, 293 00:23:42,147 --> 00:23:46,027 features and we need to support them over time and make sure that like this 294 00:23:46,027 --> 00:23:51,867 over time is an easy thing to happen right and also on the other hand it's not 295 00:23:51,867 --> 00:23:55,507 like we're doing the same things but it's important that when things get done 296 00:23:55,507 --> 00:23:58,547 they get done on the technologies that we're on because um. 297 00:24:02,388 --> 00:24:06,308 Otherwise, like they're fixing other people's products and they get better. 298 00:24:07,068 --> 00:24:08,748 So where does that leave us? 299 00:24:11,108 --> 00:24:14,528 This is very long, but I don't want to get into it. Are we competent about security 300 00:24:14,528 --> 00:24:17,768 model? I think that the security model in Linux is still all over the place. 301 00:24:18,008 --> 00:24:21,348 It is all over the place for desktop. 302 00:24:21,648 --> 00:24:23,588 It's all over the place for everything else. 303 00:24:24,048 --> 00:24:26,568 Everybody's doing the same thing. Red Hat is going in one direction. 304 00:24:27,008 --> 00:24:33,508 Canonical is going in their direction. and this all takes us in a very weird place. 305 00:24:34,108 --> 00:24:40,208 In KDE, we've made a very, very, very big effort in ABIs and keeping ABIs stable. 306 00:24:40,548 --> 00:24:47,508 I am increasingly thinking that this was maybe an error or it's slowly becoming, 307 00:24:47,828 --> 00:24:50,248 well, less useful in any case. 308 00:24:50,788 --> 00:24:54,928 So my takeaways on this topic are, are. 309 00:24:57,108 --> 00:25:00,088 We'll win if our products are easy to use. 310 00:25:02,748 --> 00:25:08,808 It is when we do it because we can do things like the PinePhone and going into 311 00:25:08,808 --> 00:25:12,468 new tablets and new products and everything is amazing. 312 00:25:12,768 --> 00:25:15,788 Collaborating is useful. I don't think I need to sell you that idea. 313 00:25:16,168 --> 00:25:22,588 And only abstracting what is needed to abstract is also useful and important 314 00:25:22,588 --> 00:25:28,808 and important for our products like we need to sit on tools that are powerful 315 00:25:28,808 --> 00:25:32,708 enough and a way to make sure that things are powerful enough is to see that 316 00:25:32,708 --> 00:25:35,048 other people are also doing powerful things with it, 317 00:25:35,648 --> 00:25:43,948 we need to have a plan for um i don't know what i wanted to say here and. 318 00:25:47,428 --> 00:25:50,728 Yeah, we need to be able to move into different form factors and platforms. 319 00:25:51,128 --> 00:25:55,568 Like maybe something to think is like, do we really need to think, 320 00:25:55,688 --> 00:25:58,428 uh, change anything about who we are? Probably not. 321 00:25:58,548 --> 00:26:03,908 Like we've been serving maybe just different, uh, Lords, but in practice, 322 00:26:03,988 --> 00:26:09,348 what we're talking about is doing, uh, an operating system of our own. 323 00:26:09,428 --> 00:26:14,168 We're talking about, uh, like these hardware vendors, uh, a lot. 324 00:26:14,168 --> 00:26:18,208 We're talking about when we do apps while doing entirely 325 00:26:18,208 --> 00:26:22,188 the same thing but with the different new formats so probably 326 00:26:22,188 --> 00:26:25,328 it's a good moment that we start thinking in this more embedded 327 00:26:25,328 --> 00:26:29,948 and aggressive way of like the important thing is that what we deliver works 328 00:26:29,948 --> 00:26:40,808 and just enjoy being used by people who is that matters right now i think there's 329 00:26:40,808 --> 00:26:43,608 still some time for questions then. 330 00:27:01,464 --> 00:27:12,704 So one thing that I have seen being in companies is they somehow believe their 331 00:27:12,704 --> 00:27:16,944 magic patch is super important and they don't want to contribute it back. 332 00:27:17,144 --> 00:27:21,044 Like this back fix they did, which is like two lines. 333 00:27:21,264 --> 00:27:24,084 They want to keep it forever, which is nonsense. 334 00:27:24,344 --> 00:27:28,964 I know it's nonsense. You know it's nonsense. And I don't know if we could have 335 00:27:28,964 --> 00:27:36,224 some page or something explaining what you said, right? It's better if you contribute the badge. 336 00:27:36,644 --> 00:27:43,164 We're going to be all happier. You're going to have a nicer time updating later. 337 00:27:44,384 --> 00:27:51,864 I've had this feeling that some of the companies don't buy what you're selling. 338 00:27:53,884 --> 00:27:58,044 I guess that one of the important parts here is to make sure that people who 339 00:27:58,044 --> 00:28:03,884 are working on the companies understand themselves what the advantages of open source are. 340 00:28:05,484 --> 00:28:09,484 When you are in a company, you do that. And in the end, like they all need to 341 00:28:09,484 --> 00:28:11,444 release it because we are LGPL, right? 342 00:28:11,544 --> 00:28:15,604 So when this goes in the open, you can always decide also to integrate a change 343 00:28:15,604 --> 00:28:18,604 from a third party because we don't have CLAs and things like that. 344 00:28:18,604 --> 00:28:23,864 So if it's really an improvement it's also like we can also be proactive there. 345 00:28:26,364 --> 00:28:29,324 Yeah actually a comment regarding your comment 346 00:28:29,324 --> 00:28:33,384 so one thing yeah contributing 347 00:28:33,384 --> 00:28:39,184 a patch upstream is always a good idea i fully agree but if you do that at work 348 00:28:39,184 --> 00:28:43,104 then it means convincing the maintainer that your patch is a good idea going 349 00:28:43,104 --> 00:28:47,764 through reviews that can take time and sometimes times well the company is happy 350 00:28:47,764 --> 00:28:51,404 if your two lines patch works it can ship the product and save, 351 00:28:52,724 --> 00:28:57,804 iterations over days and days and continue with other stuff that's a practical issue, 352 00:28:59,412 --> 00:29:02,472 Yeah, you're completely right. This is something we were actually talking, 353 00:29:02,552 --> 00:29:06,152 discussing with Kai Uwe the other day because he was in this same situation. 354 00:29:06,612 --> 00:29:11,832 It has been a whole thing in Mercedes as well, how do we make sure that things go out. 355 00:29:12,112 --> 00:29:16,192 I think that first, making sure that engineers and the people who are in charge 356 00:29:16,192 --> 00:29:19,772 understand because first of all, it's their job, right? 357 00:29:20,012 --> 00:29:25,752 I don't think anybody has been in the right by saying this patch shouldn't go upstream. 358 00:29:26,052 --> 00:29:32,952 And I think that us as engineers, we need to be confident enough to tell our bosses that. 359 00:29:33,452 --> 00:29:40,512 Obviously, every situation is different and, well, social problems are social problems. 360 00:29:40,732 --> 00:29:45,772 But I think that it's our responsibility, I think, as open source engineers 361 00:29:45,772 --> 00:29:50,072 and people who understand what we're doing to convince them. 362 00:29:50,492 --> 00:29:55,452 What we are discussing with Kai as well would be if there's possibilities abilities 363 00:29:55,452 --> 00:30:01,332 for doing, for example, from KDE or even from another organization like FSFE or whatever, 364 00:30:01,592 --> 00:30:07,052 like having pages or documentation explaining why this is a good idea, 365 00:30:07,212 --> 00:30:09,772 there might be value in that. 366 00:30:09,972 --> 00:30:15,072 But I don't know. Like if somebody has a great idea of how that would work, 367 00:30:15,252 --> 00:30:17,472 that's something we can do. 368 00:30:17,972 --> 00:30:22,612 The problem, I guess, it becomes when or it happens when they start saying, 369 00:30:22,612 --> 00:30:23,792 no, no, no, it's legal reasons. 370 00:30:24,032 --> 00:30:29,372 And then obviously we have to go, yeah, I'm not a lawyer, but this becomes a bit more complex. 371 00:30:29,552 --> 00:30:34,652 But I mean, we're all a bit lawyers, so we can all leverage that, I guess. 372 00:30:35,692 --> 00:30:42,792 And if not, we need to be friends with lawyers who can have this open mindset, right? 373 00:30:44,432 --> 00:30:47,192 You're laughing because I said friends with lawyers? Oh my God. 374 00:30:48,932 --> 00:30:50,732 Is there any other question maybe? 375 00:31:02,952 --> 00:31:05,612 First swing. That's what I'm going to do. 376 00:31:07,952 --> 00:31:13,332 So, what I have experienced is that contributing a patch upstream is, 377 00:31:13,352 --> 00:31:15,352 while it's completely normal for us. 378 00:31:16,432 --> 00:31:19,612 It's a completely foreign idea to a lot of, 379 00:31:21,652 --> 00:31:27,192 normal developers. This doesn't come to their mind that they could contribute 380 00:31:27,192 --> 00:31:28,472 that upstream to the project. 381 00:31:30,212 --> 00:31:32,872 Which, yeah, I don't understand, but that's what I see. 382 00:31:45,518 --> 00:31:51,858 I thought it was interesting what you said at the end about maybe Plasma being an embedded product. 383 00:31:52,098 --> 00:31:55,058 This is something that has occurred to me as well. 384 00:31:55,238 --> 00:32:00,298 To what extent do you think that the customizability and flexibility that we 385 00:32:00,298 --> 00:32:05,598 offer in Plasma is ideally targeted at vendors who want to create a customized 386 00:32:05,598 --> 00:32:07,058 experience for their users? 387 00:32:09,618 --> 00:32:13,258 I mean we're already in this discussion right like if 388 00:32:13,258 --> 00:32:16,138 we decided to take Harald's proof of concept today 389 00:32:16,138 --> 00:32:18,918 and ship it to our users we will need to come up with 390 00:32:18,918 --> 00:32:22,438 solutions for I don't know how do you install this weird 391 00:32:22,438 --> 00:32:25,118 thing that always appears on your shell or how do you 392 00:32:25,118 --> 00:32:28,438 install new queen plugins all of that like we're 393 00:32:28,438 --> 00:32:32,378 on this game we need to 394 00:32:32,378 --> 00:32:35,318 have with technologies which is the other side and that's why i was talking about 395 00:32:35,318 --> 00:32:38,238 uh security model earlier like there's 396 00:32:38,238 --> 00:32:41,038 a lot of things that we don't really have good answers for just 397 00:32:41,038 --> 00:32:44,298 yet like um i remember 398 00:32:44,298 --> 00:32:49,418 talking with uh valve uh years ago and they were talking about how what happens 399 00:32:49,418 --> 00:32:54,158 if this application wants to put a menu over there and stuff and stuff and you 400 00:32:54,158 --> 00:32:59,018 simply cannot do that right now on wayland uh we need to find ways and i actually 401 00:32:59,018 --> 00:33:01,718 i think that part of the solution here is. 402 00:33:02,338 --> 00:33:07,318 Also ourselves, like in the recent years, we're also trying to squeeze a lot 403 00:33:07,318 --> 00:33:10,498 the things we led the third party applications to do. 404 00:33:10,598 --> 00:33:14,478 I think that we need to unsqueeze a little bit, because we need to make sure 405 00:33:14,478 --> 00:33:20,358 that we support the world, that the world can use our technology and do everything they want to do. 406 00:33:20,478 --> 00:33:25,298 And I think that this is part of the discussion there. 407 00:33:25,418 --> 00:33:30,218 But it's entirely a social thing, like saying we need to implement this protocol 408 00:33:30,218 --> 00:33:34,058 and this other protocol, and then everybody can do the things they were using. 409 00:33:34,398 --> 00:33:39,098 And like the switch to, for example, to Wayland, the switch to a container, the switch to a. 410 00:33:40,282 --> 00:33:44,262 Uh an immutable operating system they become uh non-question 411 00:33:44,262 --> 00:33:47,362 and we can actually focus on like actually starting 412 00:33:47,362 --> 00:33:50,182 to deliver products that are useful for everyone 413 00:33:50,182 --> 00:33:57,062 like for example to make sure that uh we can offer an operating system to uh 414 00:33:57,062 --> 00:34:01,862 our hardware vendors and know that it will uh well not break like harold was 415 00:34:01,862 --> 00:34:06,182 saying when they upgrade and all of that like this needs to be our stepping 416 00:34:06,182 --> 00:34:09,862 stone because otherwise we cannot be always saying we're better. 417 00:34:10,002 --> 00:34:13,802 People should be using us, but having this small asterisk of like, 418 00:34:13,902 --> 00:34:19,022 unless you're using Leap C 2023, blah, blah, blah, because everything breaks, right? 419 00:34:19,142 --> 00:34:23,162 Like we need to be able to produce things that we can put on hardware, 420 00:34:23,402 --> 00:34:26,102 then get shipped on the other side of the world. 421 00:34:26,222 --> 00:34:29,642 And we know that when they upgrade, when they get a new version, 422 00:34:29,822 --> 00:34:33,482 whatever it won't break and if it breaks it's because the laptop exploded not 423 00:34:33,482 --> 00:34:41,062 because we did a typo on our packaging or whatever right also if the laptop 424 00:34:41,062 --> 00:34:46,402 explodes it's not our fault which is to be the good side of it although clearly a tragedy. 425 00:34:51,442 --> 00:34:58,202 All right um so if there's no more questions and you really like this topic 426 00:34:58,202 --> 00:35:02,782 you can reach out to me and choose whatever hat you want to discuss it under 427 00:35:02,782 --> 00:35:06,242 and I'll be happy to thank you very much for listening.