Confused about recent discussions on GTK+ vs QT and OpenGL

I’m somewhat confused about the recent discussions about the Synfig Studio’s (undesirable) multiple-window GUI, the use of GTK+ vs QT, and the use of OpenGL as the interactive rendering engine. To me these appear to be three independent issues, but people seem to lump them together in discussions.

The easiest of these is that the current software-only interactive rendering engine is (too) slow, or at least doesn’t scale to a large number of layers. The idea is that this engine can be replaced with a hardware-assisted OpenGL version. Am I correct in my understanding that the use of OpenGL for rendering is independent of the widget library used? That is, it is independent of the GTK+ vs QT question? Can we have a Synfig Studio based on GTK+ with OpenGL? If so, why isn’t this a good idea? If not, why not?

The second issue is the multiple window GUI used by Synfig Studio. I am under the impression that using multiple windows is a GUI design choice independent of the use of GTK+. We could equally well reimplement a single-window GUI with GTK+. If my understanding above is correct, also the question of a single-window GUI vs. multiple window GUI is independent of the question of using GTK+ widget library vs. using the QT widget library.

Which leaves the remaining issue of using the QT library vs. using the GTK+ library. I’ve been following synfig (and its development) for only a couple of months and I’m not a very experienced GUI programmer, but I’ve never heard of any experienced limitations or inherent limitations of GTK+. Which begs the question: Why QT? I know QT is used by many applications, but isn’t this true for GTK+ as well? I know QT has been around for a long time, but isn’t this true for GTK+ as well? So, I’m curious as to the argument of why QT is so much better, and what the developers and the users of synfigstudio would gain from a reimplementation in QT?

Am I alone in this confusion? If so, can someone enlighten me? Please?

If this is simply a developer issue, that is, if the OpenGL developers know only QT, that would be understandable, but that should at least be clear in the discussions.

BTW, if someone would reimplement synfigstudio in QT, and the result would be a clean codebase (without commented out code and #ifdef’s all over the place), that would be a win in itself, irrespective of the use of QT. :wink:


Implementation of OpenGL as render engine is independent of GTK, QT multi window or single window issue. And I agree that GTK is as good or bad than QT. I don’t know so much from both but I guess that both should have advantages and limitations. Multi/single window: I’m for the multi, as it is now.

Regarding to OpenGL implementation there is a guy (uiomae) that is working on it right now. It is just a new render engine, nothing to do with QT or GTK.

Hi Gerco! I’m “the guy” that it’s trying to add OpenGL support to Synfig. Although Genete has replied to you, I’m going to reply too because you’re talking a lot of things I’ve (maybe wrongly) said :laughing:. In advance, pleasse excuse my poor English, I’ll try to do my best.

True, and part of this is my own fault. These are completely independent, as you point.

Also completely true. The GUI and the rendering are different parts. However, currently they are very mixed, and a bit of abstraction is needed here and there to make it work.

True as well. I think I’m the one that said that about the multiple window GUI. Sometimes I just don’t like it, but I don’t think I based my reasons on that to justify a QT port. And yes, you can implement a MDI application with only one window with GTK+ (see GIMP vs GIMP-Shop)

QT vs GTK is a looong discussed thing in almost every GUI post on the Internet :slight_smile: So I won’t be starting here. It’s enough to say that big enough GTK code is generally speaking harder to maintain and / or uglier than QT. Also, QT documentation it’s very good, unlike GTK. So, the change it’s really for the developers, not the final users, at first at least. Anyway, this can be discussed over and over, because I can be really wrong. Also, QT it’s not without his faults, too. For example, the MOC (something like a macro language used for signals and slots) it’s not the best to debug, but that’s easy to fix with some “clever moves”.

If by “OpenGL developers” you are referring to me, that’s not the point, as I hopefully already made clear :slight_smile:. I know GTK, as well as QT, wxWidgets, and others, because I like to use the best tools for the task at hand, and sometimes you want to use one or another. Unfortunately, “one size does not fit all”.

Anyway, I think that will be the case. I haven’t looked at the whole code, but I think ifdef’s are not depending on GTK implementation (except mines for OpenGL, because all the mixed GTK code :slight_smile:). But I think QT code will be less lines and also doing a new implementation sure will have more cleanness because we can learn from the past :slight_smile:.

If you have any other question, or I haven’t made myself clear, please reply :slight_smile:.