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.