Forgot your password?
typodupeerror
GUI Graphics Intel Programming

Intel Dev: GTK's Biggest Problem, and What Qt Does Better 282

Posted by timothy
from the choosing-sides dept.
Freshly Exhumed writes "Phoronix has an article about how Dirk Hohndel of Intel's Open-Source Technology Center has stirred the hornet's nest with a talk at Australia's Linux.Conf.Au (MP4 file) about what he views as the biggest problem with the GTK: he finds dealing with upstream GTK/GNOME developers to be tough, with frequent abuse and flame-wars, with accusations from the developers that "you're doing it wrong." Conversely, he found the Qt development community to be quite the opposite: willing to engage and help, with plenty of application developer documentation and fewer communication problems than with their GTK counterparts."
This discussion has been archived. No new comments can be posted.

Intel Dev: GTK's Biggest Problem, and What Qt Does Better

Comments Filter:
  • GTK is trash (Score:3, Insightful)

    by JDG1980 (2438906) on Thursday January 16, 2014 @10:38AM (#45975671)

    I don't understand why anyone would use GTK. It's not noticeably easier to use than other toolkits. It doesn't have a "native" look and feel on any system (if you run GIMP on Windows, you'll notice how all the dialogs are much different than what you're used to seeing in other applications). It's cross-platform, but so are Qt, WxWidgets, and probably a bunch of other GUI toolkits that don't come to mind at the moment. So what's the appeal?

  • Re:GTK is trash (Score:0, Insightful)

    by Anonymous Coward on Thursday January 16, 2014 @10:52AM (#45975773)

    GTK was written (at least initially) by someone who thought they could 'code' better than anyone else so they didn't bother to use any knowledge gained from anyone else and just hacked together a windowing system based on an ugly ass application which decided any conventional user interface standards that existed were not worth following at all, regardless of reason. So instead of reusing an existing toolkit, they wrote from scratch and then pulled a toolkit out of their app and GTK was born.

    Thats pretty much 100% ass backwards from the proper way to do it.

    It is an example of one of the 'problems' with MOST open source projects. Doing because you can, not because you should. Sure its FAR more professional today than 10 years ago, but the legacy still holds true due to its very nature and the fact that its followers WANTED that in the first place.

    GTK is for people who think its cool to run Linux because its not Windows, not for any real reason. They just want to stick it to the man!3@%! kind of thing.

    --BitStream

  • Re:GTK is trash (Score:5, Insightful)

    by pe1rxq (141710) on Thursday January 16, 2014 @10:57AM (#45975831) Homepage Journal

    Unfortunatly it took them years to formalize that.
    Trolltech turned out to be ok, but untill you have the licenses actually reflect that you just can't be sure and it would be foolish to blindly trust them.

  • GTK+ is standalone (Score:2, Insightful)

    by Second_Derivative (257815) on Thursday January 16, 2014 @11:06AM (#45975917)

    Qt, on the other hand, is its own universe. It's written in a weird dialect of C++98 (though I'm sure it works just fine in C++11 these days), it has its own object model, networking stack, container library, threading library, graphics primitive library (i.e. not Cairo). This object model also leaks into its language bindings if you don't want to write your software in C++.

    It's the same problem that Java and C# also suffer from: they're not cross-platform, nothing is. What they actually are is their own platform built alongside a perfectly good already-existing one, and you can see the seams.

    There's more to each platform's UI than what bitmap you skin buttons and checkboxes with. If you want a cross-platform application, then write a completely different UI for each platform using those platforms' native UI toolkits. Sadly "good enough" is the order of the day here, so you end up with platform-refugee applications that look like shit.

  • Re:GTK is trash (Score:5, Insightful)

    by znanue (2782675) on Thursday January 16, 2014 @11:22AM (#45976083)

    That was because the FSF was spreading FUD about Trolltech. Trolltech was free software friendly and was never going to make Qt non-free.

    Licenses matter, especially for businesses. You have to know that this piece of software you want to build things around, to rely on, isn't going to be taken from you. And, you shouldn't have to be a "judge of character" for a business in order to have that security. FUD is a heavy characterization that seems to devalue the perspective of those who do feel they need to operate under license security.

  • Re:GTK is trash (Score:4, Insightful)

    by znanue (2782675) on Thursday January 16, 2014 @11:25AM (#45976131)
    One would argue that many people think they can code better projects and do (Say, an unknown Finnish student in 1992). There is a ton of duplication in the software space, but that might not be a bad thing. I think it is so easy to forget that we're building things that may last centuries, millenia. Individual information problems may morph under hardware changes, but a lot of these things we're figuring out could go the distance. I hope the open source movement never loses that audacity, even if it a times it is blind, arrogant, and wrong.
  • Re:GTK is trash (Score:5, Insightful)

    by hubie (108345) on Thursday January 16, 2014 @11:35AM (#45976229)

    inherited from old-timer UNIX neckbeards.

    Old-school UNIX guys had full beards.

  • by HiThere (15173) <charleshixsn@ear ... t ['hli' in gap]> on Thursday January 16, 2014 @11:47AM (#45976327)

    The main reason I don't like C++ (and C, for that matter) is the way they handle unicode. The next reason is the way they handle pointers. (For C++, Templates come in there, too.)

    Vala keeps promising to be a good language, but it's been between alpha and beta quality for 5 years now. D is pretty good, but lacks library support. (You can roll your own to C or C++, but it's a real disincentive. And can be quite difficult if your header files have macros.) Ada is ok, and has decent library support, but it's quite verbose, and hard to document (I'm talking about developer documentation, like Javadoc or Doxygen, or even RDoc, not end user documentation). Also, I really like garbage collection, though that's partially a matter of taste.

    If I don't need the performance, I generally pick Python as the "least bad". It's not as good as D, but it usually supports the libraries that I need. It's not as good as Vala promises to be, but it's working and well documented NOW. But even Ada has better unicode support than do C and C++.

  • by t_hunger (449259) on Thursday January 16, 2014 @11:49AM (#45976341)

    I would argue exactly the other way around: Qt is stand-alone and GTK is not. If you want to write any app you need more than the UI. You actually want the application to *do* something but render a couple of widgets.

    With GTK you end up hunting down a host of glib/gnome based libraries, all with slightly different peculiarities and all of them coming with little useful documentation. How is that stand-alone? With Qt you get everything in one convenient package (and are still free to leave out the parts you do not need in your binary packages).

    Qt is a C++ library: Any C++ compiler can compile it on a wide range of platforms. How would that be possible if Qt was written in a weird dialect?

    Of course the object model leaks into the language bindings. How could it not be? The same is true for "object-oriented" libraries written in C.

    Yes, even with Qt you can not get perfect cross-platform applications. You will need to some platform-specific code in any non-trivial application. That is perfectly possible in Qt... and it still gets you at least 90% of the way! That was the other reason for switching that Dirk gave in his presentation: That GTK does *not* run properly on windows nor on Mac. He claimed that some core GTK people are actually opposing the toolkit working on those platforms and that independent teams are trying to maintain the cross-platform parts as good as they can against a hostile core team.

    Subsurface was cross-platform with GTK and it looked like shit on *all* platforms incl. Linux. The Qt port looks way better -- they could finally get the UI they wanted but could not manage to implement in GTK -- and works equally well on all three target platforms. Check the demo right in the middle of the video: Dirk shows of the new UI and contrasts it with the old one in pretty gory details. So, yes, Qt is not perfect, but it is pretty good nontheless:-)

  • Re:GTK is trash (Score:5, Insightful)

    by cheesybagel (670288) on Thursday January 16, 2014 @11:51AM (#45976375)

    Well GTK+ was better than Motif that's for sure.

  • by keneng (1211114) on Thursday January 16, 2014 @12:06PM (#45976527) Journal

    GTK is far from trash. It certainly compiles and links faster than a Qt app. It can build gui's entirely in your c++ code or integrate with glade-tool-created ui which is on par with qtcreator in that respect. It blends well with c++/c libraries.
    I have recently delved into gui development with Qt on Ubuntu touch(ubuntu-sdk) and Qt on Android(Necessitas and Qt for Android). I'm not quite content with either. Newer Qt tools force developers to use QML/declarative script. The ide doesn't offer any easy way to use C++ for everything in Android. It's possible, but it's not very well documented. When compiling and Android app without QML/.ui files, the IDE isn't intuitive to use to get what you need to build the minimum .apk with the AndroidManifest.xml and other Android "deployment" characteristics for plain c++ built-apps.

    gtkmm has no complications about assembling everything into an apk file. You just assemble everything c++ into your executable or keep them separate. It's the developers choice unlike android's forcing of everything into an apk. I just prefer desktop app development over mobile device development. Qt doesn't save you time with android. You still need to do your homework and learn everything android anyways. i.e. JNI to get access to special non qml apis. There has been recent discussion about difficulty using persistent storage api with qml. That's so 1990's an issue. There are so many ways of skinning that cat with c++ libs of all sorts. boost serialization and mongodb come to mind, but there are so many others. Even golang(higher-level C++-like) has less problems using gtk and serialization than qt/qml and it has even shorter compile/link times than c++. golang/gtk/serialization compile/link time c++/gtk/serialization compile/link time qt/qml serialization compile/link time.

    To be blunt, I would rather compile with gtkmm with Ubuntu/Debian on any device mobile/desktop/cloud given the opportunity.
    There will be an opportunity to see gtk on ubuntu touch. I would prefer gtk than qt toolkit on ubuntu touch because it would save enormous amounts of time iterating through compiles/links.

    Don't call GTK trash and I won't trash QT. They both have their places, but platforms should not impose language choices on developers like android and ubuntu touch did by forcing everyone to use qt. That was a mistake. All this to say GTK has its strengths and weakness and so does qt/qml/declaratives. It's interesting and useful, but doesn't necessarily save the developer time and qt doesn't necessarily give the best runtime performance if an app has qml/declaratives in it when compared with straight c++. If the ubuntu touch team would have stuck with gtk for the touch interface, I believe they would have finished the ubuntu touch/ubuntu edge prototype completely by now. If Android would get rid of all the apk complexity, provided c++-only gui api and stuck to c++ rather than convoluted java/jni/c++, there would have been even more apps in their play store by now. golang will have greater importance on for building guis/apps on all platforms soon enough. go-gtk bindings exist. So do go-qt bindings. One thing is certain. I don't like QML and that's a subjective thing. Knock yourself out with qml if you want but don't impose it on everyone else. That's bad for business. People will walk away if it's the only developer tool option offered for a device.

  • That's Depressing (Score:4, Insightful)

    by zakkudo (2638939) on Thursday January 16, 2014 @12:09PM (#45976573)
    I feel like all the time I donated helping with gtk questions on the gtk irc channels was useless now. )-:
  • by Brandybuck (704397) on Thursday January 16, 2014 @12:34PM (#45976855) Homepage Journal

    When it comes to the UI, objects are natural. Every C toolkit goes through hoops to provide you with objects of some kind. Motif, GTK, etc. So why not just use an object oriented language to begin with?

    You don't have to use the dark corners of the language. Qt sticks to just the Object Oriented parts of C++, with just a tiny bit of templates. Not a functor in sight (unless you wander toward the totally optional Qt::Concurrent framework). Internally it uses all of the language, but as an API it provides just the object oriented subset.

  • Re:GTK is trash (Score:4, Insightful)

    by marcosdumay (620877) <marcosdumay@@@gmail...com> on Thursday January 16, 2014 @12:40PM (#45976909) Homepage Journal

    It's not different from the many closed source projects that do the same.

    It's different from QT.

  • by Brandybuck (704397) on Thursday January 16, 2014 @12:50PM (#45977035) Homepage Journal

    "weird dialect of C++98" - WTF? What is this dialect you speak of? Do you need to pass --weird to G++ to get it to compile? Of course not! It's using the same C++ every other C++ app in the world is using. Both C++98 and C++11 are supported. It doesn't REQUIRE you to use C++11, but that is a benefit not a drawback.

    "it has its own object model" - Of course it does, that's because C++ does not have one of its own. QObject is there to provide for the introspection that C++ lacks. Once you have that introspection you can start communicating with other objects. I fail to understand why this is a disadvantage in your eyes.

    "networking stack" - Of course. Why should it not? It is an cross-platform application framework.

    "container library" - When Qt began the STL was fragmented, not standardized, and poorly supported. Yet containers are useful. Qt kept them around because they turned out to be better than the STL containers. They're a balance between raw performance and the "bloat" of pure templatized containers. Externally they end up being 100% compatible with the STL.

    "threading library" - It was only extremely recent that C++ got its own threading, and it's just very low level threading. Qt threading provides a nice usable wrapper around threads (which are native C++ threads underneath if built with C++11), and the ability to easily communicate between threads with signals/slots.

    "graphics primitive library" - Why not? Seriously, why not? Isnt't that the whole point of a GUI toolkit? Underneath it draws widgets using the native controls, if available, or uses its own if not. That's why the widgets look like native controls on Windows and Mac, because they ARE native controls! On X11 it will draw its own. It doesn't use Cairo, why should it use Cairo, who made Cairo king that we all have to bow down before it?

  • by smash (1351) on Thursday January 16, 2014 @01:12PM (#45977313) Homepage Journal
    Well, it does give some background that he is actually deemed to be employable by intel, rather than some hack pumping out shit in his bedroom.
  • Re: It's true! (Score:5, Insightful)

    by t_hunger (449259) on Thursday January 16, 2014 @01:22PM (#45977427)

    You are aware that you this is a project founded by Linus himself and that Dirk is involved with open source development since 1988, often working at the kernel and other core infrastructure you are likely to use if you run Linux?

    I somehow doubt that these two are not aware of how open source works. I am further convinced that they are bright enough to figure things out on their own by reading the code and/or using the internet.

  • Re: It's true! (Score:5, Insightful)

    by the_B0fh (208483) on Thursday January 16, 2014 @02:01PM (#45977811) Homepage

    What I got out of the talk, GTK vs QT:

    GTK
    1) Lousy documentation
    2) Lousy code
    3) Lousy developer community support

    QT
    1) Good documentation
    2) Good design
    3) Great developer community support

    Are you really saying Linus Torvalds "feels ENTITLED to the time of open source volunteers, when they don't make every effort possible to answer their own question."?!?!?!

    Any other developer, you might be able to say that, but Linus wrote the kernel himself, and still answers emails (I've had responses to questions I sent him!)

    So, stop justifying and defending the GTK people.

  • Re: It's true! (Score:5, Insightful)

    by the_B0fh (208483) on Thursday January 16, 2014 @02:14PM (#45977911) Homepage

    Put it another way. When Linus Torvalds and 3 of the core GNOME maintainers *CANNOT* figure out how to do something, and Linus asks for help from the GTK community and got a "meh", your community sucks.

  • by t_hunger (449259) on Thursday January 16, 2014 @04:03PM (#45979009)

    First I am almost 100% sure that there will be some idiots employed by Intel somewhere. Every big company has some of those around. So "works for company X or Y" is not a qualification in my book.

    Second Dirk is making it very clear that he is speaking as a private person about a hobbyist project of his, not as an employee of some company. So there is no reason to bring the company into the discussion. People will misread the headline to mean that this is something that Intel is doing. Just check this thread: One misguided individual is asking: "How many people here flamed Canonical 3 years ago when their developers ditched working on Gnome3 in favor of Unity for this very reason? Are you now going to flame Intel because their developers are saying the same thing?".a couple of comments down. It is not Intel speaking, it is not even "their developers". It is just one single guy speaking about something that is not related in any way to what Intel does. These misunderstandings were needlessly created by the headline.

    Seriously: This is slashdot. How many people here on slashdot bother reading more than the headline? :-)

Kleeneness is next to Godelness.

Working...