QtWebEngine/WorkShop 2024 October

From Qt Wiki
Jump to navigation Jump to search

When: 2024-10-10 - 2024-10-11

See QtWebEngine/Features for the last two workshops

Topics

  • WebEngine Use Cases
  • Qt 6.9 planning
    • Windows ARM support
      • QtPDF was easy, but WebEngine is more complicated
      • Kaloyan looking into it
      • One major issue is GAS assembly.
        • ffmpeg, boringssl, and dav1d
        • For boringssl and dav1d we can disable assembly optimizations.
        • We have a perl script that converts GAS to NASM that could make us build on MSVC
    • Extension API.
      • Basic API: Load manifest plus path.
      • Addons are enabling more Chromium extensions APIs (we currently only provide a limited amount).
        • One complicated API that is widely used is the tabs API, which is not that simple to integrate
      • PWA API
        • Has some database of installed apps
    • D3D12 support
      • Even doable? Does it need Dawn?
      • We probably need Dawn graphics integration anyway
    • ANGLE use with WGL/GLX/EGL
      • Peter is working on it
      • WGL removal patch up for review
      • GLX/EGL is integrated in 5.9, but not on by default.
    • New setting for touch-event handling API, to avoid websites detecting desktops with touch screens as mobile.
    • High-contrast theme passing on Windows
    • Printing header and footers.
    • Async download requests
    • Profile builder API
      • Deprecation of old API might be complicated when we copy to old Qt versions.
    • Wrap up frame-based API.
    • Finished (first) rendering signal.
    • Update to Chromium 128, and 130
  • Use cases
    • SVG renderer
    • OAuth
    • Stacking of native views (webview)
  • Qt WebView speculation
    • WebView2 Windows backend
    • C++ API, QtWidgets, or QtGui QWindow?
  • Version independence
    • We are currently just pretending to be qtbase version
    • Should we continue to support 6.5 in 6.9?

Agenda

Thursday

  • Agenda discussion
    • Scope of webengine
      • Cypersecurity resilient act
      • WebView
    • Talk of what we want to do
  • Feature Brainstorm
    • QWebEngineWindow
    • Pretend to be patch level version in agent string?
    • QWebEngineUrlResponseInterceptor
    • WebData
    • Autofill API/ Password manager integration
    • More extensions API
    • Payment API
    • Removing Machine Learning/WebNN crap
    • Subresource loading status.
    • Minimal build, binary size reduction.
      • Investigate existing if still meaningful, and new options that are.
    • Reinitialization with QApplications.
    • Early shutdown of WebEngine
    • Single executable (in main binary helper process)
      • Needed for moving networking out of main process on some platforms.
    • Static builds (licensing, and needs above)
    • Dawn rendering
    • Paint to QPainter/image, doesnt have to be live
  • Support brainstop
    • Patch reduction
      • Code changing the same code, should ideally be one commit, to not deal with merge issues multiple times.
    • Upstreaming
      • Peter presented
    • Rebasing
      • Allan and Michal can do early stage, the goal is to have three people that can do the early stage.
        • We might need to have somebody working on rebasing almost always
      • First stage is that it builds on most platforms, and runs almost all tests without crashing (but possibly failing)
      • Everybody helps after first stage is done.
      • Suggested [] notation of chromium patches. We have FIXUP, [Revert], [Backport], we can add compiler or platform or qt module. Consider mixed/lost backport commits([Persistent Backport]?).
      • We should consider doing a team review of all patches.
  • Backlog grooming
    • We went through the 50 oldest and 20 newest bugs
  • Follow-up discussion
    • We should try to have more reliable tests
    • SCCache should be investigated
      • Can we preserve WebEngine cache better
      • Can we enable SCCache on Windows

Friday

  • Chromium Patch workshop
    • We went through the 94 first patches in 126-based
  • Documentation workshop
    • Motivation in qtwebengine landing pages
    • Add better short description of WebEngine
    • Overview
      • Add references to WebView for unsupported platforms
      • Update graphics overview for webenginequick
      • WebEngine overview is bad.
      • What a QWebEngineScript should look like and what it can do should be on the class page.
      • References to examples
      • Mention user-certificates with ssl certificates
      • High DPI being covered explicit is outdated
      • Related modules should cover qt pdf and not try to link to qtwebkit
    • Features
      • Link to external documenation for proprietary codecs.
      • Last sentence on codecs is bad
      • Reprioritize integrated devtools over remote debugging
      • More on custom schemes. For instance with OAuth.
        • Also mention the scheme registration
      • Hardware acceleration section is outdated
      • HTML5 DRM could say more explicitly we do not ship it.
      • Remove mentioning of features added before Qt 6.2
      • WebChannel out of webSockets doc, and maybe remove websocket doc.
      • Mention HTTP/3
      • Native dialogs. Quick Controls 1 no longer exists. Form validation message no longer work on Qt6.
      • And maybe the native dialogs often arent native
      • Pdf file viewing should not mention pluginenabled setting.
      • Lifecycle should probably mention very early it does nothing by default.
      • Process module is not a feature, move to overview. Check if custom settings are valid and up to date.
      • Spellchecking should mention Win support, after Kaloyan has tested it. Which he says he will..
      • AuthUX feature
      • Permissions Feature
      • Frame API features
      • Push notifications
    • Platform notes,
      • nodejs is should be higher than 14
      • Linux gcc min is 10 AFAIK.
      • Linux libgbm needed
      • Linux Wayland config should be mentioned
      • Windows, clang-cl 19 is needed
      • Check macOS support. Maybe just link to QT platform support.
      • Earlier versions should update versions, and have cmake example instead of qmake.
      • Mac app store compat. Check and remove if ignored now.
      • Check mac airplay section
      • Macos QSurfaceFormat paragraph update
      • Update sandbox section (moss checked this earlier)
      • command line arguments need to repeat --webEngineArgs everywhere
      • Accessibility is outdated now.
      • Fullscreen windows opengl is outdated, remove
      • Move window application manifest to deploy
    • Debugging and profile
      • Console logging should tell how to get console logging on Windows.
      • Developer tools is repeated from features/overview, deduplicate emphasise internel views.
      • --enable-features=NetworkServiceInProcess is default now. Maybe document the reverse
    • Deploying
      • Target platforms probably not needed here
      • Some standard parts are from Qt deploying can be removed, or just referenced.
      • devtool resources are not just for remote debugging
      • Manifest info from Windows moved here.
    • Module evolution could mention APIs deprecated or improved in Qt 6.x
    • Examples
      • Maybe merge module examples pages.
      • Running repeats. Do we want it?
      • Recipe.
        • Link to scripting and webchannel features
      • There is a problem with wrapping of examples documentation.
      • Cookie browser, is very minimal.
      • Maps add link to geolocation feature
      • Printme could be expanded to frame api.
      • Simplebrowser link to deploying for macOS.
      • Ditto, do that for windows too.
      • Videoplayer, link to proprietary codec issue.
    • QML docu
      • ShareOpenGL attribute is not needed. Initialize will do that where necessary
  • Feature and Support follow-up
  • Backlog grooming
  • Key-customers, and major users
  • Conclusion
    • Roadmap

Summary

What to do better next time?