GNOME Goal: Add GObject Introspection Support
Summary
The introspection project has two major goals, and a variety of more minor ones:
Two level applications - C and <your favorite runtime>
Thus, one of the major goals of the GObject introspection project is to be a convenient bridge between these two worlds (C and a managed runtime such JavaScript, Python, Java...), and allow you to choose the right tool for the job, rather than being limited inside one or the other. With the introspection project, you can write for example a ClutterActor or GtkWidget subclass in C, and then without any additional work use that class inside JavaScript.
- Sharing binding infrastructure work, and making the platform even more binding friendly
- Up until now various language bindings such as Python, Mono, java-gnome etc. had duplicated copies of hand-maintained metadata, and this led to a situation where bindings tended to lag behind until these manual fixups were done, or were simply wrong, and your application would crash when calling a more obscure function. The introspection project solves this by putting all of the metadata inside the GObject library itself, using annotations in the comments. This will lead to less duplicate work from binding authors, and a more reliable experience for binding consumers.
See GObjectIntrospection for more details.
Guidelines
For information on how to add introspection to an autotools project, see GObjectIntrospection/AutotoolsIntegration
Comments before approval
Add your comments to this goal proposal here |
I think this needs to specify what constitutes completed introspection. For instance in seahorse, libcryptui the only exported library supports introspection already, but libseahorse (an internal library only) doesn't. What is sufficient to meet the goal? -- [AdamSchreiber]
Update
Although this goal is not completely finished (patches are still welcome), for some modules it is a quite big task. A GNOME Goal should be a small task. So this goal is considered mostly completed.
Status of this goal
Note: Automatically updated stats can be found at http://people.gnome.org/~fpeters/reports/add-gobject-introspection-support.html
Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla for the relevant module, and make it block bug 585444 . |
Patch Status |
Markup |
todo |
<: #ff8080> todo |
patch |
<: #ffcc50> [[GnomeBug:xxxxx|patch]] |
done |
<: #80ff80> [[GnomeBug:xxxxx|done]] |
not needed |
<: #80ff80> not needed |
Above are the states and corresponding markup to update the modules state table below.
Tarball |
Patch Status |
Desktop |
|
not needed |
|
to do |
|
not needed |
|
done |
|
evolution-data-server |
|
to do |
|
evolution-mapi |
to do |
gnome-control-center |
to do |
gnome-desktop |
|
gnome-icon-theme |
not needed |
gnome-keyring |
to do |
gnome-menus |
done |
to do |
|
gnome-settings-daemon |
to do |
to do |
|
to do |
|
gst-plugins-base |
|
gst-plugins-good |
not needed |
to do |
|
done |
|
hamster-applet |
not needed |
libgnomekbd |
to do |
libgtop |
|
liboobs |
to do |
librsvg |
not needed |
libwnck |
done |
metacity |
not needed |
to do |
|
totem |
|
totem-pl-parser |
|
tomboy |
to do |
vte |
|
Platform |
|
GConf |
|
at-spi |
to do |
atk |
|
glib |
to do |
gtk-doc |
not needed |
pango |
|
Development Tools |
|
anjuta |
|
devhelp |
not needed |
gdl |
|
glade |
|
Mobile |
|
clutter-gst |
done |
External Dependencies |
|
avahi |
to do |
cairo |
not needed |
cairomm |
not needed |
clutter-gtk |
done |
conduit |
to do |
dbus |
not needed |
dbus-glib |
not needed, use native bindings instead |
dbus-python |
not needed |
to do |
|
DeviceKit-disks |
to do |
DeviceKit-power |
to do |
enchant |
to do |
expat |
not needed |
farsight2 |
to do |
fontconfig |
not needed |
gamin |
not needed |
gnutls |
not needed |
gpgme |
to do |
gtk-vnc |
to do |
hal |
not needed |
icon-naming-utils |
not needed |
iso-codes |
not needed |
libatasmart |
to do |
libcanberra |
|
libcroco |
to do |
libgda |
|
libgdata |
|
libgsf |
|
libical |
to do |
libmapi |
to do |
libmusicbrainz |
to do |
libnotify |
|
liboil |
not needed |
libproxy |
to do |
libtasn1 |
to do |
libxklavier |
done |
libxml2 |
not needed |
libxslt |
not needed |
Mono.Addins |
not needed |
mozilla (firefox) |
to do |
ndesk-dbus |
not needed |
ndesk-dbus-glib |
to do |
opal |
to do |
pkg-config |
not needed |
not needed |
|
PolicyKit-gnome |
|
pulseaudio |
to do |
poppler |
done |
pycairo |
not needed |
ptlib |
to do |
Python |
not needed |
rarian |
to do |
shared-mime-info |
not needed |
speech-dispatcher |
|
sqlite |
not needed |
startup-notification |
to do |
system-tools-backends |
to do |
telepathy-glib |
|
telepathy-mission-control |
|
unique |
|
Other |
|
abiword |
done |
contact-lookup-applet |
to do |
f-spot |
not needed |
ghex |
to do |
gimp |
to do |
glom |
to do |
gnome-blog |
to do |
gnome-cups-manager |
to do |
gnome-main-menu |
to do |
to do |
|
goocanvas |
|
goocanvasmm |
not needed |
GParted |
to do |
GNOME Phone Manager |
to do |
gtetrinet |
not needed |
gtkglext |
|
libbtctl |
to do |
libgnomekbd |
done |
libgoffice |
|
libgsf |
to do |
libchamplain |
|
nautilus-vcs |
to do |
nemiver |
to do |
mutter |
|
planner |
to do |
rhythmbox |
done |
tracker |
|
webkit |