The Role of New Languages in the Future of the Qt Ecosystem - Cristián Maureira-Fredes
Watch on YouTubeVideo summary
The presentation addresses the evolving landscape of programming languages within the Qt ecosystem, moving beyond the traditional reliance on C++ to embrace a broader array of tools for future development. The speaker highlights that while surveys often show Python as dominant among beginners due to its simplicity and extensive tooling like pip install, professional environments still heavily utilize C++, JavaScript, Java, and Rust. A key argument presented is that Qt has historically focused primarily on C++ bindings but must now adapt to support other languages effectively to lower barriers for entry and expand the community. The talk emphasizes that simply providing standard language bindings often forces developers of different paradigms—such as Python decorators or Swift observables—to work against their natural development styles, which can be discouraging for new users seeking quick wins with simple applications like calculators or data viewers.
To solve this friction between diverse programming languages and the Qt framework, a new initiative called "Qt Bridges" has been introduced to split application logic from user interface concerns using an intermediate layer. This architectural shift aims to minimize the footprint of C++ code in non-C++ projects by allowing developers to write their back-end logic entirely in their preferred language while interacting with Qt models and views through a standardized bridge. The speaker showcases proof-of-concept implementations for various languages, including C# for Windows development, Swift for Apple ecosystems, Java for Android compatibility, Kotlin for interoperability, Go, and Rust. Each example demonstrates how the code remains idiomatic to its respective language family while requiring only minimal Qt-specific imports or decorators to launch applications and manage data models without needing deep knowledge of internal signal-slot mechanisms.
During the Q&A session, important clarifications were made regarding the scope and limitations of this new approach. The project is not intended to replace existing robust solutions like PyQt for complex web services or C++ native libraries but rather serves as an entry point for creating simple desktop applications in languages other than Python or Rust. Performance concerns regarding runtime code generation were addressed by noting that while initial technical previews may have longer compile times compared to static linking, the goal is to gather community feedback before optimizing further; similarly, advanced IDE features like autocomplete are expected to be extended across all supported bridges over time rather than being lost entirely. Ultimately, the vision is to foster a more heterogeneous and inclusive ecosystem where developers can contribute ideas from different linguistic backgrounds without feeling forced into an echo chamber of C++ purists or Python enthusiasts alone.
Read the full video transcript
Thank you. Um,
so yeah, so my name is Christian. I work
in the cute company for a few uh years
now. Maybe you have seen me in other
events usually talking about cute for
Python.
But today I just not want to talk about
Python but many other languages as well.
Um well you can find me there on social
media in case you have questions. I will
stay around until think at Tuesday. So
don't be afraid if you find me on the
corridor just to ask me anything you
have. So since we are talking about more
programming languages
I want to take it slow and not have not
be not be very opinionated on this talk.
So let's start slow with all this talk.
So the first question is what is the
best programming language?
Is anyone brave enough to shout which
one is it?
Exactly. See, not the same answer
assembly of course.
So yeah, usually you get asked this
question by people that is starting in
programming and it's very it's I feel
very old when they say well it depends
but that usually is a reality of course
we all know about it but of course
people read uh surveys and they see
results. You have been familiarized with
Tio index and stuff that recently for
example last month even Python got a 10%
something increase you still see C++
there I think there was a few months ago
when C++ passed C uh so you will say
well that's not really relevant because
what okay so there are other surveys as
well so you can take I don't know Stack
Overflow survey again I would say that
this is prominently with more beginners
but even though you see there
professional developers well lots of
people using JavaScript of course that
you have
Python, C, Java, PowerShell, C++ at the
bottom there.
It's a different of course story when
you have learning to code people that
they are more focused in maybe some easy
language in a way that well Python is
still the king there as you saw before
in the index but as I told you ah and if
you see everyone combined of course the
result is quite similar to the
professional ones. So usually what hap
what happened to me at least when I
started to learn in the university I
really was one of these people that took
one programming language and tried to
solve everything with that and little by
little of course I understand that the
solution is not like just having one
hammer but having a a toolbox of the
thing and this is something that I
believe that in the cudos system we have
been I don't want to say suffering but
you know like being part of is that
sometime focus on the of course C++ the
implementation but we have seen out
there that more languages are playing an
important role right in many other
fields and people want to use other
languages right so just as a recap in
case you have been living under a rock
the languages h and the cute project as
you know since the release in early
stage C++ then you can say that's not
the official QML logo but still um in
2010 then pyite was started to be in
develop in 2011 later on was accepted in
2018 and currently or in the future we
are really exploring at least from the
cute company like which are all the
languages that should be part of the
cute ecosystem right so so far as you
might be familiar the approach of
integrating more programming languages
has been bindings right so I guess that
we are on the same page here
if you're familiar with that wiki page I
was very impressed last time that I
checked it that there were so many new
languages that are having some bindings
for cute you can go there and there are
like even languages that don't even know
like there is a ring cute apparently for
the ring programming language but I
would say at least for me these were the
more like attractive one and more
important ones or more used ones. So you
see that pi python of course has been
around for a long time for pyute which
is developed by the rear rand computing
pyite which is the lgpl version from the
cute company as well and then you have
ras like previous um efforts like cuma
object are the the crate there or cxx
cute lately developed by ko to my
surprise there is another set of
bindings that is usually very up to date
which is cute jumby who knows cute jumby
here good so a few hands the the the
person behind I think there is only one
has been also managed to you know doing
the the releases and everything. So it
seems like it's also there might be a
lot of Java developers interesting in
the cute ecosystem and there are other
languages there if you're not familiar
with Julia or with Nim or with ZIK uh
but they're really interesting. So this
is nothing new. Of course, Falker said
like long time ago in the academy22 that
the idea also for the future of Q system
was to have more programming language uh
integrating into this and again even
there the idea was not new. I mean many
people I have encountered in the cute
project that said yeah long before I
said that we should have more
programming languages and so on and so
forth. So it's something that you should
not be unfamiliar with because it has
been the message for a long time. So the
motivation so far has been that of
course other languages might need a UI
frameworks like we have in cute. Uh C++
is very flexible to create bindings for
their for other languages. Well flexible
is not the same as easy but flexible. Um
also it's good to do like language
showcase like oh you know cute also we
made some bindings for this newly appear
like written programming language and
also cute popularity.
So which other lang what other languages
bring to the table when we are talking
this thing from the point of view of the
cute ecosystem. I cannot talk about all
of them but I can only talk about Python
and Rust which has been in my opinion
the most popular bindings that we have
so far. So in the case of Python I
usually like to show this snippet of
code. You should not be able to read it.
Don't worry about it. It's a very simple
cuming window with a push button. And I
always try to push this code say to say
like look how simple Python can be,
right? Everything in one file. you don't
need to compile only a few lines and
that's it very successful people is
happy about it I'm happy with it
another very important point about
Python itself is that the how many areas
Python has been thriving like you can
take like web development data science
recently with all the and even embedded
systems so people is really using this
as an example of how to get into
different areas and lowering the barrier
for people to start doing things in
those fields I mean before microython
for example or scratch going into
embedded system was very tricky. I mean
you need to learn C and we learned that
the talk before that people don't like C
and something very interesting as well
is the P packaging and tooling around
it. I think that one of the things that
make Python very popular at least within
the cute ecosystem is that you could
install it by one line command line p
install Python 6 and that's it. You
cannot beat that because I don't know
which C++ libraries do you use besides
cute but I'm certain that the
installation process is not as simple
always
and something very interesting though is
that we noticed that a lot of real live
applications were combining C++ and
Python I was very surprised that the BFX
industry kind of most of the UIs that
are be with cute they do have scripted
languages on top in order to enable
people to have add-ons and extend those
things and also again lowering the
barrier for people to write some nice
plugins for whatever you are using your
cute and C++ interfaces. So this also
was very important a very critical thing
for people to start using it more but
this talk is not about Python. If you
want to read more about Q for Python,
those are very interesting links. The
URL thing will be posted and in the in
the channel. So now we can talk about a
little bit of Rust. How many Rust
developers we have in the
I was suspecting I was so I feel Rust is
not No, no, no. I don't have anything
about Rust. So if you're not familiar
with Rust since we don't have many Rust
developers, little snippets of code that
maybe are terrible written, but at least
it compile when I try them out. So you
want to find some similarities between
C++ and Rust. So you are not very scared
when we talk about Rust. Again, similar
thing. You start to see me, oh big
difference now. Oh, Rust doesn't have
classes. Uh but anyway, you can find
your ways around to try to implement
something very similar to object-
oriented programming. Um there so you
are now a little bit familiarized with
Rust. So you're not afraid when we are
talking about um in my opinion. For
example, after all the experience with
the many ways of interact interacting
for with Rust and cute, I believe that
CXX cute did an amazing job into trying
to be the tool for all the cute
developers that wanted to sprinkle some
Rust into their applications. If you
don't know about this project, of
course, you can you can check it out
there. But in a nutshell, as is
described, it's a safe FFI between Rust
and C++ is very idiomatic. H they use
procedural macros in order to generate
the bindings.
They have also really cool thing that
you can use rest thread to update the
kit state and of course this is still on
development because bindings are
difficult. You need to do a lot of
things in order to cover every single
corner case. H this work very well in my
opinion for cute developers for everyone
that was aware of cute. This is at least
the problem that I always see in that
because we announce the new things and
we announce it where in academy cute
contributor summit cure world summit. So
everyone knows cute. So you are like
yeah maybe another language that I can
try right and even for KD developers
lately I have been very happy to see
that at least a lot of people has been
working in also the integration of uh
enabling people to write a Kittyami
application with Python and also with
Rust. So if you are interested with this
there is a session later on that I'm
very interested. Yes. So Nicholas there.
So there's a question in the title. So
I'm really curious about what is the
answer. Maybe yes, maybe no. So yeah, if
you're curious about that, it's
something that also has been very
important in the KD ecosystem.
But then the question is always what
about everyone that is not aware of
cute? And I'm sorry to break this for
you, but there's a lot of people that
have no idea that cute exist. And this
was a very like a cold water bucket that
the first time that I started to go to
Python conference thinking that everyone
knew to cute framework get so old and
everyone used it and py cute existed
before and to my surprise when I was
asking in this audience like who knows
cute literally five hands at most
because most of the new developers were
not very familiar with it and there were
many other frameworks at least in the
Python ecosystem that were offering
things for them to build small and
simple user interfaces because we I know
that cute is very good for professional
development and everything else but most
of the people starting program I mean
what do they want to do a little
calculator a button that do something
like that or even exposing some data to
have a nice desktop application that can
help them to you know publish some
little software and stuff so it was very
strange for us so it was at least giving
us the idea that we might need to
explore other ways of bringing Q to
people
I want to go back to the case that we
had before how Many people here is
familiar with Python code. Okay, many of
you and is familiar with Pyite or PyQ?
Okay, still a few hands. So when I show
you this before and we show specifically
this code, you as a cute developer, you
will read this and say everything make
completely sense. But now try to put
yourself into the mind of a Python
developer that have never seen cute. You
are telling a few things here. So first
of all um yeah it's normal for us that
you will be inheriting from some cute
classes and implemented some uh methods.
Uh you need to understand how the cute
API will work. By the way, don't forget
to connect your buttons with this uh to
a slot, the signal to a slot. And also
in the same in the case of Python, you
need to decorate your your slots with
the slot decorator that of course is
come from cute core. And uh yeah, by the
way, we have this is an application, you
need to start the event loop and make
sure that you are exiting as well with
the app exit uh uh the same return code.
you are asking Python developers to
write a cute application from scratch
which is completely different to the
most of the cases like I have my Python
code and I want to have some application
user interface right so this idea is
something was bothering me and many
people at least in the cute project
overall that we need to really start to
think like what else we can do about it
so as I said this might feel very not
natural and a lot of extra work for
people to start even time time to time I
get questions like hey how can I get
started with pyite in python forums and
it's like oh yeah read the tutorial but
the moment they start to read and then
they see all the signals slot whatever
everyone gets scared so we need to try
to think like how we can expose this
thing there are other thing as well that
when we are exposing cute and C++ in
general as a binding for other languages
we are kind of like forcing that
language like please tell me how to do
these things I always try to put the
example that everyone is familiar here
with a void star right what is that in
python
We don't know right so we need to try to
yeah well this will be a pointer a
reference or something you need to start
to figure out and forcing the language
that maybe is not designed to that to
understand this concept and try to
interpret this concept and this is very
complicated so then the question how can
we include other languages without
breaking all these paradigms for
languages I believe that in our opinion
will be this new idea that we have which
is called cute bridges so far I don't
know if this is the final name h this
was recently announced in the cute world
summit as uh one of the new research
projects that we have around bringing
more languages into the cute ecosystem.
I never see names in technical slots. I
just want to give you a shout out to the
team that we have at the moment.
Recently a lot of people got involved of
the initial five people but uh maybe you
recognize one of those names in maybe
from Gareth if you are contributing to
cute but uh yeah in case you have any
question you might have seen the PM of
the project which is Vladimir and I am
currently the technical lead until
they'll fire me now there are more
people involved as well people trying to
think about what is the best way of
showing and having documentation for
this kind of project because now it's
not only like you know cute C++ API
Okay, we need to mix a lot of things and
languages have documentations in
different format. You need to parse
them. Should we use udox? Should we use
the local thing? There's a lot of
decisions to make. So the new approach I
tried to steal this diagram from a
previous contributor summit
presentation. Usually when you have your
application, the language bindings are
something kind of like in the middle
where you can kind of touch what cute is
doing by the language as we saw before
trying to have these Python classes or
everything from uh the application
itself. But the concept that we have
with bridges is that we want to really
split the idea of your application and
the UI that you will have. And this will
be with this middle layer that you see
there which is called a bridge.
So as I said splitting back end from the
UI mostly because we want to reduce the
cute footprint from the back end and we
want to have people maybe in a situation
that they could have the same
application
very similar and also we are still
working on instant in instantiable types
as well by using some QML private API
because why not
so the little implementation detail that
we have here is that at the beginning we
were envisioning these ideas we thought
ah nice so we can have the same code
that just changed the code and
everything should be the same only maybe
changing the I don't know brackets or
something that the programming language
will use but then we notice that well
not really because the concept of each
language will be completely different
like while in Rust we're using
procedural macros in Python we might
need to use decorators or in other
languages like swift we might need to
have observable types so even though it
will be nice to have like a little tab
to change and it's the same code
changing two lines the whole
implementation is completely different
depending on the language
Another thing that we are still
envisioning and still working on it is
that the package distribution is
something critical. I cannot tell you
and uh I hope my employer doesn't listen
to me but I cannot tell you like uh you
need to go and go to the cute installer
to install the package in Swift and then
you need to export and then it's make no
sense. We need to play with the rules of
the new programming language that we
want to. If you want to go to Swift do
what swift people do. If you want to go
to Java do what Java people do. So this
is very interesting for us because so
far we are exploring as we knew from RAS
from Python already but for other option
as well like C like having nugget
packages so configuration that the C
plus the C developers can feel
comfortable by developing in this thing
and not forcing or imposing the way that
we are all supposed to do it right
similar to that development environment
it's something that I have been
personally uh struggling with because
even though we love cute creator h and
we have adding support for cute for
python than cute creator. I know that
Python developers don't use cute
creator. Some of them do. But again, if
you want to play by the the other
programming language rules, we need to
go with other programming language R. So
if you are using, I don't know, C lion
for your C# development for some reason
or for C development whatever we go
there. Pycharm, ras, robber, anything we
might need to have this thing in mind
that we need to provide ways for you in
your development environment to develop
these applications which is very hard
because also we need to do plugins
there. So different languages, different
ids for sure. I know just again to to
know your opinion about it. How many
people here is using visual studio code?
Yeah, still kind of half or the majority
good creator.
I like your pride like yes
good so see different scenarios
different realities for everyone I
really don't want visual studio code
people to go to good creator good
creator people to go to visual studio
code and so on and so forth
something very important since we
announced this new project we have been
getting a lot of questions of like but
how can I do like whatever so even if I
hope you don't feel excluded by the
target users of this project as I told
before are new developers, right? You
can try it, you can join, you can do a
thing it, but it's most likely that not
everything that you're used to do with
cute will be able to do this with cute
bridges because our goal of course is to
expand the communities because otherwise
it would be an echo chamber if I present
you new something here. Some of you
tried it. Yay. Then we high five
continue next year. Some people try it
as well. We are not bringing more people
to the room. So that's is very tricky.
as sneak peek then I will show a few uh
snippets of code as always they're not
final you might not be able to read it I
tried to put it in the the slide so it
is visible but you can see the the URL
afterwards but yeah so one of the first
examples that we did um we have more but
just to try it out just to have the
proof of concept of this was a simple
application where you can add some
strings you can remove them you can edit
them and it doesn't allow you to get
duplications of those strings right so
you see here the QML code
so not so well it's a bit longer but
it's not so complicated to understand
and uh so then we will figure out how a
back end for this thing in the many
languages it will look like I hope you
can read them so the first one is C# by
the way I discovered this is the logo of
C# I was using the old one and
apparently this is the new one but
anyway um if you're unfamiliar with C#
simple function on the left so you don't
get scared a few features that if you
were curious about most of the memory
management. It's interesting being kind
of like very type safe and having stroke
typing for for Windows and uh being kind
of like the first programming language
that Windows development uses. There are
many other like the the standard library
they have is quite experience quite
large sorry and they have many features
as well like in many other languages a
single way generics lambda expression
one whatever. So the reason that at
least in my opinion that we would choose
this C# is because again still C# is the
king in Windows development. So we don't
want to neglect that even if we uh we
are most of us are using Linux I we need
to of course include people that are
using Windows for some reason and uh yes
we had some experience before that uh
there was this cute.NET net maybe you
have heard about it you have seen it
before some people in the company were
trying playing around in order to
integrate net and cute applications the
net ecosystem is very large as well they
have their own conferences they have old
events and stuff so yeah more people
around and even the tool is not that
great in my opinion it's very useful
compared to everything what they have
with visual studio and all the other
thing nugget packages
so this is how it would look like I'm
very sorry if you cannot probably read
but as I said later on you can check the
URL
And you have here on the side you have
like a class back end. You are
implementing with some unique string
list model that of course is implemented
in the bridge side. And then you have a
few functions that is add string
duplicate found handler one duplicated
found but as you can see the and you can
spot the cute mentions on this code are
quite minimal. So you have a namespace,
an import, and of course the model will
have something here, but everything else
is C# and the main of course you need
more cute stuff there. So you can load
the the QML file and try to wait for the
event loop to finish. So reducing foot
cute footprint in the code that is using
as the back end. So we go for Swift. Uh
if you're unfamiliar with Swift, again,
little code there so you feel more
comfortable. safety and performance,
modern syntax. It's a very interesting
story. I mean, I was not very familiar
with Swift and when I started to read
like how the whole thing started or the
people involved in the language was
like, whoa, okay, but it's really cool.
They have an interpretive mode as well
and again after all the features and
things that they have, the reason is
that it's still the default language for
Mac OS development. we because again
people doing that they just open Xcode
and they start to do things or people
doing iOS development. So there were
some previous effort I remember a couple
of world summits ago uh I think at one
of our colleagues to was showing me a
new test that you can find some swift
code into
related to a quick application and I
think it was translated afterwards in a
test. So well we had some at least know
how that of course you can link them
together and internally and Apple uh
they have been pushing a lot for swift
to be more like a good programming
language for Linux and Windows. I don't
know if you have tried them at least I
tried on Linux and it work but on
Windows I have no idea. So again we
don't need to neglect if you want to go
to Apple developers overall we need to
try to go and play by the rules.
Similar idea here as you can see things
are started to change. We have a little
bit more of cute things on the left
side. There is now a decoration here on
the class cute bridgeable and then we
have a couple of um observable types and
then edit string add string but again
nothing else that explicitly have cute
code. So swift developer can check this
code and said yeah that makes sense only
this little decorator on the top. uh for
of course for the starting the thing you
need to have of course more stuff like
the list model is something that is
provided by the bridge and then you need
to deal with uh setting the root for the
QML and launching the application but we
believe that at least this is completely
an improvement compared to the binding
situation
ah the videos are not being reproduced I
have some little videos after each
language that's uh but you will see it
if you open in Firefox I think that this
might not be but uh you have a little
demo of the code being compiled and then
the application popping up and doing
some But I'm missing those. Java don't
go please. I know it's not the most
loved language but it's very use and you
cannot neglect this. I mean having a
more heterogeneous community also
implies that we might need to include
languages that you might not like but
maybe they will be a good user base with
new ideas or things how to improve this
thing. So if you are for some reason you
are not familiar with Java. A little
code on the on the left again. Uh well I
will not say many things. I mean I guess
that everyone would be familiarized with
it but you know the memory management
they have the all the plat independence
I think I was also even doing that Java
applets at some point why I don't know
um and yeah they have like good security
at least with the bite code verification
which is a feature that I really like
but uh yeah the main idea at least that
why we pick Java is for the experience
that we have because in cute you know
that you can develop for Android and
also similar to Android we have some
offerings regarding automotive that also
mixes some Java as well. We have a
project that also we're generating some
code called cute jenny that you can
check out and as I told you before there
is an active thirdparty library that
allows you to have bindings for the cute
project which is very interesting in my
opinion. So it is something that is
important and at least we cannot neglect
it. Another h here is how the code will
look like. These have a little bit more
of cute related things because I said
languages implementing differently. You
have here at least some degression to
the class a special callback which is
nothing else than an interface that we
have here the state the model. But in a
nutshell at least you can see that the
add string and update and remove are
something that could feel very familiar
with Java developers.
I still get nightmares about how you
need to declare the the main in Java.
But anyway, um again video that you will
see later on because it's not here. And
another interesting feature is that you
get kind of for free the cotling
interoperability. Who knows cotling here
has you? I guess you all feel that it's
there's a language that was created from
Java developers that wanted to have
Python and they said we cannot have
Python. we have codling now but it feels
very comfortable at least and that's a
good thing because then we got a new
language I mean there are codling
conference and stuff so more people that
we can bring to the cute ecosystem
so now I want to talk about Python and
you will say wait why because you
already had Python but yeah well it's a
different story so again most of you are
familiar with Python I will not bore you
with all the the different um features
that the language has but most of our
motivation at least for picking Python
as a language is that we had a lot of
experience with Q for Python already the
whole binding generation process the
reflection of QML types h is still the
most popular language according to those
two surveys if you have another survey
let me know I can put it in the slide
but still the most popular language out
there and the interoperativity with many
technologies I was briefly discussing
before that currently in the Python
ecosystem if you're not very close to it
a lot of people is rewriting a lot of
tools in Rust for some people it's like
what is faster but uh it's a lot of
there's a lot of like rust things
happening within the Python ecosystem so
it's Very good thing that we are still
around with both languages.
Um again this is the application that
you might see you saying wait but this
is way longer than you had before. Well
kind of but if you really close look the
left code and you start to search for
cute related things. I think the only
one will be this one this line.
Everything else is a normal Python
class. Everything else is just Python
properties and so on and so forth. So we
don't have anything cute besides the of
course imports for launching the
application but we reduce a lot the
footprints there. So video there imagine
a Python application be launch and Rust
similarly to the Python story uh I don't
want to worry with all the the features
of the language so we maybe have some
time for questions but uh as you know
very popular programming languages uh
safety being kind of like one of the the
main pillars of the language. So I guess
that everyone wants to start using it.
In my opinion, one of the highest thing
for me is that cargo is an amazing tool.
At least for my experience. I love to
have that in more more programming
languages. Uh but yeah, Russ again and
you may think well but you had CXQ
similar to what you had with Python.
Yes, there are some experience there.
And one of the points that I I want to
make is that uh we believe that both C++
sorry CXXQ and Pyite are perfect tools.
sorry frameworks for cute developers to
include those languages to applications.
But the whole idea of this as I said
before and I will sound like a broken
record is to go for Ras developers and
Python developers in order to bring them
to the cute ecosystem. So as you see uh
it's RS is very popular that's why KD
evening bin and the ecosystem is growing
like crazy and as I said tooling is my
favorite thing. Um again how it looked
like. Sorry for the small font but you
can check it out afterwards. Uh we have
a couple of procedural macros there in
order to expose the back end. You have
the data also doing here some very rust
related things for the slots we'll see
are using a micro h but again the
footprints that we are the cute
footprint here in the code is quite
minimal again compared to cxx for
example but again different
functionalities different use cases. So
again video imagine the rest application
being popping up. A note here um I'll
show you some snippets. These are still
internal
there's most likely will change. If you
have idea you can always talk to me. Uh
and also it's one specific example told
you before we are working on instant
type for QML. We have like maybe two or
three more demos or examples that we
want to have ready in order when we have
the release. So yeah don't take this as
the final word.
brief frequently asked question based on
all the comments that I have been
getting from people. Maybe you have
more. So feel free to do that. So we can
go there and do a little tour there. But
I need water first.
So
first one maybe you will I already saw
some angry face. What about this
language that I use that is the most
important language ever? Well, one of
the things that we want to enable is
that maybe we can have documentation
well enough for people to start adding
more bridges to the offering. So, if you
have any favorite languages and these
are all the languages that we have kind
of like hear people like but what about
they are there. Bonus points if someone
tell me which language is this one.
Ah, good. Yeah, Gleim amazing
programming language. Go and check it
out. Another question. What about this
feature that is essential to all cute
applications and if you don't have it
this project will die and you are
wasting money and whatever. So again the
scope of the project is important. There
might be many features that are missing
when maybe we will start adding it but
it really depends of the use cases that
we have in mind and as I told you before
like five times already it's mostly for
people to feel like they are doing
things in their own languages. So many
things might need to have more cute
intervention or more cute related isms
in the code that might not be uh very
positive for the experience. But let's
see maybe the thing work out and we add
more things. So what if you need more
you it's not enough to just populating
some list of strings because most of
your application I hope are more like
displaying a list of strings on a UI. Uh
well in that case the idea will be to
you know direct people to all the set of
pine we have. If you want to do more
with Rust, you do CXcute. You want to do
more with Python, you do Pyite and so on
and so forth. Or if you want to go back
to the the old way, you go and write
everything for C++. Well, it's not the
the very encouraging for new users, but
at least we are giving the the entry
tools for people to start doing simple
applications.
You might think, so you are not
developing more bindings. Yes, the a
bindings will be still ongoing because
as I said a million times already,
different use cases. So why is only cute
quick? because we love cute widget as
well. Again, I don't want to go into
that framework, but we believe that of
course cutequick is kind of more modern
and attractive way of creating UIs. To
my surprise, many new Python related
frameworks are using declarative in
files in a way to define the interfaces.
So, it's something that is still getting
around.
Will you support everything that QML can
do? Well, no. Again, h it really depends
of the adoption that we have with the
project and the use cases that we if we
man to make them valid. So don't expect
every single feature from QML to work.
Can you combine all the languages in one
application? Well, not really for the
the technical preview, but maybe if
you're brave enough, you can give it a
try. But at least what we want to aim is
to have at least the intergenerability
of the back end for the different
languages.
Do you want to brainwash C++ developer
with this project? Well, exactly.
Will this be open source? Of course I
believe that that's the key for getting
anyone because if you put a lot of
fences of between people nobody will
jump into this thing. So we need to play
by the languages rules where they do
conference they go package manager ways
of installing everything in order to
bring more people to the good community.
When this will be released well we need
we initial initially thought that we
could be the release will be around
November. We still don't have a fixed
date but we expect to have at least a
first technical preview this year.
famous last words. No, but I we hope so.
To summarize, um what does it mean to
have more languages with good bridges? I
really really believe that means that
more communities can get together, we
can have maybe a larger academy in a few
years. H more ideas. I have the feeling
that every time that we look into other
programming languages when you get
weirded out like why they are doing like
oh they're doing it because of that. you
get these ideas and you can see this
thing in C++ 23 to 26 that there are
many features of the languages that of
course come from other programming
languages. So inspiration is very cool
even for the cute ecosystem. I think it
will be crucial for not not uh getting
into the same level and having more new
stuff around new expertise of course you
will get expert in the language that
will tell you that no the way that you
did it there is completely wrong or yeah
or yes that's the way that we do it. So
thank you for that. So new faces and new
people contributing and uh another thing
of course is that better ecosystem in my
opinion if we have more languages we can
have different opinions rather than
having like only a fight of I don't know
two programming languages we can fight
about six programming languages so it's
even better and the most important thing
of course as I always want to say is
that sorry is that we want to bring cute
everywhere so thank you very much and
maybe you have some question now
Awesome.
[Applause]
We have like five minutes. So, who'd
like to go first? I think.
>> Hi. Uh, thanks. Can you give some
examples for things that are not going
to be um part of the use case or what
you can will be able to do with cute
bridges and perhaps a rational for why?
>> No, no, no, no. Just uh um you like you
won't be able to uh use the cute network
classes to build an HTTP server because
Python already has stuff for that or
something like that.
And uh I was completely against of
exporting cute network and all those
things. And there was a lot of cute
developers said no no no no I need the
cute API to do this thing. I don't want
to use Python HTTP and stuff. But yeah
so far at least the other use cases are
mostly around the item models in
general. So this is at least the
starting point that we having for the
TP. We have a couple of other demos but
in a nutshell it's kind of like exposing
a little bit of data between the
cutequick and the other languages. So
besides this use case, we don't have
many many more so far, but if you have
ideas
so one question from the chat uh which
relates to the fact that we're here at a
KD conference, is there a way to use
some existing cute based C++ libraries
like KD frameworks while writing most
code in another language?
Then I will Yes, I will play the
Nicholas card and then Nicholas can
reply that afterwards.
Um, I have a statement and a question.
The statement as a representative of the
CXXQ team, uh, we are very impressed by
this. We think it's a great idea. We're
working together on making sure that we
have a shared base library of types so
that you can extend uh things you have
built with the bridges by way of CX
cute. So we very much think these things
are complimentary orthogonal and we are
working with cute company to make sure
that they work well together.
Particularly in KD I think this will be
important because you guys will want to
use probably more than just QML and this
views in other languages and Rust
specifically. Uh the question is um
you've chosen to take a runtime approach
where you're generating everything
basically dynamically at runtime and you
I know you've done that in Python 2 and
it seems to work there. Okay. Are you
worried at all about the performance
impact of that?
>> I'm getting my exercise today.
>> Yes. Yes. I mean there are other issues
as well with the performance related or
even times. For example, C# we currently
are dealing with a a thing that we are
generating a lot of code. So we have
longer compile time as you might be
familiar because we talk about it
already similar to the Ras ecosystem
like doing this thing at runtime might
be something that the RAS people will
say why are you doing this but uh yeah
that's I think that our goal first is
just to put the TP out and maybe have
the how people feel about it because at
some point you might find people that
say well this is taking longer to
compile or you know the whole execution
or something but at least I'm getting
something nice out of it. Some people
might not say that or said no if
possible if doesn't compile or do
something in one second then we don't
use it but I think we will kind of like
are expecting for the reaction of people
firstly before trying to push the patch
before before the the wound but yeah it
might be also a lot of time I think we
have one more and I'm not running
>> sort of related to Till's question about
the runtime aspect of it a lot of the
recent improvements in cute and QML were
around the QML tooling knowing better
about the C++ types and being able to do
autocomplete for like properties and
types defined in C++. Are we going to
lose all of these improvements when we
do different languages with runtime
things injected and less of that compile
time thing that's happening right now?
>> Yes, we are killing the QML project. No,
no, no. At the beginning of course we
might see some issues there but I am
certain that Favian and the whole team
will be more than happy to apply all the
same performance improvement to all the
other languages right Favian. Yes. See
he was yeah but it could be that
happened. I mean that's all that's the
thing that we want to do the TP just to
see what is the people reaction but uh
but yeah it could be that in the future
we need to improve it further on.
There's another question but I don't
know if we have time.
>> We can just we can just
And it's a little bit of a trollish one.
Are you going to do a bridge for C++?
[Music]
You need you need to add to to Faulker
if you have time enough after the Q
range model. Maybe now you are ready to
to have the official bridge for C++. No,
but why not? I mean it could be
something that you can we can minimize
the boiler plate code because we had a
lot of boiler plate in cute. So maybe I
don't know if people get motivated
enough then this can be something for
discuss for the for the buffs in a
couple of days.
Awesome. Um so if we're going to all put
our hands together for Christian.
[Applause]
[Music]
So we have a coffee break until
3. Uh Kevin and Arjan can you come and
see me please?
Yeah.