Blender GUI in Qt
Qt is awesome
Qt is multi-platform
Qt is maintained by talented people who take good care of it
Qt is known by a large amount of CGI coders and not CGI coders
Qt has an official python binding
Qt is opensource
The effort of porting Blender GUI to Qt would be a huge work, but paying sooo much once it's done ! Because the blender team would be freed of almost any maintenance of the GUI core, creation of GUI features, teaching how it's designed before anyone can hack it.
On the long term, that would be a total benefit for users too. because the features tools and GUI tweaks would not be accessible to a few coders only, advanced features of Qt that took many years of effort to be made would be available for Blender immediately, and features would land into the software faster. Integration into pipelines would be more attractive for studios, as Qt is the standard in many of them.
What do you think about it ?
7 Comments
There are other toolkits that are multi-platform. Qt's extensions to the C++ language (MOC) actually make platform support quite difficult. In fact Qt does have a bit of a bad reputation when it comes to their multi-platform support.
I don't want to argue that by itself, however I want to point out that Qt has a huge history to carry with it. So its code contains many historic issues that are hard to address by now.
QStringvsstd::stringis just one well known example.I think a Python binding is the least of our problems when we talk about improving our UI code.
Another thing to mention is that I expect Qt to increase the Blender binary size quite a lot.
Note that I'm not at all saying that Qt is bad! This is solely about the question of suitability of Qt * for Blender *. I don't see any convincing point here that would even come close to outweighing the downsides.
Generally speaking, I know that the idea of using Qt is not well received amongst Blender developers. I wrote down a number of reasons <b>against</b> using an existing toolkit some time ago in the docs of my bWidgets project (the "Issues with other Toolkits" section was a bit rushed and needs work though).
My basic opinion is: Something needs to be done about our UI code, but a custom, self-made solution is much preferable.
@Julian Eisel:
I see that you started a project called bWidgets, and it looks a bit inspired by Qt which is good. Is it advanced ? Is it in talk to become the official new GUI toolkit ? I am curious.
@mfx: Even though I've spent a lot of time on the project already, I wouldn't call it advanced yet.
I'm intentionally trying to not rush things and I try to defer important decisions. Later then, they can be done from a more informed perspective.
Just over the last couple of months, I finally decided on a high level design for bWidgets that I'm quite satisfied with. Once that is implemented, the (potential) benefits become much more tangible. That is also the point at which other devs wanted to take a closer look at it.
In a few weeks, I should have plenty of time for this. So my plan is to have the high level design implemented in few months. After that we should be able to add all features needed to bWidgets (which will take a while).
Here's a short list of complications that will be run into if development takes this route:
@Jason van Gumster:
The widgets of Qt can deal with many all the blender needs. Of course they will have to make custom code too like for the node system. That is why I said It's a big amount of work.
The overhead of Qt is not huge if useless module are not used for no reason like it's often the case. And many powerful programs are made using Qt, which is a proof of concept by itself.
If blender UI toolkit has an horrible code, it's precisely because they struggle to maintain it, even more to make it evolve.. If you struggle to maintain a framework you created, that maybe means you need to address this complexity to something that works better and/or to someone that take care of it (Qt).
But I think long term here, try to think long term benefits too ?
+1000
Sounds like "the effort of porting Blender" would be huge dollars as well, how would you fund it?