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.

