Hello everyone,

It has been a few days since we reached the first milestone of the Qt Bridges projects (not a full-blown release!), so I wanted to share more information about it, since the repository requests email took many people by surprise on what was this about.

If you already know about the project and are interested, I’d like to encourage you to visit the information that we shared in the Qt Forum, so you can try it out!

https://forum.qt.io/topic/164138/about-the-early-code-access-in-qt-bridges

The next steps are a Beta Milestone (planned for late March), and the Technical Preview for the end of May, but most likely we will keep you posted with the latest updates.

Below, there is more information that can be useful if you are curious about this new project we are developing within The Qt Company.



# What is Qt Bridges?

This project has been a research project by The Qt Company, that was publicly announced during Qt World Summit 2025. The objective is to bring more languages to the Qt ecosystem, by providing not a set of bindings to the Qt API but re-thinking the interaction between Qt Quick and other languages.

The whole idea is built on top of creating Qt Quick applications with a QML file defining the user interface details, and the logic implemented in other languages. The model is simple:

* QML is used to define the UI
* Host language implements the application logic (So far Java/Kotlin, C#, Python, Swift and Rust) * Qt Bridges provide a small, idiomatic, language-native API to describe what data should be exposed to QML and signals interactions in a way that looks native to both sides.

We have learned by other binding projects like Qt for Python that maintaining bindings to other languages is a very complicated task, and creates a few cases when one needs to do interpretation of C++ idioms, types, and ideas that might not be straightforward to represent in other languages (the usual example I give is ‘What is a void* in Python?’). Another motivation is to hide that from users, by providing a new API that can do all that handling internally as much as we can.


# Who is the target audience of the project?

Considering the goal is to bring this to new developers outside our Qt/C++ community, the target audience of Qt Bridges are developers who have no Qt knowledge at all but are looking for a UI framework solution.

It’s expected that seasoned Qt developers will fall into the trap of trying to achieve the same they have been doing for a long time with Qt/C++ in Qt Bridges, but the most likely outcome is that it will not be possible. However, we invite you to share your ideas with us so the use-cases can be considered once we are evaluating new API.


# Why is this project aimed at being inside the Qt Project?

We believe this project will be a good way to introduce new developers to the Qt Project, and in some cases, they will get more familiarized with what we have and maybe explore the Qt/C++ offering we have, or at least being aware of so we could enable Qt Bridges to include further functionality.

Another important aspect is the introduction of new languages to the Qt Ecosystem, by establishing a way of continuing to expand them, following similar integration patterns.


# Is this aimed to be a new module for Qt?

No, this is not aimed at being an official submodule for the current qt5.git repository, but its own project. The releases are not planned to follow the Qt release schedule, nor interfere with the Qt releases.


# What’s the license for this project?

Even though Qt Bridges is not a Qt sub module, we wanted to still follow a similar license scheme, so we are planning to release Qt Bridges under LGPLv3 and Qt commercial licenses.

One of our objectives is that this can become part of the KDE Free Qt Agreement as well, to secure the Open-Source aspect of the project.


# Why does each language bridge need a separate repository?

So far, the project has been developed internally, on a mono repo, which has shown not to be the right solution, because in some languages, the root of the repository needs to contain certain files and configuration. For example, Swift requires a ‘Package.swift’ file; Python needs a ‘pyproject.toml’ file. For C#, work was already underway, based on a separate qt-labs repository, and with a broader scope than the current approach of Qt Bridges, such as allowing C++ code to call into existing .NET libraries.

We aren’t ruling out adding more languages in the future, so having a separate one is the best solution we found after some internal discussions.

We are using a meta repository qt/qtbridges to bring all the language submodules together for people that wants to develop accessing different languages bridges, and for the common project’s documentation (currently a snapshot can be found here: https://doc-snapshots.qt.io/qtbridges-dev/index.html ).


# How is this being released?

Since the goal is to approach different languages communities, our goal is to prepare packages/plugins and release them on their specific platforms (crates.io for Rust, Maven Central for Java, NuGet for C#, etc.).

Additionally, since we are aware the Qt users might still want to give this a try, we are settling the details for people to also download the project with mainstream Qt Installation process (from the Installer/Maintenance tool).


--

We really believe this is the right direction for extending our ecosystem and transforming Qt into an amazing language agnostic framework.

Cheers

--
Dr. Cristian Maureira-Fredes
Principal R&D Manager

The Qt Company GmbH
Erich-Thilo-Str. 10
D-12489 Berlin

Geschäftsführer: Mika Pälsi,
Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht
Charlottenburg, HRB 144331 B
--

--
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development

Reply via email to