1
00:00:01,017 --> 00:00:06,777
Hello everybody, my name is Volker Hilzheimer, I'm the Chief Maintainer in the Qt Project.

2
00:00:07,777 --> 00:00:14,917
I have seen some of you at the Contributor Summit that we had in Würzburg here earlier this last week,

3
00:00:16,737 --> 00:00:21,557
where I also talked a little bit about what I think is the future and the challenges

4
00:00:21,557 --> 00:00:25,037
and the opportunities for us in the Qt Project beyond 6.8.

5
00:00:25,037 --> 00:00:28,837
This presentation touches on some of the same points, going a little bit deeper

6
00:00:28,837 --> 00:00:33,097
into specific work items and technical bits and pieces, but it's not a very

7
00:00:33,097 --> 00:00:34,177
technical presentation.

8
00:00:35,477 --> 00:00:39,917
Yeah, beyond 6.8, we are about to release 6.8 during September,

9
00:00:40,057 --> 00:00:41,037
perhaps in early October.

10
00:00:41,137 --> 00:00:44,217
We have a couple of pending header review discussions.

11
00:00:44,557 --> 00:00:48,077
Those of you who are contributing might be aware of it, but I hope we get those

12
00:00:48,077 --> 00:00:52,257
resolved fairly soon and then can ship 6.8 as the next LTS release.

13
00:00:53,137 --> 00:00:56,897
Let's talk a little bit about what the highlights are going to be in 6.8.

14
00:00:57,017 --> 00:01:00,317
Of course, before we start thinking about what's happening next.

15
00:01:00,717 --> 00:01:06,097
So in 6.8, we did a whole bunch of stuff related to general UI improvements

16
00:01:06,097 --> 00:01:09,217
that are relevant, I believe, for KDE, such as, for instance,

17
00:01:09,477 --> 00:01:12,857
an application can now actively request dark or light mode.

18
00:01:14,037 --> 00:01:17,117
We have more controls over certain aspects of font selection.

19
00:01:17,117 --> 00:01:21,597
We have better support for vector graphics, such as SVG rendering.

20
00:01:21,917 --> 00:01:24,857
Hatem here can give you the details on that one.

21
00:01:25,717 --> 00:01:30,357
Qt Quick on the desktop has been a big focus for us now in Qt for several releases.

22
00:01:30,877 --> 00:01:36,217
What we are introducing in Qt 6.8 is a better integration, or actually an integration,

23
00:01:36,637 --> 00:01:41,917
into the native menu bar system on macOS for menus in Qt Quick.

24
00:01:42,037 --> 00:01:45,857
So we used to have these platform lab stuff that you might have used before.

25
00:01:45,857 --> 00:01:50,477
Now the menu and the menu bar that we have in Qt Quick is actually talking to

26
00:01:50,477 --> 00:01:52,317
the menu system on Mac OS.

27
00:01:52,797 --> 00:01:56,397
We are also doing some work on pop-ups in general so that they,

28
00:01:56,457 --> 00:02:00,317
on the desktop, are not items within the QML scene, but rather top-level windows,

29
00:02:00,417 --> 00:02:02,297
like you would expect from a dialog, for instance,

30
00:02:03,046 --> 00:02:07,766
um thank you for the feedback from the kde community that we got in that respect

31
00:02:07,766 --> 00:02:12,326
the defaults changing defaults like that is of course always a bit problematic

32
00:02:12,326 --> 00:02:16,386
and confrontational because it suddenly changes existing user interfaces which

33
00:02:16,386 --> 00:02:18,966
is not always um an improvement.

34
00:02:19,846 --> 00:02:23,846
But yeah both although on the layout management making layouts and controls

35
00:02:23,846 --> 00:02:29,206
behave differently or behave like you would expect it from resizing windows

36
00:02:29,206 --> 00:02:31,726
for instance which control should get that extra space.

37
00:02:31,986 --> 00:02:35,526
That is something that the layout system and widgets had for many years and

38
00:02:35,526 --> 00:02:37,066
MQt quickly so far haven't had that.

39
00:02:37,146 --> 00:02:40,846
So we make a couple of additional facilities in that one and also some of the

40
00:02:40,846 --> 00:02:44,806
item views that we have the table view, preview and so forth have now better

41
00:02:44,806 --> 00:02:45,846
control for certain interactions.

42
00:02:47,746 --> 00:02:52,366
On the scene on Qt graphs data visualization that has been a new module that

43
00:02:52,366 --> 00:02:57,386
is replacing over time Qt data visualization and Qt charts into a module that

44
00:02:57,386 --> 00:03:01,546
is sitting on top of the modern Qt 6 rendering stack and the QML scene graph.

45
00:03:01,766 --> 00:03:04,986
So this is something that is now moving out of Tech Preview, which is great.

46
00:03:05,446 --> 00:03:10,806
A whole bunch of work has gone into networking support and web service consumption

47
00:03:10,806 --> 00:03:16,246
APIs in Qt so that you can easier work with distributed systems using gRPC,

48
00:03:16,426 --> 00:03:19,966
using Protobuf, and also running your own HTTP server.

49
00:03:21,106 --> 00:03:24,826
That has been work in progress for several releases, So now we are taking those

50
00:03:24,826 --> 00:03:26,266
out of tech preview, which is great.

51
00:03:26,526 --> 00:03:31,186
And Qt Multimedia, a bunch of work has been done there to both allow you as

52
00:03:31,186 --> 00:03:34,526
a programmer to define your custom pipeline using programmatic IO APIs,

53
00:03:34,966 --> 00:03:40,246
feed your own images, for instance, into an encoder, or decode images or audio

54
00:03:40,246 --> 00:03:43,346
into PCM data that you can use for post-processing.

55
00:03:44,426 --> 00:03:49,246
And perhaps interesting for you, support for Wayland. Somewhat experimental

56
00:03:49,246 --> 00:03:51,426
still, but for screen capturing.

57
00:03:52,234 --> 00:03:55,614
So that's not everything that we have in 6.8. Look at the documentation.

58
00:03:55,854 --> 00:03:58,854
There was a new page on the snapshots to get the whole shebang.

59
00:03:59,114 --> 00:04:01,094
This is what I consider to be the highlights.

60
00:04:02,514 --> 00:04:05,774
So what are we now going to do beyond all of this?

61
00:04:06,274 --> 00:04:09,034
Are we done already, or is there more to do? I think there is more to do.

62
00:04:09,474 --> 00:04:15,954
So beyond 6.8, we want to definitely make it easier to use Qt Quick and use

63
00:04:15,954 --> 00:04:18,454
QML for anyone out there.

64
00:04:18,794 --> 00:04:24,814
Right now, we have a very strong focus, of course, on C++, C++ developers using

65
00:04:24,814 --> 00:04:28,974
Qt and also then using QML and Qt Quick to build their user experience.

66
00:04:29,954 --> 00:04:33,634
We want to support more languages and we want to make that technology,

67
00:04:33,894 --> 00:04:36,834
Qt Quick and Qt QML, to more developers.

68
00:04:36,994 --> 00:04:39,714
We want to reach people that are developing software in Python,

69
00:04:39,974 --> 00:04:43,134
in C Sharp, that are building Android applications.

70
00:04:43,654 --> 00:04:49,674
We have earlier seen from Joshua, I think, the Rust talk, which I think is going

71
00:04:49,674 --> 00:04:51,074
to be super interesting for us

72
00:04:51,074 --> 00:04:54,214
as well how we can make it easy for rust developers and rust applications,

73
00:04:54,854 --> 00:04:57,654
to use um qml for their or qt quick

74
00:04:57,654 --> 00:05:02,154
for their user interface so that allows us to reach a whole new group of developers

75
00:05:02,154 --> 00:05:06,734
that we are not accessing and not able to talk to or or make any anything interesting

76
00:05:06,734 --> 00:05:12,174
for today it gives hopefully qml a big boost in new people that can actually

77
00:05:12,174 --> 00:05:15,574
understand that language and develop in that language and qt quick of course

78
00:05:15,574 --> 00:05:17,014
as a great user experience

79
00:05:17,254 --> 00:05:19,754
technology also from a starting perspective.

80
00:05:19,894 --> 00:05:22,334
We saw some of that earlier in Ariane's talk.

81
00:05:24,354 --> 00:05:25,274
Yeah, we want to.

82
00:05:27,307 --> 00:05:31,147
Focus on more things related to workflows as well.

83
00:05:31,287 --> 00:05:36,467
So turning Qt into an open framework that is really available on any kind of

84
00:05:36,467 --> 00:05:37,267
development environment.

85
00:05:37,947 --> 00:05:40,947
So it starts with the tools, it starts with the development experience.

86
00:05:43,327 --> 00:05:49,467
Making it easy for people that have existing code to use Qt and Qt Quick in

87
00:05:49,467 --> 00:05:51,527
their application, even if it's not a Qt application.

88
00:05:52,167 --> 00:05:55,887
So you have perhaps seen the blog that we are allowing, that we are now making

89
00:05:55,887 --> 00:06:00,807
it easy for people that have a .NET application to use Qt Quick as well on top of that.

90
00:06:01,187 --> 00:06:03,587
So these are the kind of things you want to make really easy.

91
00:06:04,067 --> 00:06:07,687
One challenge that we see, and I think we also see that or you see that in KDE,

92
00:06:07,747 --> 00:06:10,587
and we got that feedback already during some of the discussions over the last

93
00:06:10,587 --> 00:06:17,907
day, it is not a perfect developer experience yet to build a Qt Quick application.

94
00:06:19,447 --> 00:06:24,247
It comes with a certain friction and a certain overhead to have both your C++

95
00:06:24,247 --> 00:06:28,007
entry point and your application logic, and then you need to get the QML and

96
00:06:28,007 --> 00:06:29,267
the Qt Quick Code in there.

97
00:06:29,507 --> 00:06:31,827
You have a hybrid kind of development environment.

98
00:06:32,347 --> 00:06:35,687
How can we make that easier? If we add more language to that,

99
00:06:35,767 --> 00:06:38,327
that doesn't necessarily make that easier just by itself.

100
00:06:38,507 --> 00:06:42,127
It just makes it easily or similarly hard for everybody.

101
00:06:42,407 --> 00:06:46,927
So making that experience easier by having a better concept of what could a

102
00:06:46,927 --> 00:06:52,007
Qt Quick or QML runtime look like, where we can package a whole bunch of source

103
00:06:52,007 --> 00:06:56,887
together into a well-defined format, so it's easier to deploy these things.

104
00:06:57,227 --> 00:07:01,227
So these are things that we are thinking about, making it easy for a hybrid

105
00:07:01,227 --> 00:07:05,187
application built with multiple different technologies, multiple languages to

106
00:07:05,187 --> 00:07:08,667
be packaged up, deployed, debugged, iterated over.

107
00:07:11,805 --> 00:07:15,565
Technically, a big part of that is also making it easy and possible to combine

108
00:07:15,565 --> 00:07:17,125
different UI technologies.

109
00:07:17,925 --> 00:07:25,025
So we just heard in the previous talk about widgets, SVG, Qt Quick.

110
00:07:26,505 --> 00:07:29,405
We have native frameworks, of course, on the different platforms,

111
00:07:29,585 --> 00:07:36,665
on Android or on iOS or on Windows or on macOS or different systems used to

112
00:07:36,665 --> 00:07:39,165
build applications, also on Linux desktops, of course.

113
00:07:39,165 --> 00:07:44,045
Can we make it easy for people to combine those different technologies into

114
00:07:44,045 --> 00:07:47,905
a consistent user interface, into a consistent user experience?

115
00:07:48,285 --> 00:07:53,605
So the problem that was just earlier described about, okay, you have a QUIC

116
00:07:53,605 --> 00:07:57,245
application that's using a style implemented using QUIC technologies.

117
00:07:57,525 --> 00:08:01,865
You have a widget application using the same style implemented using a different technology.

118
00:08:03,065 --> 00:08:07,385
Imagine that when people are combining Qt Quick and Qt Widgets inside of the

119
00:08:07,385 --> 00:08:10,045
same application, inside of the same user interface.

120
00:08:10,465 --> 00:08:14,025
And that is something we want people to be able to do and make it easy to do.

121
00:08:14,385 --> 00:08:17,945
Because there are lots of widget applications out there.

122
00:08:18,165 --> 00:08:19,625
There is nothing stopping people,

123
00:08:19,765 --> 00:08:23,465
hopefully, from using Qt Quick for some aspects of the user interface.

124
00:08:23,605 --> 00:08:28,585
Putting a Qt Quick widget inside of their widget application and then running

125
00:08:28,585 --> 00:08:32,385
your QML code inside of it. How many of you are doing that? How many of you

126
00:08:32,385 --> 00:08:33,885
are using Qt Quick Widget today?

127
00:08:36,325 --> 00:08:39,405
Unfortunately. Okay, so we want to make this easier.

128
00:08:39,525 --> 00:08:42,505
We want to make this less frictionless. Qt 6.8 has a lot of good facilities

129
00:08:42,505 --> 00:08:44,925
there to combine Qt Quick and Qt Widgets.

130
00:08:45,365 --> 00:08:48,165
But then, of course, you want to have a consistent user experience.

131
00:08:48,385 --> 00:08:51,665
Your button on the widget side of the application and your button on the Qt

132
00:08:51,665 --> 00:08:54,445
Quick side of the application should look and behave similarly.

133
00:08:54,905 --> 00:08:59,085
You want to be able to tab from the widget side of the application through the

134
00:08:59,085 --> 00:09:02,665
Qt Quick side of the application to the widget side of the application again, right?

135
00:09:02,885 --> 00:09:07,185
Tab focus, accessibility, modality, all these user interface concepts,

136
00:09:07,465 --> 00:09:08,965
drag and drop, they need to just work.

137
00:09:09,665 --> 00:09:14,665
So that's a bit of work for us beyond 6.8 now, figuring some of these complexities out.

138
00:09:14,865 --> 00:09:19,425
And yes, also, of course, thinking about what kind of unified styling architecture,

139
00:09:19,965 --> 00:09:25,785
could we have so that you or users otherwise that want to have a custom style

140
00:09:25,785 --> 00:09:29,165
or where we want to make sure that the entire application follows the native

141
00:09:29,165 --> 00:09:31,505
look and feel on macOS or iOS or Android,

142
00:09:31,645 --> 00:09:35,425
that we have a consistent look and feel across the entire application.

143
00:09:35,845 --> 00:09:37,965
That's a really hard problem, as we just saw.

144
00:09:38,725 --> 00:09:42,925
Lots of good ideas already in many people's heads, so I hope that's a good opportunity

145
00:09:42,925 --> 00:09:45,325
for us to also collaborate on that one.

146
00:09:49,129 --> 00:09:53,809
All right, so that's one big topic for us, making Qt an open framework that

147
00:09:53,809 --> 00:10:00,009
is also easy to use if Qt doesn't own the entire process or the entire screen.

148
00:10:01,189 --> 00:10:04,849
Then there is, of course, a trend that is very important for us as a cross-platform

149
00:10:04,849 --> 00:10:09,289
framework used in many different industries, used in many different geographies,

150
00:10:09,369 --> 00:10:12,289
and that is just simply computing fragmentation.

151
00:10:12,289 --> 00:10:15,689
So both on the hardware side and on the operating system side,

152
00:10:15,849 --> 00:10:16,989
we see a lot of things happening.

153
00:10:17,769 --> 00:10:22,309
ARM is now coming increasingly to the desktop. Mac OS has been or Apple has

154
00:10:22,309 --> 00:10:24,129
been leading the pack on that side.

155
00:10:24,269 --> 00:10:26,689
But we see it, of course, from Microsoft with Windows on ARM.

156
00:10:27,009 --> 00:10:31,229
Linux on ARM is becoming more and more relevant, especially in Asia Pacific.

157
00:10:31,229 --> 00:10:35,409
We see new architectures also in China, for instance, becoming important and relevant.

158
00:10:36,249 --> 00:10:39,849
MCUs as a very lightweight computing platform is important for us,

159
00:10:39,909 --> 00:10:44,689
and we want to make sure that people that know Qt can also target MCU devices

160
00:10:44,689 --> 00:10:47,789
and architectures with our technology and with what they have learned.

161
00:10:48,429 --> 00:10:51,629
On the other hand, we see a lot of convergence of user expectations,

162
00:10:51,669 --> 00:10:55,769
at the very least, from mobile to desktop and into the embedded space.

163
00:10:55,769 --> 00:11:00,729
People have the expectation that user is or user interface responsiveness user

164
00:11:00,729 --> 00:11:03,149
interface design quality are becoming

165
00:11:03,149 --> 00:11:07,689
more and more the same across all different computing platforms so,

166
00:11:08,269 --> 00:11:12,989
tablets and laptops are more and more converging and harder and harder to differentiate

167
00:11:12,989 --> 00:11:17,549
you see you see increasing amounts of of laptops for instance and also have

168
00:11:17,549 --> 00:11:23,149
a touch screen or where you have mouse trackpad and touch screen all together in the same time,

169
00:11:23,909 --> 00:11:30,289
KDE's goals on having input management be very well done, I think is super relevant for us.

170
00:11:30,409 --> 00:11:33,629
And I think there is also not just a possibility to collaborate,

171
00:11:33,789 --> 00:11:38,409
but a need to collaborate, because event handling, understanding multi-seats,

172
00:11:38,409 --> 00:11:41,949
for instance, if you have multiple mice talking to the same,

173
00:11:42,009 --> 00:11:43,109
interacting with the same application,

174
00:11:43,529 --> 00:11:48,329
how do we express that correctly in the framework? So there are a lot of things that we need to do there.

175
00:11:48,829 --> 00:11:52,169
And then there are, of course, completely new experiences and environments that

176
00:11:52,169 --> 00:11:54,529
we are are working on, so XR for instance.

177
00:11:55,845 --> 00:11:59,225
So there's a whole bunch of things that we are doing. I mentioned already hardware

178
00:11:59,225 --> 00:12:00,805
architecture, operating systems.

179
00:12:03,025 --> 00:12:07,545
Regional developments, staying in touch with what's happening in different parts of the world.

180
00:12:08,085 --> 00:12:13,465
XR for us is a really big opportunity, making Qt a cross-platform framework

181
00:12:13,465 --> 00:12:19,805
also across the different XR architectures or VR devices or VR platforms.

182
00:12:20,005 --> 00:12:25,445
So we have MetaQuest, we have Apple with VisionOS, we have more different devices.

183
00:12:25,845 --> 00:12:28,905
Coming now, and we want to make it possible for people, of course,

184
00:12:28,945 --> 00:12:35,465
to create an experience on different immersion levels using Qt that allows them

185
00:12:35,465 --> 00:12:42,185
to deploy that experience to different XR or VR or AR technologies and headsets.

186
00:12:42,745 --> 00:12:47,025
And that's quite interesting because that comes with a whole range of new challenges

187
00:12:47,025 --> 00:12:48,845
from a user interaction perspective.

188
00:12:49,725 --> 00:12:54,085
It's no longer mouse or touchpad or touchscreen, right? It's gestures,

189
00:12:54,365 --> 00:12:57,285
it's pinching and gesture recognition.

190
00:12:57,685 --> 00:13:00,745
It's locomotion in a virtual environment.

191
00:13:01,625 --> 00:13:05,565
So there are a whole lot of new things that we need to figure out and solve. And it's very exciting.

192
00:13:05,685 --> 00:13:10,365
Some of you might have the opportunity to test out our XR support or VR support

193
00:13:10,365 --> 00:13:12,905
at the Contributor Summit earlier this week.

194
00:13:13,045 --> 00:13:16,285
So lots of good things happening there. And yeah, being a cross-platform technology

195
00:13:16,285 --> 00:13:20,545
in this space as well is what we are trying to figure out. So there's a lot

196
00:13:20,545 --> 00:13:21,285
of stuff that's different.

197
00:13:21,485 --> 00:13:24,165
Some of it is not so different, but it's just a new platform.

198
00:13:24,525 --> 00:13:29,225
So the low immersion mode, for instance, on the Vision OS is not all that different

199
00:13:29,225 --> 00:13:30,805
from running an application.

200
00:13:31,285 --> 00:13:35,025
But there are some differences still, and we need to make at the very least

201
00:13:35,025 --> 00:13:39,105
sure that you can deploy a Qt application as a native Vision OS application

202
00:13:39,105 --> 00:13:41,365
rather than as an iOS application.

203
00:13:41,445 --> 00:13:44,765
So some work of that has already been done and will be released with 6.8,

204
00:13:44,845 --> 00:13:47,025
but that is, of course, just the beginning of that journey.

205
00:13:48,465 --> 00:13:52,785
And then we have also distributed software systems where the application front

206
00:13:52,785 --> 00:13:57,645
end and the application back end are decoupled, like we know from the typical

207
00:13:57,645 --> 00:13:59,285
web architecture or web service architecture,

208
00:13:59,665 --> 00:14:06,145
front end being in Qt Quick, back end being wherever it is, on an automotive

209
00:14:06,145 --> 00:14:09,045
device or a cluster, for instance.

210
00:14:09,045 --> 00:14:13,925
It's not unusual that the security or safety critical parts live on a different

211
00:14:13,925 --> 00:14:20,925
virtual machine on a hypervisor in the car and the more relaxed security requirement

212
00:14:20,925 --> 00:14:24,525
UI aspects are living in a different virtual machine.

213
00:14:24,725 --> 00:14:27,265
And then they need to communicate with each other over gRPC,

214
00:14:27,485 --> 00:14:29,445
protobuf and efficient protocols.

215
00:14:29,745 --> 00:14:33,565
So a lot of work happening there as well to make this distributed system architecture

216
00:14:33,565 --> 00:14:39,045
possible and easy and cute as well. So it's not just UI, it's also about really system architecture.

217
00:14:43,656 --> 00:14:51,776
Then there is the CRA, the Cyber Resilience Act that the EU is releasing and

218
00:14:51,776 --> 00:14:54,436
imposing, let's say, on the software industry.

219
00:14:54,776 --> 00:14:58,496
It's a great opportunity. It's a great challenge. It's both sides.

220
00:14:59,196 --> 00:15:04,796
For us as end users, it's definitely a good service to have the cybersecurity

221
00:15:04,796 --> 00:15:08,236
and cyber resilience requirements expressed in law.

222
00:15:08,376 --> 00:15:13,036
For us as engineers, it's a great challenge and a great opportunity to solve

223
00:15:13,036 --> 00:15:16,696
some of these problems and make it still a good and productive environment.

224
00:15:17,156 --> 00:15:22,616
So we have been looking into the different requirements that come towards us

225
00:15:22,616 --> 00:15:24,236
from the Cyber Resilience Act.

226
00:15:25,036 --> 00:15:28,836
One of those is that we need to very clearly document what's in the box.

227
00:15:29,976 --> 00:15:34,856
The SBOM, the Software Bill of Material. If you install or acquire a product

228
00:15:34,856 --> 00:15:38,916
that comes with a significant software component, software is that,

229
00:15:39,056 --> 00:15:40,936
but also a device that comes with software,

230
00:15:41,436 --> 00:15:46,756
What is actually constituting that stack of software? What are you actually getting?

231
00:15:47,576 --> 00:15:51,696
So we are, of course, part of that stack, and we need to make very clearly documentation

232
00:15:51,696 --> 00:15:56,516
that our users can rely on that this is what they are getting when they are using Qt in their stack.

233
00:15:56,756 --> 00:16:01,316
This is the risk that they are introducing by using a whole bunch of third-party

234
00:16:01,316 --> 00:16:07,456
libraries, linking that back to, for instance, CVEs when they are getting raised

235
00:16:07,456 --> 00:16:09,116
in the relevant databases and so forth.

236
00:16:09,116 --> 00:16:13,656
So we are building a fair amount of software infrastructure around this right

237
00:16:13,656 --> 00:16:19,536
now to make sure that we have an easy, unbureaucratic way of doing that,

238
00:16:19,596 --> 00:16:22,896
of creating this metadata for our packages.

239
00:16:23,336 --> 00:16:27,116
It's super relevant for us, of course, because we are a commercial supplier

240
00:16:27,116 --> 00:16:28,816
of technology to our customers.

241
00:16:29,556 --> 00:16:33,556
I think it's also quite relevant for you in KDE to figure out how can you do

242
00:16:33,556 --> 00:16:39,256
that, even though you might not be directly as a project responsible for these requirements.

243
00:16:39,536 --> 00:16:45,356
The CRA states that the first entity that is having a commercial benefit from

244
00:16:45,356 --> 00:16:47,576
distributing software needs to be also held liable.

245
00:16:48,316 --> 00:16:53,396
But yeah, I think you will have perhaps users that would appreciate if,

246
00:16:53,476 --> 00:16:57,736
for instance, the SBOM of KDE would be available. And I think that is an opportunity

247
00:16:57,736 --> 00:17:00,556
also for us to collaborate and work together with the entire industry.

248
00:17:00,756 --> 00:17:05,956
How can we generate this information as much as possible automatically using

249
00:17:05,956 --> 00:17:10,516
something that is manageable for us as developers that we can easily work with?

250
00:17:10,596 --> 00:17:15,796
So if you see Alexandru at the Academy conference this week,

251
00:17:15,836 --> 00:17:17,796
then he's a great guy to talk to about that.

252
00:17:20,260 --> 00:17:24,340
For us in Qt, of course, there is more than just third-party libraries that

253
00:17:24,340 --> 00:17:26,120
we need to make sure we keep track of.

254
00:17:26,240 --> 00:17:30,740
We also need to look at our own code and understand what is the attack vector

255
00:17:30,740 --> 00:17:35,620
that that code might introduce to an application or to a software system if

256
00:17:35,620 --> 00:17:37,500
there is a bug or a vulnerability.

257
00:17:38,300 --> 00:17:44,120
And we are focusing there right now on any part of Qt that is involved in processing

258
00:17:44,120 --> 00:17:48,000
data that is not under the full control of the application.

259
00:17:48,000 --> 00:17:53,180
So anything that might constitute untrusted and therefore potentially malicious,

260
00:17:53,520 --> 00:17:58,920
intentionally malformed data that Qt is parsing, that Qt is processing without

261
00:17:58,920 --> 00:18:03,160
the application having a chance to sanitize it first, to scrub it first, whatever.

262
00:18:04,000 --> 00:18:09,120
That is something that we need to focus on from certain perspectives of software

263
00:18:09,120 --> 00:18:11,820
engineering craftsmanship, let's say.

264
00:18:11,820 --> 00:18:16,100
So, making sure that reviewers are aware of the fact that they are now looking

265
00:18:16,100 --> 00:18:21,500
at a patch to code that is potentially introducing a vulnerability if there

266
00:18:21,500 --> 00:18:25,000
is a bug, if you have an out of buffer overrun or something like that.

267
00:18:25,620 --> 00:18:31,040
Making it possible for our CI system to focus the execution of fast tests or

268
00:18:31,040 --> 00:18:37,140
of stress tests on those parts of Qt that change or that get changed during a commit review.

269
00:18:39,038 --> 00:18:41,918
So, there are a number of things that we can do there to integrate with tooling,

270
00:18:42,118 --> 00:18:46,518
but first we need to understand what of our code is actually potentially an

271
00:18:46,518 --> 00:18:51,358
attack vector, and then marking that with the respective some comments.

272
00:18:51,558 --> 00:18:53,658
That's a discussion that we have right now in the Qt project,

273
00:18:53,778 --> 00:18:56,878
how we do that. It's perhaps something that also then would be,

274
00:18:56,918 --> 00:18:59,038
could be relevant for the KDE project to adopt.

275
00:18:59,438 --> 00:19:02,478
So, that's something where we would very much like your input as well.

276
00:19:03,318 --> 00:19:07,058
And then yeah basic IT hygiene I

277
00:19:07,058 --> 00:19:09,918
would say governance of the account or

278
00:19:09,918 --> 00:19:13,778
life cycle of the accounts to the Qt project something where I would like to

279
00:19:13,778 --> 00:19:18,238
have your input how are you doing it when people are no longer active with their

280
00:19:18,238 --> 00:19:26,118
perhaps approver privileged account yeah at some point we should perhaps deactivate

281
00:19:26,118 --> 00:19:27,738
the account remove those privileges

282
00:19:27,998 --> 00:19:34,018
require a certain amount of re-authentication before we give a high degree of

283
00:19:34,018 --> 00:19:35,098
privileges against the user.

284
00:19:35,898 --> 00:19:40,038
So yeah, something that we can discuss perhaps in the whole way how you are

285
00:19:40,038 --> 00:19:41,898
doing this kind of thing in your project.

286
00:19:45,378 --> 00:19:46,098
All right.

287
00:19:48,318 --> 00:19:51,378
Ecosystem and community is of course for us as a project,

288
00:19:53,838 --> 00:19:58,058
critical to think about for us as a company. It's critical to think about as a Qt company.

289
00:19:58,258 --> 00:20:02,958
How can we make sure that there is an ecosystem where multiple players find

290
00:20:02,958 --> 00:20:05,258
it valuable to be part of,

291
00:20:05,958 --> 00:20:08,798
where people can contribute with their skills, with their solutions,

292
00:20:08,918 --> 00:20:11,538
with their knowledge, work together, build something together,

293
00:20:11,638 --> 00:20:14,758
make sure it's a social experience where people don't feel that they are the

294
00:20:14,758 --> 00:20:16,498
only ones solving that problem.

295
00:20:16,858 --> 00:20:20,978
So we have, of course, a very rich ecosystem of Qt solutions out there.

296
00:20:21,638 --> 00:20:24,058
Several thousand GitHub repositories

297
00:20:24,058 --> 00:20:28,278
are providing solutions for Qt developers using Qt, building Qt.

298
00:20:28,298 --> 00:20:33,338
In KDE, you have a rich set of frameworks that are to some degree usable also

299
00:20:33,338 --> 00:20:38,258
for people that are building Qt applications that are not otherwise using KDE or depending on KDE.

300
00:20:39,318 --> 00:20:42,958
We need to make sure that these contributors, these projects know about each

301
00:20:42,958 --> 00:20:46,758
other and people that have that problem that this project is already solving

302
00:20:46,758 --> 00:20:48,298
can easily discover those as well.

303
00:20:48,738 --> 00:20:51,538
I think we haven't done a very good job with this in the past.

304
00:20:51,678 --> 00:20:52,998
We haven't tried very hard.

305
00:20:53,478 --> 00:20:57,058
So that is one of the things where we are focusing on right now within the Qt

306
00:20:57,058 --> 00:21:00,798
project and within the Qt company, reaching out, trying to build these networks,

307
00:21:01,058 --> 00:21:05,418
understanding who are you, how can we find you, how can people find you.

308
00:21:05,418 --> 00:21:09,038
So one big aspect to that is, again, resonating very nicely,

309
00:21:09,178 --> 00:21:11,758
I think, with the KDE goal that was

310
00:21:11,758 --> 00:21:16,598
announced today about recruiting more contributors into the KDE project,

311
00:21:16,858 --> 00:21:22,418
also by reaching out to the educational domains, the educational network,

312
00:21:22,538 --> 00:21:23,958
building networks with schools,

313
00:21:24,138 --> 00:21:28,538
with universities to make sure that the skills that we are looking for,

314
00:21:28,578 --> 00:21:34,738
that you are looking for, are actually trained and are educated and are taught in schools.

315
00:21:35,498 --> 00:21:41,438
So building this network, C++, Qt on the curriculum, using KDE as a project

316
00:21:41,438 --> 00:21:44,558
where people can start learning how to build complex software systems.

317
00:21:45,058 --> 00:21:48,358
I think that's going to be a very good collaboration if we can get that off.

318
00:21:48,818 --> 00:21:53,218
And then otherwise, yeah, building networks with projects that are using Qt

319
00:21:53,218 --> 00:21:56,838
today and that might be building libraries or frameworks that many other projects

320
00:21:56,838 --> 00:21:59,918
or many other users are using themselves again.

321
00:22:00,995 --> 00:22:04,895
That's something where I would very much like your feedback and like your input as well.

322
00:22:05,595 --> 00:22:08,915
We have announced that for next year's Contributor Summit.

323
00:22:09,235 --> 00:22:11,175
We have already tried that for this year's Contributor Summit,

324
00:22:11,295 --> 00:22:14,795
but I hope we get a bit more momentum into that for next year's Contributor

325
00:22:14,795 --> 00:22:17,255
Summit, having more open source projects,

326
00:22:17,515 --> 00:22:22,315
joining that as Qt users as well, because the perspective that we got this year

327
00:22:22,315 --> 00:22:27,115
from having so many people from the KDE project participating was really,

328
00:22:27,155 --> 00:22:29,795
really valuable, and I really enjoyed having those discussions with you.

329
00:22:29,795 --> 00:22:34,155
So I hope next year we can have even more open source projects that are building

330
00:22:34,155 --> 00:22:38,135
technology on top of Qt and that are building technologies for other Qt projects

331
00:22:38,135 --> 00:22:40,255
to become part of that discussion.

332
00:22:40,535 --> 00:22:45,435
Share their perspectives with us and help us building that network so that we

333
00:22:45,435 --> 00:22:49,275
can really make sure that the decisions we make in the Qt project ultimately

334
00:22:49,275 --> 00:22:54,375
are also reviewed and discussed with that perspective in mind.

335
00:22:54,375 --> 00:23:00,255
Because I think that's very important and we know that from the Qt 5 to Qt 6 transition actually.

336
00:23:00,395 --> 00:23:06,275
How many Qt users have actually waited for the KDE project to complete the Qt 6 port,

337
00:23:06,475 --> 00:23:10,095
which included the KDE framework 6 port and many other things of course,

338
00:23:10,275 --> 00:23:14,315
but many of our customers and many of the other users out there have looked

339
00:23:14,315 --> 00:23:19,695
at KDE as the lighthouse project when KDE has finished its project, its port to Qt 6,

340
00:23:19,915 --> 00:23:22,715
then clearly Qt 6 is good enough and ready.

341
00:23:22,855 --> 00:23:26,995
So I'm delighted and happy that it has happened and that you have earlier this

342
00:23:26,995 --> 00:23:28,455
year managed to release Plasma 6.

343
00:23:28,715 --> 00:23:32,055
And I think there will be many projects out there that have a similar importance

344
00:23:32,055 --> 00:23:36,295
for many of our users, making sure that they are all supporting over to Qt 6.

345
00:23:36,395 --> 00:23:40,715
And that only can happen and we can only support these projects if we know about them, of course.

346
00:23:45,269 --> 00:23:48,789
Yeah, and making software development productive and fun has,

347
00:23:48,869 --> 00:23:52,409
of course, been always the ambition of us in the Qt project.

348
00:23:53,009 --> 00:23:57,569
Giving solutions that make it easy to write software, making it fun to write

349
00:23:57,569 --> 00:24:03,089
software, making APIs that are hopefully intuitive to use and hard to use incorrectly,

350
00:24:03,529 --> 00:24:06,369
solving problems that people have.

351
00:24:07,109 --> 00:24:11,809
So the most important thing when we think about we are a tool for software developers

352
00:24:11,809 --> 00:24:14,489
in the end of the day is, are you getting the job done?

353
00:24:16,189 --> 00:24:20,369
Do you feel productive when you do the work? And are you having fun?

354
00:24:20,789 --> 00:24:26,309
These are the three questions. If those are not answered with a clear yes,

355
00:24:26,409 --> 00:24:29,049
then we need to do better in the Qt project.

356
00:24:29,409 --> 00:24:33,769
So I hope that we are getting good or continue to be good at that and deliver

357
00:24:33,769 --> 00:24:35,229
good solutions and that you are having fun.

358
00:24:35,389 --> 00:24:38,089
The feedback that I'm getting here and the vibes that I'm getting here from

359
00:24:38,089 --> 00:24:41,789
the conference about Qt and Qt 6 makes me feel good.

360
00:24:42,069 --> 00:24:45,649
That's nice. But I think we still need to continue working on that,

361
00:24:45,689 --> 00:24:49,229
of course, make sure that things are well designed, that things are well documented,

362
00:24:49,429 --> 00:24:54,749
that we are also reaching new developers with new expectations in that respect.

363
00:24:55,229 --> 00:25:00,149
The existing documentation we have is great and it's very technically correct

364
00:25:00,149 --> 00:25:02,709
and you find all the things there about the API reference.

365
00:25:03,249 --> 00:25:09,449
But younger developers might look at videos, might want AI co-pilot sessions

366
00:25:09,449 --> 00:25:10,789
and so forth to be part of that.

367
00:25:11,889 --> 00:25:15,509
So, yeah, we need to continue working on that, of course.

368
00:25:17,889 --> 00:25:21,989
There are a whole bunch of things that we are working on now on the graphics and UI side.

369
00:25:22,429 --> 00:25:29,329
So, yeah, vector animations, HDR support, hardware-accelerated 2D painting.

370
00:25:30,149 --> 00:25:34,549
On the graphics engine side, on the user interface side, working with what modern

371
00:25:34,549 --> 00:25:38,089
desktops give us as facilities for, for instance, transparent windows.

372
00:25:38,089 --> 00:25:40,029
These like, effectful windows.

373
00:25:41,309 --> 00:25:44,849
Qt content and title bars as well, so customizing the window frame,

374
00:25:45,009 --> 00:25:47,789
that's something where I think, from the Wayland perspective,

375
00:25:48,029 --> 00:25:50,829
we have a lot of things to work on together and already are doing that.

376
00:25:51,129 --> 00:25:55,949
Docking widget support in Qt Quick. And yeah, we mentioned already the unified styling architecture.

377
00:25:58,403 --> 00:26:01,823
On the core and non-visual side, we continue our work on the connectivity,

378
00:26:02,603 --> 00:26:06,263
so making it easy to consume web services, networking generally,

379
00:26:07,103 --> 00:26:10,283
looking also into what the C++ standard, of course, is doing with,

380
00:26:10,343 --> 00:26:14,043
for instance, asynchronous API, sender-receiver, and so forth,

381
00:26:14,303 --> 00:26:16,423
looking into push notifications.

382
00:26:16,803 --> 00:26:20,943
Asynchronous I.O., we don't have a good API for asynchronous I.O. today in Qt.

383
00:26:21,943 --> 00:26:26,983
File access on cloud storage on most modern platforms, You have perhaps a part

384
00:26:26,983 --> 00:26:30,743
of your documents living on the cloud and on macOS, for instance,

385
00:26:30,863 --> 00:26:34,303
that requires some certain facilities before you can access that as an application.

386
00:26:34,663 --> 00:26:36,143
We heard already from Ulf about

387
00:26:36,143 --> 00:26:39,203
things that we are planning to do for QML applications in the language.

388
00:26:40,403 --> 00:26:43,923
And then, yeah, a whole bunch of tooling. Fabian mentioned many of these things.

389
00:26:43,983 --> 00:26:49,083
Language server, for instance, making that better, integrating those into whatever IDE you want to use.

390
00:26:49,283 --> 00:26:52,943
Also investigating what we can do with artificial intelligence technology,

391
00:26:53,223 --> 00:26:57,363
large language models, can we train a large language model so that it knows

392
00:26:57,363 --> 00:26:59,303
what good QML looks like, for instance.

393
00:26:59,883 --> 00:27:03,703
Doing that in such a way that the provenance of that data is clear,

394
00:27:03,783 --> 00:27:08,243
that we don't harvest all sorts of open source licensed software for that purpose,

395
00:27:08,403 --> 00:27:10,083
but rather having a good control over that.

396
00:27:10,263 --> 00:27:13,343
Your experience, the knowledge that you have with QML, for instance,

397
00:27:13,443 --> 00:27:17,803
is also something that we can hopefully, perhaps, to some degree, rely on in that respect.

398
00:27:18,023 --> 00:27:22,543
And then documentation and academy, in this case, the Qt Academy that we are

399
00:27:22,543 --> 00:27:24,823
having with training material, with learning material.

400
00:27:26,603 --> 00:27:31,923
Yeah, so hopefully some of all these activities are producing useful APIs for

401
00:27:31,923 --> 00:27:37,323
you beyond Qt 6.8 as well, and making it more productive and fun for you to work with Qt.

402
00:27:38,563 --> 00:27:43,603
And now I'm being shown that we have to start the question and answer session. Any questions?

403
00:27:49,014 --> 00:27:57,614
You mentioned in the future there's going to be a hardware-accelerated 2D drawing API.

404
00:27:58,254 --> 00:28:02,614
Okay, can you elaborate on that? Hardware-accelerated 2D drawing API.

405
00:28:03,174 --> 00:28:08,074
Right now, we have a scene graph API that is fairly low level for people to

406
00:28:08,074 --> 00:28:10,014
create something as simple as a rectangle.

407
00:28:10,314 --> 00:28:14,634
Well, fortunately, we have a rectangle item in Qt Quick Control or in Qt Quick,

408
00:28:14,714 --> 00:28:19,614
and we also have the Qt Quick Shapes module that allows you to do certain things very easily.

409
00:28:19,834 --> 00:28:23,294
But for something, for instance, like the 2D graphs that we have,

410
00:28:23,394 --> 00:28:28,374
like doing an oscillogram or some of these challenges is surprisingly hard if

411
00:28:28,374 --> 00:28:32,174
you have to triangulate and tessellate all your stuff manually.

412
00:28:32,454 --> 00:28:39,834
So having a better 2D Painter API that is more similar to what we have in QPainter,

413
00:28:39,934 --> 00:28:42,194
but still generates scene graph nodes.

414
00:28:42,314 --> 00:28:45,534
So there are some open source projects out there. Nano Painter, for instance,

415
00:28:45,534 --> 00:28:49,014
instance is one of those that is popular and

416
00:28:49,014 --> 00:28:52,294
we are trying to see okay what can we learn from that what what could we adopt

417
00:28:52,294 --> 00:28:57,694
or what could we use similarly and to create a higher level um effective or

418
00:28:57,694 --> 00:29:04,574
efficiently used 2d painter API okay I I don't want to run out of time any more

419
00:29:04,574 --> 00:29:06,714
questions from other people, Carl?

420
00:29:07,174 --> 00:29:15,374
I mean, that's a bit related, but one of my main points with QML and Qt Rejects

421
00:29:15,374 --> 00:29:16,714
is that QML is super nice.

422
00:29:17,514 --> 00:29:23,454
But sometimes you might want to move some parts to C++ for performance reasons,

423
00:29:23,694 --> 00:29:25,114
for state management reasons.

424
00:29:26,634 --> 00:29:32,614
And then your C++ API for Qt Quick is really, really small, the API surface.

425
00:29:32,934 --> 00:29:37,214
Is there some plans to maybe include fewer items to this public API,

426
00:29:38,134 --> 00:29:39,594
like for example, Qt Quick controls action.

427
00:29:42,654 --> 00:29:48,174
Some really basic, I don't want everything, but a few more elements might be really useful.

428
00:29:49,354 --> 00:29:53,914
C++ APIs for Qt Quick is something that we have fortunately avoided doing so

429
00:29:53,914 --> 00:29:58,374
far because it has allowed us to change things in ways that would not have been

430
00:29:58,374 --> 00:30:00,074
source or binary compatible.

431
00:30:00,454 --> 00:30:04,114
But I think we need to start looking into, okay what what elements do we have

432
00:30:04,114 --> 00:30:08,454
um can we have some more differentiated api commitments,

433
00:30:08,994 --> 00:30:11,754
for instance we have now a number of apis in

434
00:30:11,754 --> 00:30:15,014
qt where we say it's um it's uh

435
00:30:15,014 --> 00:30:21,214
not fully source compatible over multiple minor versions rh i for instance or

436
00:30:21,214 --> 00:30:24,714
the native interfaces so we could do something like that also for more cute

437
00:30:24,714 --> 00:30:29,674
quick elements um but we need to be very careful and make very sure that we

438
00:30:29,674 --> 00:30:34,714
know that we don't plan to change things in the future of course yes.

439
00:30:36,240 --> 00:30:40,680
Question back there. So, basically related to the previous question,

440
00:30:40,860 --> 00:30:45,940
what's the state of the widgets and how much effort is still going there or none at all?

441
00:30:46,500 --> 00:30:51,060
Widgets are maintained and actively maintained. We have Christian Ehrlicher,

442
00:30:51,120 --> 00:30:54,280
for instance, from the open source community doing a significant amount of work

443
00:30:54,280 --> 00:31:01,860
to make sure that widgets and their styles are painting well on fractional scaling

444
00:31:01,860 --> 00:31:08,480
displays that we have good high DPI support across all different platforms.

445
00:31:08,820 --> 00:31:12,560
So on that level we want to keep widgets of course working and relevant and

446
00:31:12,560 --> 00:31:13,720
continuously improve them.

447
00:31:13,840 --> 00:31:18,000
We have made a number of improvements also to the rendering architecture on

448
00:31:18,000 --> 00:31:21,760
some platforms to have optimized scrolling for instance.

449
00:31:22,040 --> 00:31:26,000
We have implemented a Windows 11 look and feel.

450
00:31:26,980 --> 00:31:33,060
Fluent WinUI 3, I think, is the official name of the design system for Microsoft.

451
00:31:33,280 --> 00:31:37,040
So both on the Qt Quick side, we have implemented that style now as a Qt Quick style.

452
00:31:37,240 --> 00:31:39,840
And also on the widget side, we have implemented a completely new style.

453
00:31:40,000 --> 00:31:44,060
And if you heard the previous presentation, that was a bit or is continuing

454
00:31:44,060 --> 00:31:45,220
to be some heavy lifting.

455
00:31:46,120 --> 00:31:49,600
But we don't right now have any significant plans to introduce,

456
00:31:49,700 --> 00:31:50,480
for instance, new widgets.

457
00:31:50,940 --> 00:31:55,720
But yeah, contributions always welcome of course on the widget framework as well.

458
00:31:55,860 --> 00:32:03,180
So extending patches for extending existing widgets with certain minor things would be accepted?

459
00:32:03,820 --> 00:32:08,540
Yeah, right now we have an interesting patch for instance from a contributor

460
00:32:08,540 --> 00:32:11,580
to make the header view in our

461
00:32:11,580 --> 00:32:17,160
item view framework have a mode that is significantly less memory hungry.

462
00:32:17,680 --> 00:32:22,380
QHeaderView right now creates quite large and complex data structures.

463
00:32:22,480 --> 00:32:24,720
If you have millions of rows, for instance, in a header view,

464
00:32:24,900 --> 00:32:28,520
then that costs, just the header view alone already consumes a lot of memory

465
00:32:28,520 --> 00:32:31,700
because it needs to keep track of potential section movement and these kind of things.

466
00:32:32,200 --> 00:32:37,460
And we have a patch under review now to introduce a new mode where certain facilities

467
00:32:37,460 --> 00:32:41,160
are gone, but you don't allocate a gigabyte of memory just for the header.

468
00:32:41,460 --> 00:32:46,780
So yes, these kind of things, absolutely interested, and contributions, like I said, welcome.

469
00:32:47,180 --> 00:32:50,020
They don't necessarily, perhaps that's a different discussion.

470
00:32:50,940 --> 00:32:54,620
Releasing things on top of Qt, making things on top of Qt discoverable also

471
00:32:54,620 --> 00:32:56,420
if they are not part of the Qt framework itself.

472
00:32:57,040 --> 00:33:00,440
If there are new widgets that people have created and that we know that people

473
00:33:00,440 --> 00:33:03,480
love, then hopefully they can find them, but of course, again,

474
00:33:03,620 --> 00:33:07,720
patches to existing code or also small additions here and there, absolutely.

475
00:33:10,161 --> 00:33:15,161
Yeah, somewhat similar question, again, because I think it's an important topic.

476
00:33:17,261 --> 00:33:22,201
So Qt Widgets is not as much the focus of development anymore than it used to be.

477
00:33:22,621 --> 00:33:26,281
So we have that on the one side. And on the other side, we have things like

478
00:33:26,281 --> 00:33:28,401
Qt Quick Controls, which don't really

479
00:33:28,401 --> 00:33:33,581
seem to be that focused on desktop applications as Qt Widgets used to be.

480
00:33:34,061 --> 00:33:38,101
So what is your vision for how development of desktop applications,

481
00:33:38,301 --> 00:33:41,381
of traditional desktop applications are going to work in the next years?

482
00:33:42,861 --> 00:33:46,821
Okay. The vision for how desktop applications should be developed with Qt.

483
00:33:47,261 --> 00:33:51,181
Ideally, we get Qt Quick controls to be on feature parity with widgets.

484
00:33:51,921 --> 00:33:55,461
So, like I mentioned, we have done quite a bit of work on the item views in

485
00:33:55,461 --> 00:34:00,161
Qt Quick to support what would perhaps consider to be a hygiene factor,

486
00:34:00,381 --> 00:34:02,461
but on a mobile device certainly hasn't been a priority.

487
00:34:03,921 --> 00:34:06,801
Flipping or reordering columns in a table.

488
00:34:07,481 --> 00:34:11,641
I don't know how many of you do that on your on a table on a touch on a mobile

489
00:34:11,641 --> 00:34:14,861
phone But on the desktop it's clearly something you want to do so making these

490
00:34:14,861 --> 00:34:17,441
use cases definitely possible also with Qt Click controls,

491
00:34:17,901 --> 00:34:22,821
Has been the focus item views big focus on a big focus on that one desktop styles.

492
00:34:24,132 --> 00:34:28,692
We took a bit of a shortcut with Qt 6 to basically implement the quick styles

493
00:34:28,692 --> 00:34:35,872
for native Windows and native Mac OS by using the Q style code from widgets

494
00:34:35,872 --> 00:34:37,772
and just making it widget independent.

495
00:34:38,852 --> 00:34:42,272
Okay, that got us somewhere, but I think it's also a very limited architecture

496
00:34:42,272 --> 00:34:44,692
and it's not perfect by any means.

497
00:34:44,692 --> 00:34:49,132
The experience that we now have from Doris

498
00:34:49,132 --> 00:34:52,312
and Carolina here for instance doing the iOS style as

499
00:34:52,312 --> 00:34:55,132
a as a complete separate implementation of the

500
00:34:55,132 --> 00:34:58,072
in Qt quick not using any

501
00:34:58,072 --> 00:35:01,212
native api's from iOS to get the controls I

502
00:35:01,212 --> 00:35:03,852
think that has taught us a lot and how we should maybe also do it

503
00:35:03,852 --> 00:35:06,672
for the other side so that's one way of also making the Qt

504
00:35:06,672 --> 00:35:13,412
quick styles for desktop better ultimately in in the mid-term and perhaps also

505
00:35:13,412 --> 00:35:17,492
in the long-term because widget code will be out there and nobody should feel

506
00:35:17,492 --> 00:35:21,772
that they have to toss all their decades of widget code and throw it away and

507
00:35:21,772 --> 00:35:24,772
rewrite it in Qt Quick because we all know what rewrites usually end up as.

508
00:35:25,432 --> 00:35:31,472
So rather accepting the fact that Qt Quick and Qt Widgets need to coexist and

509
00:35:31,472 --> 00:35:34,612
should coexist and making that a good experience where people don't say in the

510
00:35:34,612 --> 00:35:37,612
end, like, oh my God, I hate it, but at least I got some pixels on the screen.

511
00:35:37,932 --> 00:35:42,592
So making that a smooth experience and a good experience is a bit of work,

512
00:35:43,432 --> 00:35:46,772
both technically and architecturally, making the different composition modes

513
00:35:46,772 --> 00:35:54,472
work, not making it perform well enough, and also, yeah, flexible and toolable.

514
00:35:55,192 --> 00:35:58,332
That is ultimately also one big challenge with these user interfaces.

515
00:36:00,192 --> 00:36:05,172
People that are using the Qt Widgets Designer, how can we make that Qt Quick

516
00:36:05,172 --> 00:36:09,112
aspect also a well-tooled part

517
00:36:09,112 --> 00:36:12,012
of it so that you don't have to learn two completely different workflows.

518
00:36:12,792 --> 00:36:16,492
So yeah, work to be done, but I think in the foreseeable future,

519
00:36:16,652 --> 00:36:20,892
a desktop application that is written partially with Qt Widgets and partially

520
00:36:20,892 --> 00:36:25,272
with Qt Quick, I think is absolutely the reality and we want to make that good.

521
00:36:26,905 --> 00:36:31,905
Yeah, for me, it was to not just say, oh, my God, I hate it.

522
00:36:34,565 --> 00:36:35,525
I paraphrased.

523
00:36:40,825 --> 00:36:45,865
On QQuick widget, we use it.

524
00:36:45,925 --> 00:36:52,005
We depend from it a lot in the system settings app where some things are in

525
00:36:52,005 --> 00:36:53,565
QML, some things are in QWidget.

526
00:36:53,565 --> 00:36:56,525
One of the most painful thing

527
00:36:56,525 --> 00:36:59,505
was the focus chain of keyboard navigation

528
00:36:59,505 --> 00:37:02,585
so we have horrible things with event filter and

529
00:37:02,585 --> 00:37:06,725
things that often breaks and so what are

530
00:37:06,725 --> 00:37:09,805
the plans are there upstream fixes

531
00:37:09,805 --> 00:37:12,745
the plan is to have it fixed in 6.8 i

532
00:37:12,745 --> 00:37:15,485
think our daughter has is no

533
00:37:15,485 --> 00:37:18,365
longer in the room but she spent quite a bit of time leading

534
00:37:18,365 --> 00:37:21,445
up to the 6.8 release with with axel i believe to move

535
00:37:21,445 --> 00:37:25,025
the whole focus chain logic into Q window so

536
00:37:25,025 --> 00:37:29,025
it's no longer the the information about the focus chain no longer lives just

537
00:37:29,025 --> 00:37:36,465
in the widget side and then we need to somehow merge it at at runtime so i think

538
00:37:36,465 --> 00:37:39,505
it will solve runtime but i think we have now a more consistent architecture

539
00:37:39,505 --> 00:37:43,685
that we have a single focus chain and so that we can actually know how to pass

540
00:37:43,685 --> 00:37:44,985
focus through the different frameworks,

541
00:37:45,525 --> 00:37:49,405
if there are bugs please let us know i'm would be surprised if there are no

542
00:37:49,405 --> 00:37:52,145
bugs because this those new code our acts and see how it works,

543
00:37:52,205 --> 00:37:54,445
but I love it already. Yep.

544
00:38:00,493 --> 00:38:01,233
More questions?

545
00:38:07,133 --> 00:38:08,893
We have two more minutes for questions.

546
00:38:13,593 --> 00:38:18,833
Yeah, I mean, as you might know, I was the gold champion for accessibility two previous years.

547
00:38:19,453 --> 00:38:23,573
And I wonder, like, if there's some plans from the Qt side to improve the accessibility

548
00:38:23,573 --> 00:38:26,053
of Qt and Qt applications.

549
00:38:27,253 --> 00:38:28,813
SVG? Accessibility.

550
00:38:30,813 --> 00:38:32,053
Accessibility. Accessibility.

551
00:38:35,213 --> 00:38:38,853
The goal with accessibility in Qt is of course that it just works.

552
00:38:40,613 --> 00:38:48,093
We have been maybe focusing a bit too much on the plumbing and on the technology,

553
00:38:48,353 --> 00:38:51,213
making it possible for people to write accessible user interfaces.

554
00:38:53,093 --> 00:38:59,393
We have some pretty good confidence that it works and we have at least one KDE contributor,

555
00:38:59,913 --> 00:39:03,233
Michael Wiechorn, that is doing a significant amount of work to make sure that

556
00:39:03,233 --> 00:39:08,133
we support also some of the more recent additions to the accessibility frameworks,

557
00:39:08,453 --> 00:39:09,373
announcements, and so forth.

558
00:39:09,593 --> 00:39:12,993
So we have some new APIs in Qt 6.8 thanks to his contribution.

559
00:39:14,933 --> 00:39:17,353
But I think, yeah, in Qt, we need to always be careful that,

560
00:39:17,393 --> 00:39:19,673
okay, we make it possible for people to write accessible applications,

561
00:39:20,753 --> 00:39:23,993
but is it also the default outcome of what people do?

562
00:39:24,693 --> 00:39:30,313
Is it a steep hill to climb to actually make an application accessible or can

563
00:39:30,313 --> 00:39:32,893
we make it easy by default?

564
00:39:33,433 --> 00:39:36,133
So that's, yeah, there is work to be done.

565
00:39:37,333 --> 00:39:42,213
A diverse community helps hopefully a lot with making that better.

566
00:39:43,273 --> 00:39:48,073
So contributions always welcome and very happy that Michael is doing a lot of work there for us.

567
00:39:52,873 --> 00:39:54,073
Okay, thank you very much.