GUI Toolkits for the X Window System
TeachingMachines writes "Leslie Polzer has written a nice summary of the current state of GUI Toolkits for the X Windows System (article title of the same name). Those of you who are planning to spend hours and hours scouring the Internet for a mature cross-platform GUI toolkit may save some time and trouble by reading this summary. Leslie's review covers the pros and cons of using GTK+, Trolltech QT, FLTK, wxWindows, and the FOX Toolkit."
what no TK?
The one thing I don't like about toolkits (not mentioned in her list of cons) is that if you distribute the source code, whoever is compiling needs to have the toolkit.
I've tried to compile and install programs before and spent a lot of time trying to track down the toolkit libraries.
This is not a good reason to abondon using toolkits, but it is one negative aspect to take into consideration.
Slashdot Syndrome: the sudden, extreme urge to correct someone in order to validate one's self.
He forgot SDL. It's very good, I like working with it, nice interface X11, etc.
It still takes a really long time to find documentation on writing stuff for X in the first place. For instance, I was getting into creating a window manager at one point and found it extremely difficult to find documents about how to acutally program for X. Widget toolkits are not enough in some cases. Some books about low-level X programming are at:
: //www.pconline.com/~erc/advxwnd.htm
http://www.pconline.com/~erc/xwind2nd.htm
http
Unfortunately, I've lost the URLs for the X API docs and containing really good example documentation on X Windows programming in C. If anybody has these URLs, I'd appreciate it, since it took me several days of searching to dig them up and I can't find them anymore (harddrive crashes suck).
www.sitetronics.com/wordpress
It's far more easily cross platform than the competitors. It's a rich GUI toolkit, not limited by least-common-denominator weirdnesses, and backed by a world class rendering layer (java 2D).
Todays Java is not at all what old Java was. It's far faster, and only getting faster with each release, than in the past, far more reliable, far more complete, etc.
Try using KDevelop 1.2!!!!
yippeee!!!! wheeelah....
yeh baby!!!
... hi bingo
This made the article useless. I wonder if he has ever tried QT. It just works! No futzing around. He is biased because you have to pay for the windows port.
This article reads like a Qt flamefest.
I don't see how Qt's "business like homepage" should have anything to do with how good a toolkit Qt is. The "free for linux not for w32" is of course a valid point, but it's the only one.
How small a thought it takes to fill a whole life
Let's just hope the review is as fair and balanced as FOX news.
one of the biggest problems in writing a RAD graphics software is that lots of users want it to interface with a lot of different toolkits, such as motif, qt, gtk, tk, xt, etc. obviously, it would be nice if they all just chose one, but that will not happen anytime soon. now, we[the company in mind] are thinking of writing our own low level toolkit (since the software currently doesn't have its own widgets). this is basically how new toolkits come into existence and the user base is forced to choose at yet another fork in the road. *sigh*
BSD is for people who love UNIX. Linux is for those who hate Microsoft.
I need to write GUI code that works on all Linux, all HP-UX, all SUN Solaris, all SGI platforms without requiring more than a simple "make".
Our customers would not like it if I told them to find and install version 1.2 of GTK and stuff like that, because in all honestly, on any platform other than Linux most of these toolkit libraries have no simple install mechanism and tend to be buggy.
So Xlib all the way... Simple and it runs on even a 10 year old version of Linux.
I personally think Qt is made irrelevant by both of the others because they are not missing anything Qt offers. The tools that come with Qt may not be bundled with them, but comparable tools do exist and can be used free of charge, and most often as Free Software. Qt's biggest weaknesses are its relic called "MOC" and its business orientation. Yes, it's GPL, but not for MS Windows, so you're not really free. FOX and (especially) wxWindows offer similarly advanced sets of widgets and techniques, so you might as well throw Qt away. In terms of portability, it's the same, and wxWindows even adds OS/2 portability. Believe me, I don't want to be unfair to Trolltech or upset dedicated Qt developers. I tried to be objective, and that's my objective conclusion. Maybe we can discuss this point in the comments for this article.
There is a disturbing trend of recent articles that engage in Qt/KDE bashing. Can't help wondering whether it is really a coincidence or not. For instance, here's another freshmeat editorial from a few months back.
Cross platform, native widgets.
Combined with python it is very simple and easy.
I wouldn't make commercial apps, but for small development, it's my choice.
Ceci ne pas un sig. -- ?
Umm.. that should be "Ceci n'est pas une sig."
Although I don't think sig really works in french although it is short for signature, which works in french.
Whatever, maybe you were trying to be funny -- is so I am sorry for not catching it.
However, for those developing low-level X programs such as window managers and XIM servers that need to meddle with (say) ICCCM details, you are probably better off just using Xlib --- just like programs doing low-level I/O are better off using low-level functions instead of stdio.
Note that even in some cross-platform applications some non-portable stuff is needed in order to tune user experience, for example you may find a cool new feature of recent window managers accessible via ICCCM beneficial (albeit not essential) to your application, but toolkits haven't integrated such things yet. Therefore, it is very important that toolkits give access to low-level things like Window/Atom/Pixmap IDs so that bypassing it occasionally is possible. I don't know about others, but GTK does well in this regard.
I'd be nice to be able to static link into
one giant executable. I hate having the
incompatible libraries problem. It's like
DLL hell in windows. It'd be nice to have
a full featured GUI library (and other tools)
that can create one big executable file.
GTK programs require a DLL in windows.
WxWindows programs require GTK libraries on
Linux.
For me, it came down to documentation. I have a moderately complicated GUI Perl app (Perl because it was the language I was most familiar with). I looked into various toolkits, like wxPerl, GTK/Perl, QT/Perl, but ended up using good ol' reliable Perl/Tk.
The big advantage with picking up Perl/Tk was that the O'Reilly books were extremely informative - good examples on each widget, how they interoperate, how to use them, and larger program examples. The documentation for the other toolkits I considered basically consisted of "look at the arguments this C++ function takes, and use it," which didn't make for an easy time picking things up (wxPerl was the worst in that regard). While an experienced C++ programmer might not have a hard time with that, it was way over my head.
As a result, though, I have a decent app that runs on X11 and Win32. With the great PAR archiver, I can even package the app up in a nice bundle.
Good times.
He missed the best: GNUStep.
GNUStep uses Objective-C and is a clone of the OpenStep API's and is pretty stable.
To write a simple Application you do not have to write that much code any more.
The author claims it is not free software. The FLTK site claims otherwise:
FLTK comes with complete free source code. FLTK is available under the terms of the GNU Library General Public License.
We have ammended the LGPL to explicitly allow static linking of FLTK (or any modified version of FLTK) to your software. The LGPL is not clear on this and we definately want to allow it.
Program in what you like...
Although programming in QT won't get it included into gnome and programming in GTK won't get it included in KDE.
A lot of apps people develop never see the light of day... I've programmed hundreds of little apps for the various companies I've worked for.. I programmed in what I liked.. and what I was used to...
Just because you need to create a little app with a textbox and a button doesn't mean you need to include the HEAVY libraries of gtk/qt/gnome/kde.
Just my thought.
ChiefArcher
"According to http://www.trolltech.com/newsroom/investors.html the Canopy Group only has 5.7% shares of Trolltech while 64.7% are in posession of Trolltech employees with an additional 5% controlled by the Trolltech founders. One can hardly say that the Canopy Group owns or controls Trolltech." (Text from here)
Yeah, I RTFA and know he disses them with "too hard, too much like Xlib" (actually they're built on Xt, which is built on top of Xlib).
But anybody who thinks Xt is "too hard" probably is out of their depth programming GUIs anyway. (Now, if you think it's ugly, that's a whole 'nother discussion...) And nothing else gives you that level of flexibility and control. (Well, nothing else sane -- if you want to code direct to the X protocol, go right ahead...)
-- Alastair
make qtconfig -- QT interface
make gconfig --- GTK interface
I can't believe this author missed the one toolkit that's been making so much wave in the last year, namely Java/SWT.
It's the toolkit used to create the Eclipse IDE from IBM, similar in approach to wxWindows...i.e. renders using native widgets on each platfrom (win32 APIs on Windows, GTK+ 2.0 on Linux, Aqua on Mac OS X), but with the same common API on all platforms.
Did I mention coding in Java is much easier than fighting with ancient macros in C or C++?
Plus, SWT apps start up real fast and consume much less resources than the infamous default Java SWING toolkit. Just look at the difference in responsiveness between Eclipse and NetBeans (I call it the Molasses IDE in tribute to its speed).
SWT is the future of Java GUI and because it renders with native widgets it's the way to go for the future.
Did I mention it's open-source and 100% free on all platforms, including windows (unlike Qt).
Plus...you get access to all the standard Java libs (db access, xml processing, web services, threasing, etc...)
I was wondering what toolkit people use for GUI's written in scheme. I'd like to start developing GUI's with scheme - so far it seems like I'm limited to either the GTK scheme binding, or the plt gui toolkit.
I run KDE and as such I prefer applications that use QT. However, there are plenty of good, useful applications that use GTK (Gimp comes to mind) and I don't want people to waste their time on making equivalent applications with QT nor do I want QT frontends to these apps. I can live with two toolkits, but... I run a pretty lean Debian installation, still I have to have a few extra toolkits installed. Tk for example, I hate it, it's ugly as hell, but quite a lot of useful apps use it. The big problem is that these extra toolkits will bloat your system. Not only do they use up disk space, but they will use up lots of memory when you use that one app that needs them. It's pretty pointless to have a shared toolkit library when only one or two apps use it. In other words, it has got to be one hell of a great application for me to install yet another toolkit!
The article's biggest strike against Qt is "Very business-oriented main Web site". What the hell is that about? "I'm shocked, shocked! to find marketing going on in this business!". Clue to the author: Qt is made by a company called Trolltech. Companies exist to make money for their employees and shareholders. One of the ways they do that is by (gasp) marketing themselves on the web. That particular company has gone to great lengths to accomodate free software developers; but they still have to make money somehow. If you object to their business model, just say so. But objecting to the fact that their corporate website is "very business oriented" is like objecting to the fact that Slashdot is "very geek oriented".
--
CPAN rules. - Guido van Rossum
are native widgets on X?
Yet
Another
Useless
Review
The article did leave out one other toolkit VDK and the VDKbuilder. VDK is a wrapper around gtk+, and vdk builder is a rad tool styled after Borland.
i lder/ vdkbuilder.html
URLS: http://vdkbuilder.sourceforge.net/ and
http://www.programmers.net/artic/Motta/vdkbu
While we're talking about GUIs, does anyone know where I can find some good documentation of GUI development standards online? I've done a number of Google searches but haven't found anything comprehensive.
Some developers on my team are absolutely abysmal at GUI development and, whenever we question them, they always say that what they're doing "follows the standard", which is total bulls--t. (They're just lazy and don't want to take the time to do it right.) Among other atrocities, they convinced our functional team that it is acceptable not to include any OK, Apply, or Cancel buttons on their windows and that it is "Windows standard" to provide only the X button in the upper right hand corner to close all windows (including ones for data entry). The business analysts have no experience with GUI development and are pretty intimidated by them, so they just believe whatever they say. I'd love to have some documentation to disprove them. (I've had limited success with "If it's the 'standard', can you show me ANY window from a MS application that looks like that?", but I'd like to have harder evidence.)
When violence rules the world outside / And the headlines make me want to cry / It's not the time to just keep quiet
There is no mention of Windows.Forms at all. While mono may not be mature yet (I dunno, I haven't tried it), there is little doubt that it will be extremely popular. Once Python, Ruby and Perl implement some degree of interoperation with .net I expect Windows Forms will be the most popular GUI toolkit across C#, Visual Basic, Ruby, Python and Perl.
My US$0.02
My opinion is that Borland Kylix is underestimated as a RAD tool. It's absolutely brilliant as long as you can stay with c++ and qt. Look at the open version Kylix Open.
This is the documentation I was looking to post in my original post. Please feel free to mod this comment up!
www.sitetronics.com/wordpress
Its good enough for Xterm, and its good enough for you!
Let me guess... KDE zealot?
I use Gnome every day and I don't know what the hell you're talking about. I suspect neigher do you. I've never had "menus lost behind a sea of windows".
As for all the "ugliness".... Its themable. If you don't like what it looks like, choose another theme. duh.
That's just a linking problem. You are clearly a moron. And what's with your line breaks?
Retard.
Officially, PHP-GTK is at version 0.5.2 - "alpha".
I've written a 20,000 line software package in PHP-GTK and I can say that while GTK 1.2 is a bit funky, it's quite powerful and very stable.
Binding Gtk with the power and rapid development speed of PHP, using an IDE such as Dev-PHP results in an environment that's blissful, stable, and cross-platform.
The aforementioned application is currently in the midst of a very successful Beta on Windows, and once released, will be shortly released for Linux and Macintosh. To "compile" the software we used the Ioncube Encoder.
Gotta love it, eh?
I have no problem with your religion until you decide it's reason to deprive others of the truth.
tah. tronche's site was invaluable learning to write X progs at uni.
these days i'd probably consider using the ecore library, from enlightenment CVS which seems to lightly wrap the X api for convienience.
(look at www.enlightenment.org)
And also more experimental ... An OpenGL based toolkit (portable, fast, effects, etc) with native anti-aliased fonts, SVG and 3DS widgets ? XML serialization ? Plenty of doc and examples ? And Free Software ?
Eye candy first : http://ngl.sourceforge.net/shots.php
Then clic, clic, yada yada.
Well, how many of you have really tested all mentioned GUI toolkits? I did that some time ago and ended up using FLTK, basically because of reasons mentioned in article: standard C++, free, light and stable Win32 support.
"What you get when you download Qt 2/3 is the free X11 version ("Qt Free Edition") which enables you to write non-commercial applications for The X Window System. When you want to create commercial, proprietary, or non-free software, or want to compile your program for Windows or embedded systems, you'll have to pay for the Qt Professional or Enterprise version (both are quite expensive). Qt tried to specify this in their own license (the "QPL") because they felt the GPL could cause them some problems (please see freshmeat article #180 for more information). From Qt 2.2 and upwards, you can now freely choose between the QPL and GPL before building the libraries. That's the whole story; if you feel I missed an important point, feel free to correct me (Qt flames go straight to /dev/null, though). You can read more about Trolltech's licensing issues in freshmeat articles #170, #172, and the one mentioned above."
The author probably doesn't understand the GPL. All of the other tool kits distributed under the GPL can be used in commerical applications and SO CAN THE GPL'ed version of QT. You just have to accept the terms of the GPL to do so, IE: your application must be open sourced! In this sense QT has an avantage! If you buy their commerical license you may then close source your application. What they have done is allow you to pay extra to by-pass the GPL. How is this an evil thing? The other kits do NOT give you a choice, it's the GPL or nothing! Choice is good. QED.
QT != evil.
(Well, maybe it is the fonts that are not as good as Windows fonts... But if you want to work with international text, even Window's unantialiased non-bitmap Chinese fonts look VERY ugly.)
~ 6.0% ownership of a PRIVATE company is not control at all. Especially when ~65% of the company is owned by employees.
-1.0000 FUD.
Believe me, I'm no fan of Xlib, but I'm confused by the statement in the article that Xlib function calls cause bloat and limit readability.
Why would there be any more bloat with Xlib calls than with any other set of toolkit function calls?
Btw, I've spent the last few months hacking with Xlib, and my personal, humble, opinion is that Xlib should only be used as a last resort.
The article says the Xlib API function prototypes are still K&R. That's horrible. Since I assume
all toolkits are built on Xlib wouldn't it benefit
everyone if somebody (eg one of the toolkit makers)
fixed this horrible state of affairs.
In fact *any* improvement to Xlib be great for everyone. This suggest it would be a great area for somebody like IBM to fund.
That isn't even a valid point. Qt 2.3 for Win32, free.
Well this is probably a bit off topic, but the Qt Non Commercial Edition for Microsoft Windows is covered by the license called Qt NON-COMMERCIAL LICENSE version 1.0. It specifically states that you are allowed to develop software using QT "in a non-commercial setting". Though the definition of "non-commercial" is not found in the license itself, another page says that:
"A non-commercial setting means that you must not use the package in the course of your employment or whilst engaged in activities that will be compensated. A non-commercial application is an application that cannot be sold, leased, rented or otherwise distributed for recompense."
My question is, why another license? I actually like QT. I use KDE every day and I write for QT for my private purpose. And I don't care if they charge billion dollars for Windows version. But why did they HAVE TO create yet another license that pose such a strong restriction like "you cannot earn even 1 cent using this software" when it seems (at least to me) that the GPL would have sufficed (and less restrictive)? Would somebody please enlighten?
Word on the street is that MS is building their own WM that runs on X. This will help to minimize the pain of porting Office, Exploder, and other MS software to *nix. But of course it won't be free. I assume they'll make the move to linux just before the linux desktop/office tools mature too much to really kill business (maybe 3-5 years). I don't know about their plans for the server side though...
I have to agree. Sounds like someone with an axe to pick and yet trying to come across as an "oh look at me I'm knowledgeable and unbiased!" kind of writer. Feh.
t foundation.p hp
So, let's see.
First of all, isn't it funny how the author omits to mention how a clean and thoroughly engineered class hierarchy can help you design more modular software that will be much easier to maintain and refactor? Or do people really think that the KDE project has been improving at the pace it has by mere luck?
> Very business-oriented main Web site
That's a problem how? Do you really MIND that the site provides info for people other than geeks, along with, you know, a completely up to date documentation for each version?
> Main branch depending on one company
This is either pure ignorance or a lie. Typical underhanded FUD. The main branch is GPL'ed, and the KDE Foundation was established to keep the main branch GPL'ed no matter what happens to Trolltech.
http://www.kde.org/whatiskde/kdefreeq
> Commercial developers and people wanting portability have to pay
Commercial developpers *ARE* allowed to sell GPL apps, dammit. THIS is the way of Free Software business.
And Qt 2 is available under for GPL on all the main platforms. That's for portability. Only Qt 3 for Windows requires a commercial license (this wasn't always the case, but according to interviews I read some Windows developpers would routinely use the GPL version in closed source apps, so Trolltech had to discontinue the GPL license on Windows. Thank you, guys. Thank you so much.)
> Huge sources and binaries, library itself takes ages to compile
That's C++ for you, dude. Install a binary package next time.
Additionally, and just because I'm pissed and am most willing to nitpick the bullshit out of existence, 1) Qt ships will ALL the major distribs, and a majority of minor ones -- no need to recompile it, and 2) You don't need to recompile it either for use with older software, as the API is backwards compatible -- which is not the case of all the APIs out there, which he blissfully omitted.
> Objects not referred by namespace but simple literal prefix "Q"
And that's a problem how?
> Dominant Microsoft Windows look
This is either pure ignorance or a lie. I won't even enumerate the number of looks Qt comes with *natively*.
In fact, this is so close to the usual Qt FUD you can hear from certain people that I strongly suspect that the whole purpose of the article was a clumsy attempt at slowing the growing popularity of Qt. Well, sorry, but such retarded FUD won't last three minutes on Slashdot. We may be a bunch of bickering nerds at times, but we know our shit.
If you don't like Qt and are concerned about its growing supremacy, which is your absolute right, then contribute to competing projects to help them improve. Trying to smear shit on competitors will only make your side look desperate. Is this what you want?
Rant other. Let the moderation begin, I have karma to burn.
-- B.
This sig does in fact not have the property it claims not to have.
-- ac at work
In my experience, compiling applications for Qt
also takes a while. A lot of the Qt classes use
shared data. They are often used by value in
parameters and class members.
Therefore Qt header files tend to include lots of
other Qt headers. Since there currently is no PCH
support, compile times go up quite a bit.
yes, and the gtk/gnome developers would agree with you. thats is because gtk-1.2 has been pretty much deprecated for about 3 years now. please use gtk-2.2. it is far from ugly and has much greater cross-platform and cross-nationality support than any other GUI lib i have ever encountered.
Theming doesn't work so well when you don't use GNOME. It works even worse when the apps aren't used under Linux/X.
I find it quite amusing how my original post got moderated down as flamebait rather than debated. I guess the truth hurts. The GTK team could learn a lot from some of the other tool kit makers - yes, including Trolltech.
Oh, I do have a little experience of GNOME. I used the Ximian Desktop version of it for at least a year before I got fed-up with its crapiness.
What the author claims as a weakness is actually a strength. Qt/UNIX is distributed under the GPL, which means that it can be used for free software development with the same freedom and same restrictions as any other GPL'd software library. However, if you can't comply with the terms of the GPL (because you are doing proprietary, closed software development) then with a normal GPL'd library you'd be SOL, but TrollTech gives you the option to pay them some money and obtain Qt under a commercial license.
This gives Qt a huge *advantage* over over the other libaries. By having its "business-oriented web site", it suckers thousands of large corporations into paying $2000 each for a Qt license. TrollTech uses this money to support the further development and improvement of Qt, which benefits both the commercial licensees and the free software, GPL users. Sure, they probably line their own pockets with some of the money, but no more than owners of RedHat, Debian, etc. Other libraries depend on volunteers performing intermittent maintenance and development, while Qt has an ever-increasing staff of paid developers.
+
My small company uses Qt for both free software development and proprietary software development, and we consider the $20K or so that we've sent to TrollTech to be money well spent!
"To be absolutely certain about something, one must know everything or nothing about it." -- Olin Miller
Tcl/Tk allows you to write GUIs very quickly without the need for C/C++, but you can mix 'em up with C/C++ if you like.
Downside: The widgets aren't pretty.
Upside: I can whip out a GUI in a day!
-- I am. Therefore, I think!
Agreed there are some nice non-C toolkits to code for (e.g. GNUstep, already mentioned in other posts). For C toolkits, I've tried a few (the popular ones anyway), and my conclusion is that anything other than Motif is absolute trash. Unfortunately Motif on Linux is still a little iffy. There are a bunch of minor compatibility issue that Lesstif has.
But for the love of god, X resources! X resources man! So flexible, so easy to use, so comforting.
The author says that the Xlib API uses K&R prototypes which is simply untrue (and never has been). The Xlib.h interface file, for example, has the option of conditially supporting really old compilers that don't have ANSI prototype capability, but this is almost never used anymore. The prototypes are there, and lots of excellent programming practices can be found therein.
(By the way, I'm not associated with any X related business and have no axe to grind other than assuring accurate reporting. I did develop most of the original X server for MacOS, which was, of course, named MacX.)
Qt:
- most polished GUI of the bunch, great documentation, great portability, looks great.
- typesafe callbacks
- smallest learning curve - very easy to use.
- downside: price, MOC preprocessor, very long compiles.
- recommendation: if you have the money - go buy it.
FLTK:
- perhaps the fastest and has the smallest memory footprint of the bunch.
- small size comes with a price - the look and feel is noticably "off" and often you get non-standard widget behavior.
- void* based event callbacks
- fastest compiles
FOX:
- programs look quite professional
- non typesafe events void* pointers that are a royal pain in the butt to use, and are very poorly documented.
- lack of virtual functions for most GUI classes - must use table dispatch for each new class to override behavior.
- only supports UNIX (X11) and Windows
- only has Windows 2000 look on any platform, but looks quite good nonetheless with minimal flicker
- small user base
- no CVS access - maintained by one individual
WxWindows:
- supports the most platforms, has native look.
- large community of support
- many interpreted language bindings
- different behavior on different platforms
- widgets flicker like crazy
- not very stable in my experience
This review was a bit half-assed and I couldn't get much further than his statement that user-generated events are particular to X and that Win32 doesn't have them.
Uhm, okies.
The list of GUI toolkits, though, I'm sure is useful to many people, so that much was nice. Go check them out for yourselves though, folks.
I thought XVT was "out there" along with these other tools. Is it too small to show up on the radar, or is something else going on? (www.xvt.com for the curious)
Xentax
You shouldn't verb words.
If you had the decency to give correct numbers,
your post would be much more relevant.
- the JRE download is 14,153,852 bytes for the latest version. And you download it once for all
java applications. How big is Qt?
- there is no Java version hell. Java is much more mature when it comes to different versions. You can still run Java classes compiled with version 1.0.
- 40meg memory? Speaking of Java 1.2, you might be right. Nowadays memory usage has been greatly reduced. Futher work is on the way
- latest hardware? Java runs sufficiently fast on my 700Mhz Duron box.
So, get your facts straight before posting.
On the other hand, the interface to namespaces can be a liability in terms of complexity and hurdles to learning.
In either case I'd like to see more analysis.
FLTK is the C++ successor to the XForms library (which is written in plain C), so I won't cover the latter here. XForms is not Free Software and is free of charge only for non-commercial use.
XForms has been free software, under the LGPL, for a while now.
See the Debian package in the main archive.
Doesn't have the bloat of the Java library (Swing was largely ripped off from VisualWorks in the first place). Is binary xplatform. I run apps on my 486 as well as my 100MHz Mac, with no problems at all. I'd say the exe's are slightly larger than statically linked C programs (but not by major factors). The UI's plenty responsive.
One man's pink plane is another man's blue plane.
GTK+ is the underlying widget set of X?
not only is the memory footprint huge, it never goes down.
The garbage collection is just that; garbage.
I have never understood the need for a language that is syntactically the same as C/C++ with the only added feature being reduced speed, and that alleged cross-platform compatibility, which we all know is a lie.
You may notice that the "gold standard" of GUIs that people like to hold up for Linux, Microsoft and Apple, are not cross platform. Neither company wastes time trying to build something that works well with a GDI, X11, and DisplayPDF backend. And there are good reasons for that.
Picking APIs that can be supported on multiple platforms is a lot of work, and implementing them on multiple platforms is even harder. Furthermore, some things simply cannot be supported well in a cross-platform manner, and conventions from one platform inevitably spill over to another platform.
For example, many cross-platform toolkits have no notion of remote displays. Even if the toolkit supports it, application programmers still hardcode assumptions about specific environments (e.g., on Windows, preferences are usually tied to the machine, while on X11, they should be tied to the display). The wxWindows, Mozilla, Qt, and Java/Swing toolkits are full of such compromises and assumptions, as are applications written in them.
Developers of a high quality Linux desktop should write specifically to X11, the native Linux graphics subsystem and not waste time or effort on any kind of cross-platform support; the competition isn't wasting time either. Cross-platform toolkits have their uses (I usually use wxWindows or FLTK), namely for when you really want to create a cross-platform application, but they are not a good choice for the core apps.
Of course, many people who do use cross-platform toolkits and notice that they often support X11 less well than Windows (because of the smaller market) blame X11 and want to fix the problem by replacing X11 with something just like GDI. To those people I suggest: contribute to an open source Windows clone if you like; don't try to make Linux into Windows.
more interpreted code hell from the Java freaks.
BTW, themes are just eye candy. It's functionality that needs to be fixed. Personally, I don't like fiddly with themese. I've got better things to do with my time than trying to hide every bad programmers personal tastes.
From somebody else's post it's apparent that a lot of these apps are using an older version of the toolkit, so I will have investigate further to see if the situation has improved.
True, there's nothing technically preventing you from selling GPL applications.
There's also nothing technically preventing you from putting air in a jar and selling it at a flea market.
I'm not making a judgement about the GPL one way or another, I just think it's silly to flame someone over recognizing that you can't practically sell a public commodity that anyone can get for free (which means you have to get creative and sell something with it like support, beanie babies, free escort service, etc).
Ergonomica Auctorita Illico!
I find it quite amusing how my original post got moderated down as flamebait rather than debated
Maybe its because it was flamebait. There was no material to debate there. Just a rabid dog post about how much you hate GTK. If you said you don't like it because it does (or doesn't) do x, y, z then there is scope for debate.
The last 1.4 JVM I tried still uses 40 megs of resident RAM even for the most trivial Swing application. Also, "sufficiently fast" in your mind means "too damn slow" in most people's minds - get over it. Run a native app beside a Swing app - it's not even close. As for only having a single version of the JRE lying around - you must not run many legacy java applications certified to a specific JVM version.
EiffelVision 2 that is available for free download here It is definitely the easiest GUI toolkit to use I've ever encountered, no nasty callbacks here :)
-- You see what happens when you have fun with a stranger in the Alps?
The article says the Xlib API function prototypes are still K&R.
The Xlib API still has support for K&R, but it also has prototypes.
In fact *any* improvement to Xlib be great for everyone. This suggest it would be a great area for somebody like IBM to fund.
Xlib is just a C library for accessing the X11 protocol. There are several libraries and toolkits that don't go through Xlib at all (e.g., CLX, Escher). But Xlib is pretty good at what it does; it's complicated because X11 has a lot of features.
There has been some work on a new low-level C library for accessing X11 servers, but the community just doesn't seem to have that much interest.
the toolkits provided via java. The benefits: looks the same on just about any platform, generally free. The cons: closed source, a bit slow (but greatly improving as of 1.4.2).
-Cnik
Just try Tcl/Tk or Python/Tkinter and enjoy.
Less is more !
The real toolkit must be OS idependent *AND* language independent. In Python, Tcl, Perl, Scheme and Lisp I have non-GUI libraries doing very useful things and I want them to have GUI using the same toolkit. With SWT I am locked in in Java and that's exactly what I want to avoid.
Less is more !
The GUI Toolkit, Framework Page
at http://www.atai.org/guitool/
Free Software: the software by the people, of the people and for the people. Develop! Share! Enhance! Enjoy!
You made the fatal mistake of letting programmers design user interfaces. Always let programmers design algorithms, and let them design precious little else.
Honestly, it won't really matter what kind of information you show those guys. They'll heel drag even if Bill Gates walks into their office and tells them they're completely wrong.
What you need to do first is design the UI at the start of the project, before any code is written. Once major code is written, most programmers are going to be obstinant as hell about going back and changing something just because someone with far less computing knowledge than themselves has trouble with it. When you do this preliminary design, do it on paper and pencil. Paper by its nature is extremely non-modal, which means whatever design you do will probably result in fewer annoying dialogs and will feel more natural to the end-user. Also, if you do a design on paper, you'll have less reservation about changing the design (as opposed to if you did a mock-up in photoshop, visual c++, Glade, etc) because you put less work into it.
The next project you work on, you might actually want to go ahead and hire a usability specialist who will do much of this annoying stuff for you and might do some testing of the proposed UI on Normal People(tm). If you do this, again make sure you bring the guy in at the start of the project; too often usability specialists are brought in to play damage control after way too much significant code is written, and there's not much they can do because too much code has already been written.
Finally, buy this book and show it to some of your programmers. Most of them will probably not come around to your side, but at least you can say you tried.
Ergonomica Auctorita Illico!
Qt has THE BEST object-oriented design that I have seen, by far. The widget hierarchy, methods, etc... have a very clean and consistent implementation. Also, the documentation is fantastic! It is always current wrt. the library.
- The ease of code integration into Designer by OO derivation is fantastic.
- The speed at which GUI apps can be developed, using TT's Designer is great!
- The qmake program, while not as capable as automake etc..., is still simple and easy to use. Plus, it takes care of his whining about extra steps.
The 'strengths' section on Qt is hopelessly lacking.
I know that Gtk+ is also OO, but to me it seems they bend over backwards to use C++ features from C, creating a bit of a mess. It is not as clean or consistent, either.
As well, while I H8 Motif, the fact that it was overlooked in this review is pretty bad.
A BIG FAN of Qt,
Jamie.
Is it possible to use threads (>5.6.0 threads) in a Perl/Tk program yet? (you know, one for the gui and others for the cpu intensive stuff). Last I heard, you could try it but it might blow up in your face. Will Perl 6.0 or a new version of Tk solve the problem?
For the original GUI master and for the ease of use..
BXPro and Viewkit that lives on Top of OpenMotif 2.2.
http://www.openmotif.org
Sun/HP and so many more platforms already have GUI builders using the UIL programming language. BXPro/Uimx/Sun Workshop/etc.. Motif is alive and strong.
I can program myself out of a Hello World Contest!!
It's just not very well known yet because it's only been in open source since the fall of 2000. Prior to that it was a proprietary API for the use of Andy Green and his clients Learning in Motion, who used it for such products as the client-server educational database Knowledge Forum.
ZooLib is written in C++, and can produce native executables for Linux/X11, Windows, BeOS, and Mac OS (classic and carbon) with very little need for platform-specific client code.
It makes only very basic use of platform-specific code internally, which is kept encapsulated, so it wouldn't be very hard to port it to a completely new platform. Porting to a new Unix platform that uses X11 shouldn't be more than a day's work, for example. Porting to a platform that had a completely alien GUI API would be a few weeks of work for someone familiar with both the platform and ZooLib.
ZooLib's website has a piece I wrote about why cross-platform frameworks are good for developers:
Request your free CD of my piano music.
Sure mine was flamebait too... but I'm not the one whining about how my comment got moded flamebait.
I'm tired of ppl complaining about having to pay for stuff. So what if Qt costs money to product a commercial application. They did a lot of work in the begining so we can write an applicaiton eaisly and sell it. Should they not get a cutt of our profit?
ok, so this is off-off-topic, but yes Java is mostly fuX0red up Smalltalk with superficially c-like syntax, and Swing is basically a fuX0red up VisualWorks toolkit (although its gotten quite a bit less bad lately).
Ah, well-Java pays the bills and Smalltalk is deader than dead, so what can you do..
Visual Basic.Net!
OMG how can /. post this. Please ./ admins stop posting anti-KDE aarticle sunless they actually have some serious merit. gDeskelts for example , how is it supposed to be architecturally superior to SK? It doesen't even have all the features.
GNOMEers always seem to call KDe technologies hacks and than copy them. DCOP, Kparts they were all called "hacks" and now they're trying to clone them. This is just another very baised article.
People have mostly been harping on how baseless this guy's criticisms of Qt are. But it's not just Qt where the facts are wrong. The whole thing is a pile of uninformed troll droppings. He criticizes FOX for requiring the FX_IMPLEMENT macro, but completely ignores the very similar macros that wxWindows uses, like DECLARE_EVENT_TABLE()and IMPLEMENT_APP(), and Qt's QOBJECT macro. Then there's a criticism of FOX requiring you to fiddle with message id enums, but this is also applicable to wxWindows. It's just a side effect of using enums and message tables for identifying messages.
Then there's the RAD Y/N column. FLTK's FLUID is a very basic code generator for FLTK dialogs. It's got nowhere near the functionality (or usability) of Qt's QDesigner, or from what I can see GTK's GLADE. FLUID hardly qualifies as a RAD tool.
Anyway, this article is a very shallow analysis of GUI toolkits that seems to be culled mostly from reading the web pages of the projects involved. This guy doesn't seem to have spent any significant amount of time actually *using* these toolkits, or talking to people who have.
Geez, rack up yet another stale news article to /.
That article has been up there for quite some time now. Also see earlier posting several weeks ago on osnews.com pointing out same.
Other than that it is a decent summary of the pros/cons of the various available X11/other GUItoolkits out there, or at least the ones really worth bothering with.
If you do this you will soon discover much more important criteria than this review discusses:
Personally, I want to spend my time on my code, not fixing bugs in the package, or figuring out what the docs ought to say. YMMV of course. Anyway, these criteria ruled out Fox and FLTK. In the end I went with wxWindows. Things might have changed since I did my evaluation, but those criteria are the ones that matter. The review was just worthless fluff.
- Never mind that Swing is just plain ugly too, at least the metal style.
:) That after using GNOME since its Alpha days.
:)
- Swing is SLOW (someone has mentioned this, but I'll say it again because it's that slow).
- 3D Graphics are a JOKE if you want to use any high end rendering engine (e.g. TGS or TSA).
In the last year I programmed Swing for 3 months and then dumped it over the 3D limitation. I then spent about 1 and 1/2 months reimplementing my Swing GUI in Qt. The difference was astounding.
After that Qt was the obvious decesion. It is actively developed, there is good support, the GUIs are responsive, and in many cases the API is much better than Swing, and only in a few cases more difficult.
Signals and Slots are a god send.
In the end my use of Qt made me switch to KDE too.
It's unthinkable that anyone would use anything but Qt for GUI development. It is by far the most mature cross platform toolkit out there. The only two that can even come close are GNOME and wxWindows, but really who wants to write in plain C? It takes three times as much code to accomplish the same task as in C++.
That's my two cents...
-Craig.
The author of the article seems to be a bit biased towards GTK. He fails to mention though that GTK is often used in conjunction with Glib, Gnome, GDK, Bonobo, and Gnome-VFS/Ghttp. As a complete group, these are difficult to use and poorly documented in far too many places.
QT is well documented, consistent and stable but the licensing terms are a bit vicious if you want to do any commercial development. I'd use QT exclusively if it was LGPL, but I can't afford to shell out $3000 for a Win32 and Linux license.
wxWindows has some flaws when it comes to stability and features, but it includes all of the core functionality in one package, it's well documented, the license is very generous, and the API is simple to use for complex tasks. As nice as a well written GTK app looks, I'd much rather write or debug a wxGTK app since the learning curve is so much easier to overcome.
Take a look at Galeon if you don't believe me. After years of working with GTK, those developers still can't figure out why bonobo popup windows don't respond properly when GTK pops a window. The documentation is bad and the libraries are too complex. Hopefully this will change in the future. I'd love to see GTK and Gnome become the defacto standards, but as-is they're too complex.
So many comments in this thread say something like: "Yeah, all these GUI toolkits are fine and dandy, but so many are a hassle when it comes to deployment- multiple version of GTK+ and Qt, a few desktop libraries here and there... Welcome to Unix .so hell!"
/System/Library/Frameworks (available to everyone on the system) or ~/Library/Frameworks (just to you).
It doesn't have to be that way.
It's a shame the Linux folks don't steal the good ideas from OS X- rather than just making shitty Aqua wanna-be themes for their toolkit and desktops. OS X's system of bundles and frameworks is an awesome way to deal with libraries- pretty seamless management of different versions of the library, OS version, architecture, etc. Just download the framework and move it into
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
Must be one of them bozos from pascal, java, python land...(academic toy teaching languages)
In c, c++, and perl land (practical, ugly, real-world languages), we have loads of fun.
I am using gentoo and fluxbox and find it most annoying that even small gtk-based apps use a *lot* of other framework-libs like (example gnome):
[ebuild N ] gnome-base/ORBit-0.5.17
[ebuild N ] gnome-base/oaf-0.6.10
[ebuild N ] gnome-base/gnome-libs-1.4.2
[ebuild N ] gnome-base/gnome-print-0.35-r3
[ebuild N ] gnome-base/bonobo-1.0.22
[ebuild N ] gnome-base/libglade-0.17-r6
[ebuild N ] gnome-base/ORBit2-2.6.2
[ebuild N ] gnome-base/gconf-2.2.0
[ebuild N ] gnome-base/bonobo-activation-2.2.2
[ebuild N ] gnome-base/libbonobo-2.2.2
[ebuild N ] gnome-base/libglade-2.0.1
[ebuild N ] gnome-base/libgnomecanvas-2.2.0.2
[ebuild N ] gnome-base/gnome-mime-data-2.2.0
[ebuild N ] gnome-base/gnome-vfs-2.2.4
[ebuild N ] gnome-base/libgnome-2.2.2
[ebuild N ] gnome-base/libbonoboui-2.2.2
[ebuild N ] gnome-base/libgnomeui-2.2.1
[ebuild N ] app-text/gnome-spell-1.0.4
[ebuild N ] gnome-base/libgnomeprint-2.2.1.2
[ebuild N ] gnome-base/libgnomeprintui-2.2.1.2
[ebuild N ] gnome-extra/gal-1.99.8
[ebuild N ] gnome-base/gail-1.2.1
[ebuild N ] gnome-extra/libgtkhtml-3.0.7
[ebuild N ] gnome-extra/libgtkhtml-2.2.3
[ebuild N ] gnome-base/libghttp-1.0.9-r3
[ebuild N ] app-doc/ebook-libgnome-1.2
although I dont intend to use gnome.
Are these really needed for these simple apps? I just would like to enjoy a lightweight desktop. To make it worse, these libs for the same task are existent for QT/KDE and GTK/Gnome.
Are the KDE/Gnome libs really making it significantly easier to develop a app - or would it be better to just use the toolkit (QT/GTK) , like for example lyx did with qt and leave the desktop libs alone.
I dont think a KDE or QT app would use gconf for example anyway (I am guessing here...)
Greetz, Bjorn
I don't touch C, except when I'm submitting patches to the GNOME libraries. I use PyGTK, the Python binding. James Henstridge and friends have done a bang-up job. GTK+, GLADE, libglade, PyGTK, and PyGNOME are a great set of tools. My biggest concern with GNOME is the apparent lack of a commitment to maintain backwards compatibility. This has hurt Galeon and GnuCash, I think, to say nothing of the time wasted porting other projects from GNOME 1 to GNOME 2. Maybe they'll have this worked out when it's a little more mature.
While I haven't spent as much time with PyQt, it didn't blow me away the way PyGTK did. It uses old-style, rather than new-style, classes. PyKDE is a separate project: while the latest release of PyQt is 3.7, you have to stay at 3.5 if you want to use PyKDE. Finally, the 250-GBP commercial license fee is ridiculous. I guess they have to pay for the Qt commercial license, somehow.
What is really needed is a GUI protocol that works reasonable over HTTP. HTTP is becoming the standard network protocol for good or bad, and other protocols require too much fire-wall red tape and other issues.
X-Windows is not well suited for HTTP because it requires fast turnaround time for responses, and can be rather bandwidth intensive. I suggest that something like XUL, XWT, or SCGUI (my pet) be looked into, at least for typical business-like forms. (Games and multimedia may be a different issue.)
Table-ized A.I.
<sound of jokes writing themselves>
--------
Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...
Bitch and moan just because it doesn't suck your cock while being exactly like what you're used to using in every other little way.
Worthless flamebait got modded appropriately.
And performance is acceptable I assume?
Libglade loads an XML file at run time that was created with GLADE, the user interface builder. I wonder whether the load times will increase appreciably as the application gets more complex.
Python isn't the fastest language and doesn't have the best threading support. I'm not sure how it will deal with rapid-fire signals, like mouse motion events and time outs (say, for animating a spinner logo). I don't really anticipate needing to handle these in my current project, but I'd like to test them.
If Python doesn't scale well, I can switch from PyGTK to gtkmm or GTK+. If libglade doesn't scale well, I can switch to generated code.
I would have figured that Motif would be something that would have been compared to...
does anyone know why Motif isn't included?