[plug] Gdk errors

Simon Scott simon.scott at flexiplan.com
Fri Aug 3 10:09:07 WST 2001


	You mention stability, could you expand on this? ie general feel, an
idea of how many crashes youd get attributable to GTK etc, if you have an
idea that is.

	I have a need to write a somewhat trivial application but stability
is a concern. It doesnt have to be 24/7 no crashes, but it cant be windoze
either.

	Either way, I guess I'll write some stuff in GTK myself and see how
it goes.

	Thanks for the feedback!



	From:	Russell Keith-Magee <Russell.Magee at calytrix.com> on
03/08/2001 09:58 AM
	Please respond to plug at plug.linux.org.au@SMTP at Exchange
	To:	plug at plug.linux.org.au@SMTP at Exchange
	cc:	 

	Subject:	RE: [plug] Gdk errors


	> 	While speaking about GTK....
	>
	> 	How does everyone find it?
	>
	> 	Some people tell me QT is the way to go, but I dislike C++
	>
	> 	Im especially interested in GTK as a cross-platform GUI, so
has
	> anyone tried the windows ports?
	>
	> 	How friendly/useful are the widgets?

	I like GTK+, but it does have a few problems.

	Positives:
	1) It's fast. I find that startup times for GTK applications are up
to an
	order of magnitude faster than comparable QT apps. This doesn't
always hold
	for Gnome apps, however. Nautilus, for example, starts much slower
than
	Konqueror on my box.

	2) Even though GTK is written C, it's got a really nice OO
infrastructure. I
	would much rather use GTK+'s OO-ified C than raw K&R C anyday.
Dynamic
	casting with typechecking is a beautiful thing, and it requires
surprisingly
	little overhead.

	3) The widget library is very extensive, especially if you include
all the
	Gnome UI classes.

	4) Unlike QT, you don't require a meta-compiler. QT adds keywords to
the C++
	language spec to do event handling, etc. You have to run moc over
your code
	before you run gcc. GTK does all its magic with #defines and
standard ANSI C
	structures.

	5) IMHO, the theming engines for GTK look nicer than the ones
available for
	Qt. I acknowledge that this is 100% personal taste, but this might
be a
	contributor to any decision you make.

	Negatives:
	1) Although the OO infrastructure is powerful, its convoluted. You
can do
	inheritance, virtual methods, event handling, etc., but you have to
write a
	lot of syntactic noise to do it. A basic C++ class which could be
written in
	5 lines of code would require almost a page of code in GTK.
Admittedly, it's
	all boilerplate, but it does impede readability.

	2) Although there is a OO structure in the GTK "class library",
there are
	some instances where OO isn't being used all that well. This is
especially
	evident in the Gnome UI library. A lot of code in Gnome isn't 100%
OO. This
	may be done for performance reasons, or it may be an extension of
point 1
	(Doing OO for a small class requires often more effort than it is
worth) - I
	can't really say - but either way, you can't get the full advantage
of a
	100% OO system.

	3) There is nothing forcing you to do OO - the facility is there,
but you
	can break the rules by simply
	ignoring the GTK extensions. Given the overhead required to use the
OO
	stuff, there is often a strong incentive to do this. This is another
facet
	of point 2.

	4) The support for Xfree 4 extensions (like the render and font
antialiasing
	extensions) is pretty abysmal. Whereas QT gets font antialiasing
through a
	recompile of the QT library, you have to completely rewrite your GTK
apps to
	use Pango, the new antialiased font system. This is an artifact of
points 2
	and 3.

	5) The UI system isn't threaded at all (although many of the
libraries are
	thread safe). Consequently, it is very easy to lock up your UI by
having a
	processing routine that doesn't return quickly.

	Summary:
	GTK+ is good and stable for finished applications that are written
properly.
	However, it's not an effective prototyping tool, and it's easy to
write an
	application that will look really sluggish if you are not fully
aware of how
	to use the GTK event model. My experience with the Windows support
is
	limited, but what I have seen is fairly impressive.

	My 2c...

	Russ %-)

	********************************************
	Russell Keith-Magee
	Software Engineer
	Calytrix Technologies
	Unit 9, EIR Building, Technology Park
	PO Box 1173, BENTLEY 6982, Western Australia

	Tel: +61 8 9362 5300
	Fax: +61 8 9362 5400
	Mobile: 0408 928 379




**********************************************************************
This email and any files transmitted with it are confidential and 
intended solely for the use of the individual or entity to whom they   
are addressed. If you have received this email in error please notify 
the system manager.

This footnote also confirms that this email message has been swept by 
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************



More information about the plug mailing list