GNOME 2.0 development platform
Integration of various of the existing GNOME libraries would
be ideal to minimize dependencies, and to provide a more
integrated platform.
Currently gnome-libs requires Gtk to compile, so even our
non-UI portions of gnome-libs require people to install Gtk+
and X. Various of our technologies are not bound to X, and
the new Glib 2.0 will enable us to fully drop the requirement
on Gtk+/X.
We want to split gnome-libs into two pieces, one containing
code that does not depend on Gtk+ and X and another one that
does. Here is a plan:
- gnome-libs-2:
This will consist of the following modules: libgnome,
bonobo-core, gnome-vfs, gnome-print-core.
- gnome-libs-2ui:
This will consist of the following modules:
libgnomeui, bonobo-ui, gnome-vfs-ui, gnome-print-ui,
gnome-glade and zvt.
Given that Gtk 2.0 has most of the features to create rich
applications (something that we used gnome-libs for in the
past), the motivation to use gnome-libs is smaller now.
We want hence, to make gnome-libs applications be those that
are enhanced to use Bonobo. (Since gnome-libs will now use
GConf, there is a CORBA dependency there anyways).
Action Plan
- Create the new modules. Two new modules
gnome-libs-2 and gnome-libs-2ui would be
created
- CVS surgery, CVS magic. Copy sources from
the various composing modules into the new modules on
CVS. In some cases we can just virtually link to the
existing modules (gnome-vfs/libgnomevfs for example).
- Pulling code into the new modules: We want
to start with gnome-libs-1.4 code base, and back port
the changes from HEAD into it. For details and
rationale, see this.
- Provide compatibility wrapper for GnomeApp:
BonoboWindow and BonoboUI provide most of the features
that GnomeApp provides in a more correct, cleaner
way. We want to switch to using BonoboWindow widgets
and related tools.
- Porting to GObject: Both Bonobo and
GnomePrint currently use GtkObject as their base
classes. We will be porting the code to use GObject.
- Merge gnome-libs HEAD changes: Review the
individual improvements from gnome-libs HEAD and
integrate them into the new split modules. For
details and rationale see this.
- Shared pool of standard IDL files: A pool of
these IDL files will come from Bonobo, but Jacob has
expressed the problems of having IDL files scattered
across modules and the dependency problems that this
causes.
- The Canvas: After some discussion with
Lauris and Federico, we have come up with a list of
thoughts
Using the Gtk+ 2.0 platform
Just a list of random thoughts regarding the use of Gtk+ 2.0
in Gnome-Libs 2.0:
- GnomeStock becomes a wrapper around GtkStock to
preserve source compatibility.
- GnomeDialog will be marked as "deprecated", but it
is not possible to wrap GtkDialog (according to Havoc,
there is little gain, and too much pain to be
suffered).
Thanks to
Thanks to Havoc Pennington, Jacob Berkman, Federico Mena,
Lauris Kaplinski and all the helpful comments on
gnome-hackers@gnome.org