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.

