I committed a bunch of stuff to CVS lately, mainly the big move away from using GInterface to using abstract base classes. For those who are implementing libs and such which provide GObjects, here's what I learned: GInterface is for particular APIs which can exist outside the normal object hierarchy. If you don't need the API to exist outside the normal hierarchy, or you do need the "chain-to-parent" functionality, don't use GInterface, do a GTK+-style with bunch-o-abstract-base-classes. It's actually much simpler that way.
I will say that it'd be really nice if all the various GNOME APIs for data streams were combined at some point. GLib, GStreamer, ORBit, Bonobo, and GnomeVFS all have some form of a "read from file" API, and it's silly to duplicate that in 5 places.