1 00:00:00,937 --> 00:00:05,397 So, we are now going to start the second talk of this session. 2 00:00:05,597 --> 00:00:10,857 The title is Our Own Operating System, and this will be presented by Harald Zitter. 3 00:00:10,997 --> 00:00:13,817 And Harald, the stage is yours. Thank you. 4 00:00:19,137 --> 00:00:24,497 I'm quite surprised that so many people are here. I saw that I'm competing with 5 00:00:24,497 --> 00:00:28,477 Qt 6.8, so apparently you all already know what's going on in 6.8. 6 00:00:31,437 --> 00:00:36,737 Ah, that's the way, YOLO it. Okay, let's talk about the operating system. 7 00:00:37,117 --> 00:00:41,557 So we've actually heard about the operating system a bunch of times today in 8 00:00:41,557 --> 00:00:42,917 the form of immutable distros. 9 00:00:42,977 --> 00:00:45,737 And what I'm going to talk about is a bit related to that. 10 00:00:46,537 --> 00:00:50,737 But first, let's talk history. History is so important, isn't it? 11 00:00:51,197 --> 00:00:56,177 So in the 90s, KDE came about, Linux came about, distributions came about. 12 00:00:56,177 --> 00:01:00,217 And so we needed a distribution story, right? 13 00:01:00,297 --> 00:01:02,797 How do we get KDE onto the user's computer? 14 00:01:03,277 --> 00:01:08,037 And the story was simple. It was we provide the sources, distribution makes 15 00:01:08,037 --> 00:01:09,857 installables out of the sources, 16 00:01:10,177 --> 00:01:15,717 then the user gets them from the distribution, and then when things break, 17 00:01:15,917 --> 00:01:20,477 because they always break, the user goes and complains to KDE. Fair enough? 18 00:01:21,457 --> 00:01:25,417 That is a good story. But since then, things have changed. 19 00:01:27,057 --> 00:01:29,857 So today KDE is no longer a 20 00:01:29,857 --> 00:01:32,937 product it is a community of creators we are 21 00:01:32,937 --> 00:01:36,197 all creators right and we create 22 00:01:36,197 --> 00:01:41,617 many different products we have our frameworks which are of course the building 23 00:01:41,617 --> 00:01:50,497 block we use to enrich and enhance Qt we do have KDE Plasma and its various 24 00:01:50,497 --> 00:01:54,277 offsprings for the desktop for mobile, for the TV. 25 00:01:56,017 --> 00:01:58,277 And that's one of our core products. 26 00:01:59,037 --> 00:02:03,017 Then, of course, we have the KDE Gear, which is a bit of a mixed bag of applications, 27 00:02:03,537 --> 00:02:09,957 and libraries and plugins and artwork and sounds, I guess. 28 00:02:12,397 --> 00:02:17,117 So we have that. Then we have independent applications of that in the form of 29 00:02:17,117 --> 00:02:22,217 Krita and KDE in Life, I think, is part of the gear, but extra applications. 30 00:02:22,217 --> 00:02:34,057 Then we have KDE Neon, which is of course a thing that distributes things, 31 00:02:34,377 --> 00:02:39,297 a thing of beauty, a thing of, yes, it is a thing of beauty. 32 00:02:42,403 --> 00:02:47,903 Then we have, of course, the infrastructure, and we also have various hardware 33 00:02:47,903 --> 00:02:53,983 initiatives, so like corporations with Slimbook, we're doing stuff with Tuxedo, 34 00:02:54,183 --> 00:02:57,183 I hear we're going to do stuff with the Framework people. 35 00:02:59,583 --> 00:03:05,903 So there have been quite a bit of changes in the past, and so our story needed 36 00:03:05,903 --> 00:03:07,303 to evolve as well, right? 37 00:03:08,323 --> 00:03:14,343 So this is our 2020s apps distribution story for Windows and Android. 38 00:03:14,803 --> 00:03:19,183 It's kind of the same, right? We still are very much in the business of providing sources. 39 00:03:20,663 --> 00:03:26,703 Then we take our own sources, turn them into installables, push them onto a proprietary store. 40 00:03:26,963 --> 00:03:31,823 The user gets them from the store and complains to us. Who thinks that's a good story? 41 00:03:34,043 --> 00:03:39,443 Good story? Not a good story? Undecided? 42 00:03:41,523 --> 00:03:46,563 Okay. It is a good story. I didn't try to trip you here. 43 00:03:47,983 --> 00:03:52,623 Because on Linux we have the same story today, right? In the form of Flatpak 44 00:03:52,623 --> 00:03:53,943 and Snaps and what have you. 45 00:03:54,723 --> 00:03:58,023 We very much still take our sources, turn them into installables, 46 00:03:58,083 --> 00:04:01,683 put them onto a centralized store, even though Flatpak claims to not be the 47 00:04:01,683 --> 00:04:03,683 centralized store, but it very much is. 48 00:04:04,963 --> 00:04:07,183 Let's not fool ourselves. 49 00:04:09,063 --> 00:04:16,543 And the user gets the installables from the store. User complains to KDE. Still a good story? 50 00:04:18,623 --> 00:04:20,883 Cool? Bit undecided? 51 00:04:22,903 --> 00:04:28,183 This is our distribution story in 2020. Who notices something about this? 52 00:04:30,383 --> 00:04:35,163 It hasn't changed. That's strange. We are not in the 90s anymore. 53 00:04:35,283 --> 00:04:36,643 Why is the story the same? 54 00:04:38,443 --> 00:04:43,583 This is Plasma's distribution story. One of our core components still hasn't 55 00:04:43,583 --> 00:04:45,543 changed. Still in the 90s. 56 00:04:46,003 --> 00:04:50,163 Now, I'm not saying that's a bad thing, right? But it is definitely something 57 00:04:50,163 --> 00:04:51,683 interesting to observe. 58 00:04:54,783 --> 00:04:59,703 The distribution makes the installable, but the user complains to us. 59 00:05:00,743 --> 00:05:03,803 Who thinks that's a good way to do things. 60 00:05:07,052 --> 00:05:09,052 Okay, not that many people. 61 00:05:12,712 --> 00:05:17,092 Okay, let's do a thought experiment. 62 00:05:17,672 --> 00:05:24,052 So you said if that's all the distribution does, what if it patches stuff, right? 63 00:05:24,132 --> 00:05:29,632 Is it fine then, I don't know, is it fine if we tell the distribution to patch stuff? 64 00:05:32,032 --> 00:05:36,332 Probably, I mean, we told them to, so it should be fine. But then, 65 00:05:36,372 --> 00:05:42,192 of course, something either David or Nicholas mentioned, how do we figure out 66 00:05:42,192 --> 00:05:44,412 what the user is even using, right? 67 00:05:44,812 --> 00:05:47,212 What version of Qt are they having on their distribution? 68 00:05:47,612 --> 00:05:50,352 What version of Plasma? Do the two interact? 69 00:05:50,972 --> 00:05:56,192 What version of Breeze? Do they have weird plugins installed? All that lovely stuff. 70 00:05:57,932 --> 00:06:01,152 So in, when was it, Jonathan? 2015? 71 00:06:03,372 --> 00:06:10,032 2015, Jonathan and I started KDE Neon, a sort of our answer to this problem here, right? 72 00:06:10,492 --> 00:06:15,472 So we started KDE Neon, and we set out to change the distribution story. 73 00:06:16,332 --> 00:06:24,452 The goal was fairly simple. We would have a rock-solid base in the form of the Ubuntu LTS core system. 74 00:06:25,112 --> 00:06:31,792 Then we would put bleeding edge KDE on top, and it is something we can give 75 00:06:31,792 --> 00:06:32,652 to our hardware partners. 76 00:06:33,632 --> 00:06:41,732 Really good story, I think. We also had like a slogan of sorts. 77 00:06:42,092 --> 00:06:47,592 KDE Neon provides an easy and elegant way for people to test the latest from 78 00:06:47,592 --> 00:06:53,032 KDE or use the latest releases of KDE software. 79 00:06:54,552 --> 00:07:00,412 Now something that occurred to me while preparing the slides is the comma. 80 00:07:01,852 --> 00:07:05,112 It's the thought that using somehow became an afterthought. 81 00:07:05,992 --> 00:07:10,692 It wasn't intentional, but the sentence makes it look that way, doesn't it? 82 00:07:12,912 --> 00:07:16,692 And so that sort of lifts up with the first part of the sentence. 83 00:07:16,752 --> 00:07:24,672 We want people to be able to test KDE software, which Neon does very well, 84 00:07:24,752 --> 00:07:29,912 I would say. The using part, maybe not. 85 00:07:30,112 --> 00:07:31,272 But let's look at the story. 86 00:07:34,532 --> 00:07:40,072 KDE provides the sources. KDE takes the sources and turns them into installables. 87 00:07:40,112 --> 00:07:43,712 The user gets it from KDE and then complains to KDE. 88 00:07:43,892 --> 00:07:47,592 So that is technically the same story as we have for the apps, right? 89 00:07:48,532 --> 00:07:50,652 Who thinks it's a good story for distributions? 90 00:07:54,352 --> 00:07:57,492 Okay. about half, maybe a bit less. 91 00:08:00,868 --> 00:08:05,228 So in a stroke of genius, Jonathan and I did a bit of project management and 92 00:08:05,228 --> 00:08:09,108 actually wrote down why we're doing NEON and how we're doing NEON and all the 93 00:08:09,108 --> 00:08:12,028 technical details of how it's going to be achieved and all that. 94 00:08:12,628 --> 00:08:16,828 You can look it up on the community wiki. It's an interesting read and I think 95 00:08:16,828 --> 00:08:24,348 those of you who've used NEON will actually find aspects of that represented in the actual product. 96 00:08:25,688 --> 00:08:34,528 And as part of this founding plan, we've outlined challenges we expected to be appearing. 97 00:08:35,028 --> 00:08:39,828 And one of them is increasingly the Ubuntu archives do not have the necessary 98 00:08:39,828 --> 00:08:44,868 version of a piece of software needed by KDE software, in which case we will 99 00:08:44,868 --> 00:08:46,068 add it to the Neon archives. 100 00:08:48,868 --> 00:08:52,408 When preparing the slides, I was going through the documentation of NEON, 101 00:08:52,488 --> 00:09:01,728 and this stuck out to me, because one of the guiding principles was, 102 00:09:01,788 --> 00:09:03,788 well, it's going to be a rock-solid base. 103 00:09:05,448 --> 00:09:09,048 But by our own admission, the rock-solid base isn't going to work out. 104 00:09:09,828 --> 00:09:14,408 We already knew this in 2015. we said that the rock-solid base is eventually 105 00:09:14,408 --> 00:09:18,968 going to be too old, so we need to add software to our own repositories in order 106 00:09:18,968 --> 00:09:21,208 to bridge the gap, as it were. 107 00:09:23,508 --> 00:09:28,528 Another interesting aspect is NEON won't get special treatment from the rest 108 00:09:28,528 --> 00:09:34,268 of KDE by virtue of being a KDE project, and it certainly won't be the KDE distribution. 109 00:09:35,348 --> 00:09:39,348 Now, two things were going on there. One was a bit political, 110 00:09:39,348 --> 00:09:44,168 and I think you can guess which part of the sentence is the political maneuvering. 111 00:09:45,528 --> 00:09:51,768 The other one is also very much a problem that we're seeing in KDE, 112 00:09:51,928 --> 00:09:57,208 is that just by, we're seeing in Neon, that just by being part of KDE, 113 00:09:57,348 --> 00:10:05,068 you're not necessarily getting the full support, the full might of KDE, if you will. 114 00:10:09,348 --> 00:10:12,268 And so, what are the ailments of neon, right? 115 00:10:12,788 --> 00:10:17,688 I mean, it has a good story. I think it's a good story, right? 116 00:10:17,808 --> 00:10:22,648 You can disagree with me and can tell me later, and then I will tell you why you are wrong. 117 00:10:24,468 --> 00:10:26,768 But for now, that's got to be a good story. 118 00:10:28,628 --> 00:10:34,448 Now, what are the ailments of neon? So, as identified, the rock-solid base is 119 00:10:34,448 --> 00:10:37,548 actually not an advantage. It's a problem. 120 00:10:38,848 --> 00:10:39,908 Curious. Jonathan, do you agree? 121 00:10:42,035 --> 00:10:47,135 Yeah, he's nodding. So why are we using Ubuntu LTS? 122 00:10:47,815 --> 00:10:52,795 There are arguments for it, right? Don't get me wrong. We were not idiots in 2015. 123 00:10:53,175 --> 00:10:58,235 There was a good amount of thought brought into it and there are advantages to it. 124 00:10:58,315 --> 00:11:02,035 But at the same time, this is now holding us back. This is now a problem. 125 00:11:03,075 --> 00:11:08,895 Because right now, today, the Ubuntu LTS space that we are on is two years old. 126 00:11:08,895 --> 00:11:12,735 It doesn't have pipe wire which is just mind-blowing 127 00:11:12,735 --> 00:11:15,915 it it has 128 00:11:15,915 --> 00:11:19,095 ancient ancient libraries it has ancient everything right 129 00:11:19,095 --> 00:11:21,875 and so today is a day where 130 00:11:21,875 --> 00:11:24,815 neon has a problem because it has a 131 00:11:24,815 --> 00:11:27,535 large amount of backports these backports are no 132 00:11:27,535 --> 00:11:31,355 longer constituting Ubuntu LTS right we've deviated 133 00:11:31,355 --> 00:11:35,835 from the product this is no longer LTS Ubuntu this is a new product this is 134 00:11:35,835 --> 00:11:42,175 KDE neon and so this entire advantage that Ubuntu LTS gives us in the form of 135 00:11:42,175 --> 00:11:47,715 hardware support and it's stable and has security updates and all that out the 136 00:11:47,715 --> 00:11:49,495 window. It doesn't exist anymore. 137 00:11:51,475 --> 00:11:54,735 Then there is this mantra of latest is usable. 138 00:11:55,415 --> 00:12:01,855 So when we go back to this motivational line or the description of Neon, 139 00:12:01,895 --> 00:12:08,175 the punchline, the sentence that you put out to grab people, it says, 140 00:12:09,195 --> 00:12:12,775 use the latest releases of KDE software. 141 00:12:13,615 --> 00:12:17,175 And here's a question. What if latest isn't greatest? 142 00:12:19,075 --> 00:12:23,135 What do you do then? Do you hold on to your mission and go, yeah, 143 00:12:23,195 --> 00:12:26,375 yeah, latest is in fact usable? 144 00:12:28,415 --> 00:12:33,875 You complain to KDE, but you are KDE, so who do you complain to? 145 00:12:34,135 --> 00:12:40,515 We don't even have superiors to complain to. We just can sit in our rooms and 146 00:12:40,515 --> 00:12:42,755 be grumpy with our own decisions. 147 00:12:44,715 --> 00:12:49,055 We do that anyway. That is true. I also take naps occasionally. 148 00:12:49,395 --> 00:12:51,855 If you hadn't shown up, I would totally have taken a nap. 149 00:12:53,375 --> 00:12:59,315 So one of the biggest issues, perhaps, is packaging. 150 00:13:02,135 --> 00:13:09,595 Huya has done packaging. Who here has liked doing packaging? Oy. Oh. 151 00:13:11,055 --> 00:13:17,975 OK, that's a sad story. So nobody wants to do packaging, which is unfortunate. 152 00:13:18,515 --> 00:13:22,055 It can be exciting. It's a bit like programming, except packaging. 153 00:13:25,651 --> 00:13:30,511 Packaging is complicated. It is from distribution to distribution different. 154 00:13:30,731 --> 00:13:34,191 There are many different rules. There's a lot of cargo cult going on. 155 00:13:34,591 --> 00:13:40,591 There are so many problems with packaging that aren't just the fact that it's 156 00:13:40,591 --> 00:13:42,031 like separate from programming. 157 00:13:42,191 --> 00:13:47,151 It's the very fact that it wants to be separate from programming, right? 158 00:13:47,411 --> 00:13:51,331 It's not part of the programming story. And that is a problem. 159 00:13:53,191 --> 00:13:59,591 And it is a problem because it means we collectively do not want to do it and 160 00:13:59,591 --> 00:14:06,891 that is difficult if KDE wants to have an operating system like Neon perhaps is perhaps not. 161 00:14:09,031 --> 00:14:15,631 And so packaging is a problem a big one but an even bigger problem is the things 162 00:14:15,631 --> 00:14:17,711 that come out of it. Packages. 163 00:14:18,771 --> 00:14:23,411 Oof. No, seriously. Packages. They are just the worst. 164 00:14:23,871 --> 00:14:27,891 Like, if you install one package, it goes, oh, I need another package. 165 00:14:28,111 --> 00:14:30,371 And then that package goes, I want another package. 166 00:14:30,651 --> 00:14:36,871 And so that becomes problematic. If you have an Ubuntu LTS base and you randomly 167 00:14:36,871 --> 00:14:40,631 introduce new packages because the LTS packages are too old, 168 00:14:40,711 --> 00:14:47,911 so you've created a new product, you've created KD Neon, but now the packages do no longer align. 169 00:14:48,351 --> 00:14:52,231 We've had this somewhat recently with Wine 32-bit. 170 00:14:53,171 --> 00:14:58,211 It just broke because packages, because the dependencies didn't align anymore. 171 00:14:59,331 --> 00:15:03,491 What are you going to do as a user? What are you going to do as a developer? Ah. 172 00:15:05,491 --> 00:15:06,031 Ah. 173 00:15:08,991 --> 00:15:16,251 See all the fancy new technology? energy, power saving also applies to the projector. 174 00:15:16,791 --> 00:15:22,391 Brightness control also applies to the projector. Crazy stuff. Where was I? 175 00:15:24,751 --> 00:15:27,991 Packages. Oh, yes. Thanks for reminding me. 176 00:15:31,782 --> 00:15:37,162 So, packages are just terrible. They are horrible. 177 00:15:37,662 --> 00:15:44,602 And they also factor into the next point, which is quality assurance in Neon is a huge, huge task. 178 00:15:44,902 --> 00:15:49,062 Because with every package that the user installs, they've created a new permutation 179 00:15:49,062 --> 00:15:52,222 that you need to QA. In theory, in practice, we don't. 180 00:15:52,742 --> 00:15:57,362 But in theory, it's another version in of itself that you need to test. 181 00:15:57,602 --> 00:16:01,922 And so, you end up with these really complicated created tests in areas that 182 00:16:01,922 --> 00:16:04,222 you need to carry out in order to do proper QA. 183 00:16:04,642 --> 00:16:07,722 And then as mentioned, if the KDE community, 184 00:16:10,282 --> 00:16:18,602 doesn't do packaging, doesn't do the QA, doesn't care for Neon, 185 00:16:18,722 --> 00:16:21,742 then that is the biggest problem of them all, is it not? 186 00:16:26,862 --> 00:16:30,902 Ah! Ah, so you are involved with Neon then. That's good. 187 00:16:31,922 --> 00:16:38,002 Actually, who has touched Neon in any capacity, like touched the packaging or touched Jenkins? 188 00:16:38,662 --> 00:16:40,442 Okay, a third maybe? 189 00:16:41,822 --> 00:16:47,482 That's good. So you are involved. You're not the problem. Everyone else, you are the problem. 190 00:16:50,722 --> 00:16:53,682 In the meantime, distributions also involve. 191 00:16:53,882 --> 00:16:59,442 So this is not 2015 either. so what have distributions done well they've created 192 00:16:59,442 --> 00:17:05,902 new products these are some of them I guess you've heard at least of one of 193 00:17:05,902 --> 00:17:08,402 them right who hasn't heard of any, 194 00:17:11,142 --> 00:17:18,582 okay so quick story let's pick one Ubuntu core because it's there's a related 195 00:17:18,582 --> 00:17:22,362 talk tomorrow so you can go to the related talk tomorrow and find out more. 196 00:17:23,662 --> 00:17:28,402 Ubuntu Core is essentially an operating system built just out of snaps. 197 00:17:28,782 --> 00:17:36,262 So everything is contained in its own little bubble and you don't get to touch 198 00:17:36,262 --> 00:17:39,062 anything as a user. It's kind of the basic story. 199 00:17:40,502 --> 00:17:44,622 And all of them function kind of or like more or less the same. 200 00:17:44,982 --> 00:17:50,422 You have an immutable base system, you cannot change anything and then you install 201 00:17:50,422 --> 00:17:55,382 applications in the form of let's call them bundles so flat pack or snap or 202 00:17:55,382 --> 00:17:57,182 app image that sort of thing. 203 00:18:03,425 --> 00:18:08,125 So Neon had one of these goals, right, of being something we can give to our 204 00:18:08,125 --> 00:18:11,825 hardware partners because hardware is hard. 205 00:18:13,525 --> 00:18:18,565 And our hardware projects are also a bit weird in that they happen by chance. 206 00:18:18,825 --> 00:18:25,185 So Aleš was a bit surprised that I had this sentence on my slides because my 207 00:18:25,185 --> 00:18:30,325 experience is at some point Aleš shows up and says, there's this new hardware 208 00:18:30,325 --> 00:18:32,005 project that we're doing. 209 00:18:32,005 --> 00:18:35,345 Are you prepared to join? And I'm like, oh, sure. 210 00:18:37,085 --> 00:18:40,925 So they happen by chance and not by design, which is weird because this is a 211 00:18:40,925 --> 00:18:42,945 space where we can thrive, right? 212 00:18:43,385 --> 00:18:46,745 We've seen that. If we bring out a new device, 213 00:18:47,465 --> 00:18:52,185 or like if Slimbook brings out a new device and we're like marketing it as the 214 00:18:52,185 --> 00:19:00,745 KDE Slimbook, then that generates interest, that generates activity in the internets. 215 00:19:03,325 --> 00:19:08,865 So, for hardware initiatives, we first of all need to not have them happen by chance, but by design. 216 00:19:10,285 --> 00:19:15,705 And then we need a compelling operating system so we are being taken serious, right? 217 00:19:15,805 --> 00:19:22,665 Like if we went up to Slimbook and said, how about you put OpenSUSE on your 218 00:19:22,665 --> 00:19:25,385 thing and call it the KDE thing? 219 00:19:25,825 --> 00:19:30,785 They were saying, well, we're already shipping OpenSUSE, why would we call it the KDE thing? 220 00:19:31,365 --> 00:19:39,945 Which is a good thing. So, and it's hard for the community to get into, right? 221 00:19:40,125 --> 00:19:42,825 Who here has been part of a hardware project in KDE? 222 00:19:44,765 --> 00:19:52,645 Three, four, five, six, six people in this entire room. So that could be better, right? 223 00:19:54,525 --> 00:20:00,665 Step one, and that's the important step, The next step is we need to have an operating system. 224 00:20:01,425 --> 00:20:04,985 That's my proposition right now. Who disagrees? 225 00:20:07,065 --> 00:20:07,725 Don't be shy. 226 00:20:10,096 --> 00:20:15,636 So, there seems to be firm support for this notion. So, I'm introducing code name Banana. 227 00:20:20,376 --> 00:20:25,356 Now, code name Banana is obviously a silly name. I don't know who came up with it. 228 00:20:26,756 --> 00:20:29,276 Person in the audience who is also president? 229 00:20:32,256 --> 00:20:34,516 Let's apply some magic to that name. Woo! 230 00:20:36,756 --> 00:20:38,056 Let's call it KDE Linux. 231 00:20:44,776 --> 00:20:48,736 In fact, you will find this on the last slide. 232 00:20:51,196 --> 00:20:56,536 Maybe it shouldn't be called KDE Linux, but, and this is one important thing, 233 00:20:56,836 --> 00:20:58,576 it's up to you what it's going to be called. 234 00:21:00,936 --> 00:21:05,216 Could be anything. Here are the goals I'm proposing. 235 00:21:06,096 --> 00:21:11,756 So it's going to be the KDE operating system. if someone asks you how do I use 236 00:21:11,756 --> 00:21:13,936 this plasma thing then you go use this, 237 00:21:16,216 --> 00:21:24,816 it might not be the fastest moving it might not be the most heckle it might 238 00:21:24,816 --> 00:21:30,236 not be well actually it might be all of these things it's just gonna be amazing 239 00:21:30,236 --> 00:21:33,816 so this is gonna be the KD operating system. 240 00:21:34,236 --> 00:21:37,276 And it needs to have a quality experience. 241 00:21:37,696 --> 00:21:44,116 So if you give it to a user, then they should go, wow, that's an exciting product. 242 00:21:45,456 --> 00:21:51,376 They should be wowed by Plasma. They should be wowed by the operating system, 243 00:21:51,656 --> 00:21:54,856 by what a free software community can do. 244 00:21:55,136 --> 00:21:59,116 And that includes Linux as much as it includes Plasma. 245 00:22:00,436 --> 00:22:06,016 It should be keeping security in mind. That is kind of a given these days. Oh, so annoying. 246 00:22:07,556 --> 00:22:09,516 It shouldn't require packaging knowledge. 247 00:22:11,596 --> 00:22:17,776 Ha, you might think. Harold, you madman. How are you going to create an operating 248 00:22:17,776 --> 00:22:18,836 system without packaging? 249 00:22:19,096 --> 00:22:21,876 And you would be right to ask that. I will show you later. 250 00:22:24,796 --> 00:22:30,276 Stolen is, yes. Yes. It should focus on modern technologies. 251 00:22:30,516 --> 00:22:33,616 We're not in the 90s, so why hold on to technologies from the 90s? 252 00:22:36,456 --> 00:22:41,156 It should be useful to a whole bunch of people. It should be useful to the users. 253 00:22:41,456 --> 00:22:43,716 It should be useful to our hardware partners. 254 00:22:45,076 --> 00:22:48,536 And this is important. It should be useful to us. 255 00:22:49,996 --> 00:22:53,496 If we don't use it, then the project is failed. 256 00:22:53,636 --> 00:22:57,116 There's just no point to it. because we are the ones dogfooding. 257 00:22:57,116 --> 00:23:01,956 We are the ones that are setting the benchmark for what the product should be and can be. 258 00:23:06,355 --> 00:23:12,875 And so it must be useful to developers to us and if it's not then it's failed, 259 00:23:13,535 --> 00:23:18,295 it should have a number of quality additions it 260 00:23:18,295 --> 00:23:24,835 should recognize that latest isn't always the greatest 6.0 was rough it wasn't 261 00:23:24,835 --> 00:23:33,875 terrible but it had problems and so maybe 6.0 wasn't the greatest 6.0.3 probably 262 00:23:33,875 --> 00:23:36,035 was the greatest it could have been. 263 00:23:37,755 --> 00:23:41,255 It needs to have additions for different form factors. We're not just targeting 264 00:23:41,255 --> 00:23:42,695 the desktop. We're also doing mobile. 265 00:23:43,395 --> 00:23:46,555 We're doing TVs, if that's still ongoing. 266 00:23:49,095 --> 00:23:53,335 It should have a way for people to test. That's something we're definitely picking 267 00:23:53,335 --> 00:23:56,515 up from Neon. I think Neon is doing a good job in that department. 268 00:23:56,775 --> 00:24:00,255 You can download an image and go like, yes, that's the latest. 269 00:24:01,415 --> 00:24:04,735 It shouldn't break and obviously it's 270 00:24:04,735 --> 00:24:07,715 going to break so if it breaks then it should be easy to repair 271 00:24:07,715 --> 00:24:10,495 otherwise what's the 272 00:24:10,495 --> 00:24:17,195 point it needs to have community involvement right it needs to have backing 273 00:24:17,195 --> 00:24:23,095 by us if it's not backed by us then again it's a failed project the community 274 00:24:23,095 --> 00:24:27,975 is the recipe for success and that's why I stress the point so much that it 275 00:24:27,975 --> 00:24:29,795 needs to be useful to for developers. 276 00:24:34,775 --> 00:24:38,235 So let's look at a prototype. Who could possibly build a prototype for this? 277 00:24:40,955 --> 00:24:41,835 Oh, me. 278 00:24:45,915 --> 00:24:48,455 Fair enough. Here's the prototype. 279 00:24:55,015 --> 00:24:59,435 So what do you want to know about the prototype? Any particular questions? 280 00:25:02,035 --> 00:25:04,095 I can do you one better. 281 00:25:10,135 --> 00:25:11,215 Yes. 282 00:25:23,159 --> 00:25:27,559 So let's look at the tech a bit, because I think you're all very techy people. Am I right? 283 00:25:29,159 --> 00:25:31,719 Yes? No? Lydia is hiding. Very good. 284 00:25:33,359 --> 00:25:37,639 So it is an image-based operating system, which means there are no packages. 285 00:25:38,979 --> 00:25:43,759 There's a caveat to that, but irrelevant for us, really. 286 00:25:44,179 --> 00:25:48,859 When you download this as user, it's going to be no packages. 287 00:25:49,099 --> 00:25:50,459 It's going to use SputterFS. 288 00:25:50,719 --> 00:25:55,299 It has x86-64 only. It has UEFI only because we are not in the 90s, 289 00:25:55,319 --> 00:25:56,219 don't need BIOS support. 290 00:25:58,319 --> 00:26:05,459 It's using MKOSI, or MacOSI, as I like to call it, which is an excellent tool 291 00:26:05,459 --> 00:26:10,539 by SystemD to build operating system images. That's the OSI part. 292 00:26:12,099 --> 00:26:14,179 It uses an AB update system. 293 00:26:16,159 --> 00:26:21,279 So if one image breaks, you can automatically roll back to an older version. 294 00:26:21,279 --> 00:26:25,279 To assist that we're using systemd boot as a boot manager. 295 00:26:26,439 --> 00:26:30,319 And on my particular system, it's also using systemd homed, although I'm not 296 00:26:30,319 --> 00:26:31,499 quite convinced by it yet. 297 00:26:32,979 --> 00:26:36,179 It has flatpack and confined snaps out of the box. 298 00:26:37,159 --> 00:26:40,879 And the Plasma stack is built entirely using KDE Builder. Again, 299 00:26:40,979 --> 00:26:43,799 going back to this mantra, there shouldn't be any packages. 300 00:26:44,499 --> 00:26:49,539 So we're just rebuilding everything all the time through KDE Builder. 301 00:26:51,279 --> 00:26:55,679 Stay tuned for blog posts on this. Then I have a couple of ideas. 302 00:26:57,439 --> 00:27:00,459 Automatic QA. There's lots of QA in there because QA is important. 303 00:27:01,039 --> 00:27:04,679 Send it off to Sentry and so on and so forth. 304 00:27:05,399 --> 00:27:08,919 Secure boot is something to look into. ARM and RISC-V support, 305 00:27:09,059 --> 00:27:10,539 definitely something to look into. 306 00:27:12,679 --> 00:27:17,599 And yeah, I'll move on because I want some questions from you. Thank you. 307 00:27:21,719 --> 00:27:21,779 Thank you. 308 00:27:28,075 --> 00:27:31,475 Thanks for the presentation and it was quite interesting content and yeah, 309 00:27:31,555 --> 00:27:36,015 we have quite enough time for questions and yeah, we are, I guess that there 310 00:27:36,015 --> 00:27:37,095 should be a lot of questions. 311 00:27:38,615 --> 00:27:46,095 Yep. So on which side of the dividing line between the image and the Flatpak 312 00:27:46,095 --> 00:27:49,955 or Snapstaff does Plasma sit in this as a part of the image? 313 00:27:50,335 --> 00:27:52,095 It's part of the images. Okay. 314 00:27:53,135 --> 00:27:57,915 So perhaps to outline how it works is we take a base operating system, 315 00:27:58,175 --> 00:28:00,535 install the packages from there. So there are packages somewhere. 316 00:28:00,655 --> 00:28:03,395 They are just not on the user system. That's the important bit. 317 00:28:03,655 --> 00:28:09,055 And then we run KDE Builder on that tree, and that results in the actual image then. 318 00:28:11,335 --> 00:28:16,915 So one of the KDE goals is to make the developer experience easier. 319 00:28:16,915 --> 00:28:23,535 And I could imagine that for me as somebody who was very active in KDE but hasn't 320 00:28:23,535 --> 00:28:28,175 been really active for years it always faces the hurdle of oh yeah, 321 00:28:28,295 --> 00:28:32,955 I would love to write a patch for this but I don't have a system set up right now. 322 00:28:33,475 --> 00:28:39,015 Could I just click a button and roll into a system which has all the sources 323 00:28:39,015 --> 00:28:42,295 checked out and I just write a patch and just click and it runs? 324 00:28:43,775 --> 00:28:50,795 Yes. I mean, I'm not sure about checking out the sources, but the prototype 325 00:28:50,795 --> 00:28:54,055 as it stands right now includes all the development headers and stuff because 326 00:28:54,055 --> 00:28:56,495 comparatively these are tiny artifacts, right? 327 00:28:56,635 --> 00:29:02,595 Compared to translations or dictionaries, our development headers are negligible. 328 00:29:03,035 --> 00:29:07,615 So it just comes with everything pre-installed. So the development image should 329 00:29:07,615 --> 00:29:11,995 be the user image in my mind because, again, we are dogfooding our own stuff. 330 00:29:12,435 --> 00:29:16,395 And at that point, you can just take the image and run a build on it. 331 00:29:29,098 --> 00:29:38,018 Hi. In the slide with the distributions, you said there was the KDE breaks. 332 00:29:40,478 --> 00:29:47,938 Distributions, packets the installables, they break, users complain to the KDE. 333 00:29:48,798 --> 00:29:54,838 But now users will complain to KDE if something other breaks that's not part 334 00:29:54,838 --> 00:29:57,798 of the KDE, if ImageMagick breaks or there is a, 335 00:29:59,318 --> 00:30:05,918 RC10, a CV10 that needs to be patched yesterday now that KDE has to do that. 336 00:30:08,138 --> 00:30:09,118 What's your question? 337 00:30:11,618 --> 00:30:18,858 Isn't that a big burden and also something that KDE got from Ubuntu for example? 338 00:30:18,858 --> 00:30:23,778 More or absolutely like there are challenges with creating an operating system, 339 00:30:25,038 --> 00:30:32,378 yes you're absolutely right there is stuff to watch out for I think we're prepared to handle that. 340 00:30:41,118 --> 00:30:44,218 Hmm yeah. 341 00:30:51,118 --> 00:30:58,358 So you're writing let's build it together what kind of help can you need how can we help out, 342 00:31:01,798 --> 00:31:07,538 so that's a difficult question uh i would direct you at the matrix channel or 343 00:31:07,538 --> 00:31:12,218 just send me an email and we'll get it figured out so again this is a collaborative 344 00:31:12,218 --> 00:31:14,758 process right i'm not telling you this is how it needs to be. 345 00:31:14,838 --> 00:31:16,118 This is a proposal from me. 346 00:31:17,338 --> 00:31:21,978 If you want to change anything about it, I'm open to it. If you change nothing, 347 00:31:22,218 --> 00:31:24,998 then I'm just confirmed in my superiority. 348 00:31:30,438 --> 00:31:37,118 So I think maybe somewhat buried in the presentation is what's the base OS for the prototype? 349 00:31:37,358 --> 00:31:41,058 I assume you're not building that with KDE Builder. You're getting it from somewhere. 350 00:31:41,278 --> 00:31:44,578 What is it and why is it better than Ubuntu LTS? 351 00:31:45,238 --> 00:31:50,878 It's Arch Linux. So the basic idea is you want something that is rolling. 352 00:31:51,638 --> 00:31:54,658 Because we need the updated libraries anyway, right? 353 00:31:55,178 --> 00:31:59,018 And since it's image-based, we can just delay releases for a bit, 354 00:31:59,158 --> 00:32:05,478 or release sooner, or have entire control over the image, right? 355 00:32:05,798 --> 00:32:09,838 Since we are basically repacking everything, we're in control. 356 00:32:16,264 --> 00:32:16,464 Yes. 357 00:32:18,744 --> 00:32:24,664 Precisely. The QA is on us. The work, as you've said, is on us. 358 00:32:24,904 --> 00:32:29,124 And it was that way with NEON, and we've kind of ignored that. 359 00:32:29,244 --> 00:32:36,224 And that is a problem, and I'm trying to address this problem by having us actually 360 00:32:36,224 --> 00:32:38,544 be in control and be responsible by extension. 361 00:32:41,484 --> 00:32:55,764 So there was also a question from the chat, is there an automatic boot assessment? 362 00:32:56,064 --> 00:33:04,124 Can I keep additional versions like with RPM OS 3 on an AB system? 363 00:33:04,124 --> 00:33:08,064 System, can I switch between nightly and stable plasma? 364 00:33:12,524 --> 00:33:18,004 So it's basically SteamOS? It's basically SteamOS, yes. 365 00:33:21,864 --> 00:33:25,284 So you can have as many versions as you want, in theory. 366 00:33:26,124 --> 00:33:30,284 I haven't tried it, but I have like four versions on this laptop. 367 00:33:31,324 --> 00:33:35,504 Since it's image-based, you can switch between the images as much as you want, 368 00:33:35,564 --> 00:33:36,764 so you can have unstable and stable. 369 00:33:38,004 --> 00:33:42,684 This, of course, factors into or plays into what David has been talking about 370 00:33:42,684 --> 00:33:46,464 earlier, that we need a kconfig story for rolling back and forth. 371 00:33:48,684 --> 00:33:51,264 I think I've covered all the questions. Maybe not. 372 00:33:53,924 --> 00:33:54,604 Anything else? 373 00:34:07,784 --> 00:34:11,944 Maybe I don't understand completely, but being image-based and not package-based, 374 00:34:12,084 --> 00:34:16,504 does that mean updates require downloading an entire image, so three or four 375 00:34:16,504 --> 00:34:18,744 gigabytes for each update? 376 00:34:19,084 --> 00:34:23,404 Yes, currently. I mean, there are technical solutions to that problem, 377 00:34:23,504 --> 00:34:26,704 but currently they don't exist with the system that we're using. 378 00:34:26,884 --> 00:34:32,784 So my prototype uses systemd sys update, which is fairly new and doesn't have 379 00:34:32,784 --> 00:34:38,164 any sort of optimizations for efficiency yet. 380 00:34:38,244 --> 00:34:40,544 I hope they will come up with something. 381 00:34:49,244 --> 00:34:53,484 Yeah, there are definitely solutions out there. The technology I used for my 382 00:34:53,484 --> 00:34:54,664 prototype doesn't have it though. 383 00:35:00,682 --> 00:35:05,102 I have a question about the same pescaging. So if we have no pescages, 384 00:35:05,222 --> 00:35:12,902 how do we install some third-party software and only flatpak and snaps or compiling? 385 00:35:16,342 --> 00:35:21,122 So software you only get a snapboard flatpak or you compile it yourself. 386 00:35:22,702 --> 00:35:26,482 There's again a systemd solution for that. It's called systemd sysextension, 387 00:35:27,662 --> 00:35:32,602 which basically allows you to overlay something onto your user that is otherwise read-only. 388 00:35:37,122 --> 00:35:41,782 I think you may have actually just partially answered my question already. 389 00:35:42,262 --> 00:35:47,642 So again, you haven't spelled it out explicitly, but the implication is you 390 00:35:47,642 --> 00:35:52,702 want the base image to to be more or less immutable in the hands of the users. 391 00:35:52,982 --> 00:35:58,282 So I assume that if you're a developer, you can sort of circumvent that and 392 00:35:58,282 --> 00:36:00,602 get access to the Arch package manager. 393 00:36:00,982 --> 00:36:06,402 But the next update will then overwrite that, right? Unless you use that systemd 394 00:36:06,402 --> 00:36:08,002 mechanism to somehow... 395 00:36:08,682 --> 00:36:12,442 I mean, as a developer, you can craft anything you want. It's an open system, right? 396 00:36:12,822 --> 00:36:15,962 Because as a developer, occasionally I have to introduce a new dependency, 397 00:36:16,182 --> 00:36:22,122 right? So the way I've been doing it is through systemd sys extension rather 398 00:36:22,122 --> 00:36:24,562 than through the package manager. Yeah. 399 00:36:25,002 --> 00:36:29,042 Okay. And in this Brave New World that David has described earlier, 400 00:36:29,222 --> 00:36:33,362 ideally you shouldn't need a new dependency because you would get it through 401 00:36:33,362 --> 00:36:34,702 Flatpak or through Snap. 402 00:36:35,082 --> 00:36:37,182 Through the actual recipes. Okay. 403 00:36:46,382 --> 00:36:51,742 So maybe a question from the enterprise, what if we have to include sources which are not in ARCH? 404 00:36:51,862 --> 00:36:58,062 So usually often you find packages as in PPA or you dive into packaging. 405 00:36:58,322 --> 00:37:00,962 How would this be solved with the immutable image? 406 00:37:02,702 --> 00:37:04,802 Why would you add a dependency? 407 00:37:08,342 --> 00:37:12,882 Just file systems that are, for example, not included or other applications 408 00:37:12,882 --> 00:37:17,782 that are not snapped or flagged. So would we then need to use Flatpak? 409 00:37:17,822 --> 00:37:19,262 There exists no such application. 410 00:37:20,442 --> 00:37:25,582 Either it should be Snap or it should be Flatpak. I mean, when I say Snap and 411 00:37:25,582 --> 00:37:29,142 Flatpak, I mean any of these bundle formats that are sort of isolated. 412 00:37:31,102 --> 00:37:37,322 But by and large, there should not be a need for you to install anything into your actual system. 413 00:37:38,382 --> 00:37:43,942 Again, with the exception that there's system desys extension which allows you to extend it. 414 00:37:44,762 --> 00:37:50,282 So you can add things on top, but you are then in charge, right? 415 00:37:50,402 --> 00:37:53,242 Like if there's binary problems, binary compatibility problems, 416 00:37:53,362 --> 00:37:55,222 that's on you, not on anyone else. 417 00:37:59,043 --> 00:38:02,803 Apart from the base, as far as I understand, 418 00:38:03,223 --> 00:38:09,883 the approach with the system integration and stuff look very similar to the 419 00:38:09,883 --> 00:38:17,223 way GnomeOS does the thing with the image-based stuff, except the use case of a non-developer. 420 00:38:17,223 --> 00:38:20,303 I wonder, instead of Arch, 421 00:38:20,503 --> 00:38:32,483 would it be better to distribute to Burden by collaborating on the Free Desktop SDK base? 422 00:38:32,483 --> 00:38:41,743 That would also somehow make it better like in the previous presentations about 423 00:38:41,743 --> 00:38:43,983 the Flatpak and Synapse integrations, 424 00:38:44,203 --> 00:38:47,663 particularly around the Flatpak with the free desktop SDK? 425 00:38:49,203 --> 00:38:56,383 Would you consider more collaboration? Yeah, like I said, that's just like the prototype I've built. 426 00:38:56,443 --> 00:38:59,883 If we end up with something completely different, then so be it. 427 00:38:59,883 --> 00:39:03,023 I didn't pick Arch, 428 00:39:04,243 --> 00:39:09,903 specifically I just wanted something rolling that was very pristine so if we 429 00:39:09,903 --> 00:39:15,423 can agree with the GNOME OS people on finding a base system that does that then hooray, 430 00:39:17,663 --> 00:39:20,503 actually two of the online questions. 431 00:39:27,583 --> 00:39:39,763 I have another question about images and upgrading, so you said that we should 432 00:39:39,763 --> 00:39:41,643 download the full image to upgrade, 433 00:39:41,923 --> 00:39:46,923 why you can't produce the diffs of the systems and updates? 434 00:39:46,923 --> 00:39:50,203 Yeah, that's the technology that I was speaking about, is we can have binary 435 00:39:50,203 --> 00:39:51,883 diffs and solve it through that. 436 00:39:52,183 --> 00:40:00,723 And using BTRFS can produce downgrading and getting back to the previous version, right? 437 00:40:00,943 --> 00:40:06,103 So it's snapshots, or why you choose exactly this process? 438 00:40:06,343 --> 00:40:10,083 Independent images, right? They are like independent releases of the thing. 439 00:40:10,603 --> 00:40:16,163 And so you can switch between them as much as you want. Oh, okay, great. Thanks. 440 00:40:16,923 --> 00:40:18,383 I'm.