Re: [gob-list] Should I use GOB?

From: George <>
Date: Tue, 27 May 2003 09:00:44 -0700

On Sat, May 24, 2003 at 01:47:39PM +0000, Dave Malcolm wrote:
> Possibly a silly question, considering who I'm asking :-)

Possibly :)

> I'm the lead programmer on Conglomerate (, a free
> (as in GPL/LPGL) user-friendly XML editor. We're hoping to make
> something that former Word users can easily migrate to, for editing
> DocBook and other formats.


> Currently the code is in C, and uses GTK+ and GNOME libraries. There
> are various places where classes and inheritance get used, though they
> are currently implemented using structs and hand-coded v-tables, rather
> than GObject. I'm about to do a big rewrite of a substantial part of
> the code.
> I'm considering several options for my classes:
> - port to C++ and use that
> - port to C# and use Mono
> - port to GObject by hand
> - port to GObject using GOB2
> - port to Python
> I've had a brief play with GOB2, and I'm quite fond of the GOB2
> approach. But something that concerns me is how few projects seem to be
> using GOB2. There also doesn't seem to be an archive of this mailing
> list, and the "minimalist" nature of the website makes the project come
> across as a bit of an experiment, rather than a reliable tool.
> I'm a bit scared of introducing such a vital dependency into my project
> Are there any testimonials out there from satisfied users?
> I'm sorry if this comes across as a bit negative; please understand that
> I want only the best for my project!

I fully understand. First let me explain the lack of projects using gob, and
note not all of them are listed on the page, for example gnome-vfs uses gob.
I think people are 1) scared of anything called a preprocessor 2) scared of
an extra dependency. #1 can't be solved since that's irrational fear. If
you're afraid of preprocessors you'd better not even use C though. #2 can be
solved by just including gob with your sources. This is what gnome-vfs does,
you can just stick gob into the distributed source tree and so anyone can
still compile and hack on the project without needing to get gob. Lot of
people are however afraid of gob because it is not a "clean" solution. Which
it is not, it is a pragmatic solution. It is a way to create GObject based
classes in C. If I were to implement another object system for gob, I
wouldn't use GObject. In fact I wouldn't write gob, I'd use one of the
existing languages that implements classes in the language syntax, like C++,
Python, C# or Java. GOB is a way to get things done, not an entry into
competition for perfect language design.

If you are afraid of the minimalist web page, that is because I'm not much of
a webmonkey. I would say that gob should be a reliable tool and I used it in
several projects myself (this was my original reason for writing gob). I
don't have that much time currently due to school and so I don't maintain 5
million projects as I did a few years ago (count currently stands at 3:), so
I don't use gob currently (I don't have a need for it in gdm nor genius
currently, but if I ever do need it, I will definately use it).

So the point is: if you wish to use GObject, I'd suggest GOB2. Writing
GObjects by hand is lots of needless pain which brings about many bugs
because of typos (I can rant long hours on the evils of C varargs and the way
GObject uses them, and the way they can screw you up if you do GObjects by
hand). However if you don't mind not using C and GObject, I'd suggest going
with one of the oo languages. One reason for GOB2 was to be able to write
libraries that are as easily bindable as any other GObject C library. If you
don't care about language interoperability, don't care about using GObject,
and don't care about C in particular, I don't see a reason to use gob :)
Now if I was starting a project with lots of classes, I'd probably still
pick C and GOB2 myself since I'm much more at home in C then anything else.

As for the testimonials, of course I'd be biased :)


George <>
   A physical understanding is a completely unmathematical, imprecise, and
   inexact thing, but absolutely necessary for a physicist.
                       -- Richard P. Feynman
Received on Tue May 27 2003 - 12:00:57 CDT

This archive was generated by hypermail 2.2.0 : Sun Apr 17 2011 - 21:05:02 CDT