I sent the following message to Nicholas Petreley on my
thoughts on GNOME:
If you're interested, these are the things that attracted me
to GNOME:
1 - Try to do it the right way first. KDE seems to try to
get it done
first, and then make it the right way later. This makes
them polished
earlier, but I imagine you will start to see GNOME expand in
many ways
that KDE can't when it gets to that point. It's kind of
like Linux -
start with a sound, if perhaps rough, base, and expand from
there.
2 - Non-GUI cooperation. Many of the pieces of GNOME can be
used in
non-GUI applications. GLIB, ORBit2, even pieces of Bonobo are
fundamentally separated from their GUI parts. This is
characteristic of
good library design, and also increases the utility of the
platform to
developers, since the skills are not bound to GUI-based
applications.
3 - CORBA. This is an instance of #1. CORBA is an
excellent, robust
platform for distributed object communications. It is also
not-hard.
Those who claim so have probably not tried. It takes all of
two hours to
learn the basics, and everything comes easily after that.
4 - libglade. This is one kick-butt feature. It allows
user-interfaces
to be loaded from XML files. This allows nondevelopers to
work on
interface issues. GLADE has not matured to the point where
this is really
useful, but it has wonderful potential.
5 - Ultra-customizability - I haven't used KDE in a while,
so it might
have gained on GNOME in this, but the configurability is
awesome. The
ability to have multiple panes going every which way is
great. The only
thing that I miss is KDE's ability to do Mac-like menus :(
6 - Use of the actual language. QT depends on that horrid
MOC to compile
C++. If C++ wasn't a horrid enough language already, they
had to go and
put a preprocessor on it. Makes me want to run away screaming.
Of course, GNOME has a few things that drive me buggy -
1 - Bonobo. Many parts of Bonobo are well-written.
However, there are
many parts that are taken from Microsoft (like GUIDs) that
are totally
stupid. Interfaces should be identified with text strings
that include
vendor-strings. Also, it appears that they implemented argument
marshalling on top of CORBA, which already does marshalling.
They do this
to avoid making the poor developer learn CORBA, which is a
terrible goal.
Keeping developers stupid is not a good goal. Also, they
implemented a
service for finding servers, when there is already a well
defined CORBA
trading service for this purpose. Ugh. They seem to
re-implement the
CORBA architecture in several places.
2 - GLADE. This could be an excellent tool. It only takes
one more
feature to make it great. That is to add a few hooks for minor
source-code generation. Specifically, for the Python side,
to allow it to
auto-create Python classes that will create new widgets on
instantiation,
and also have skeleton methods for any signal handlers that
are defined.
This would make programming this environment stupidly easy.
3 - An immersive book on application development. Most
current books
ignore the issues that make GNOME programming more than just
advanced GTK
programming. Things like integrating Bonobo, Session
management,
Accessibility, Gnome-VFS integration, Nautilus integration,
printing,
configuration, sound, i18n, and scrollkeeper. Basically,
taking an app
and adding each piece. It doesn't need to go in-depth, but
just show how
each one works togehter. Unfortunately, the "mother tome"
(GGAD) seems to
want to delve into the murky depths of GDK - for which I
don't have the
faintest clue why an application developer would care.
Anyway, this one
item would help developers out immensely. It needs to
immerse the
developer in how development is done, not go in depth on any
one subject.
That's what API references are for.
Anyway, that's my 2c