6 Jun 2002 johnnyb   » (Journeyer)

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

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!