[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GUI stuff



On Tue, 16 Feb 1999, David Webster wrote:
> I am wanting to start some GUI development but I am having a hard time
> figuring out just what the GUI development is?  I see that the GTK
> libaraires are the base C++ GUI class libraries, but I also see stuff
> like Gnome and qt* and Glib, and other stuff.  Is there any online
> documentation that sorts all this stuff out?  What are the compliments
> in the Linux/X11 world to MFC/IOCL in the Win32 world?  What about
> resource editors and stuff like that???
> 

Here is my take on things, somewhat different from other answers perhaps. 
I am a Gnome developer and wrote some of the Gnome library stuff (just so
you know my biases). 

Gtk+ is an object-oriented library written in C. It is a "widget set,"
which means it lets you create windows, text entries, scroll bars, etc.
See http://www.gtk.org. It's written in C, but works great with C++; I use
it all the time. If you prefer there are several C++ wrappers though,
which let you subclass widgets, etc. There are also wrappers in a dozen
other languages.

glib is a C utility library which deals with some code portability
concerns and fleshes out the C standard library with some data structures
and the like. Gtk uses it, as do many Gtk programs.

Gnome has two faces. From the developer's point of view it is an
application development framework. It adds a lot of useful widgets to Gtk,
adds some convenience functions, adds some things like configuration file
loading/saving, adds CORBA (analagous to DCOM), adds image file loading,
etc. This is all in the 'gnome-libs' package. 

The other face of Gnome is a desktop environment and set of applications
built using the developer's framework. However, if you use the framework
your users are not forced to use Gnome; gnome-apt, for example, runs just
fine without any of the desktop stuff installed. (The desktop environment
includes a file manager like Windows Explorer, a start-menu type thing,
etc.)

If you are going to write a new GUI application you should use Gnome, IMO.
Here are the reasons:

 - Gnome is nicer than the alternatives, unless you have special needs 
   (like a cross-platform toolkit).

 - Gnome is 100% free; this means you can write applications with it 
   using the license of your choice, and paying no license fee.

 - Partially as a consequence of the above, Gnome is likely to be the 
   future "standard" environment, and well-supported

 - Debian and Red Hat are both supporting Gnome as the "standard" 
   desktop (to the extent that anything can be "standard" in the 
   free software world; really this just means "default").

 - This means Debian and Red Hat users will have Gnome installed 
   already, so they'll be able to compile your app easily.

 - Gnome is supported by 250+ developers; most other kits are supported
   by a few people. Stuff gets fixed fast, and there is a lot of stuff.


Some people advocate using only Gtk and not Gnome. If your app is at all
substantial, this is a poor idea IMO (and I have written several apps). 
It is short-term attractive because you don't have to learn and compile
the Gnome libraries. But once Gnome hits 1.0, expected this month,
this advantage disappears. Gnome offers a standard look-and-feel and a
*lot* of programming conveniences. It's a significant enhancement to plain
Gtk.

Again, unless you have special needs such as cross-platform development,
it's probably a poor idea to use a toolkit other than Gtk. Gtk appears to
be an emerging standard (finally), and you'll end up with an ugly legacy
dependency using other kits. And if you're using Gtk, it only makes sense
to use Gnome too.

To be fair, Qt and KDE are likely to continue to be popular for a good
long while and they may even be the most popular at the moment (hard to
say). Qt is cross-platform and commercially supported. However, you will
have to pay to use Qt for a proprietary application. And it is my guess
(only a guess) that Gtk will be longer-lasting and more popular on a
2-to-5-year timescale. But you should make your own judgment on that after
you do some research. 

Havoc





Reply to: