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

{i} 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

{i} 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 .
This way people will know someone already works on it, and won't duplicate the work you're doing.

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

brasero

done

deskbar-applet

not needed

empathy

to do

eog

not needed

epiphany

done

evince

done

evolution-data-server

done

evolution

to do

evolution-mapi

to do

gedit

done

gnome-control-center

to do

gnome-desktop

done

gnome-icon-theme

not needed

gnome-keyring

to do

gnome-media

630916

gnome-menus

done

gnome-panel

done

gnome-screensaver

to do

gnome-settings-daemon

to do

gnome-system-tools

to do

gnome-utils

to do

gstreamer

done

gst-plugins-base

done

gst-plugins-good

not needed

gtk-engines

to do

gtksourceview

done

gucharmap

done

hamster-applet

not needed

libgnomekbd

to do

libgtop

done

libgweather

done

liboobs

to do

librsvg

not needed

libsoup

done

libwnck

done

metacity

not needed

nautilus

done

seahorse

to do

totem

done

totem-pl-parser

done

tomboy

to do

vte

done

Platform

GConf

done

at-spi

to do

atk

done

glib

to do

gtk+

done

gtk-doc

not needed

pango

done

Development Tools

anjuta

done

devhelp

not needed

gdl

done

glade

done

Mobile

clutter-gst

done

External Dependencies

avahi

to do

cairo

not needed

cairomm

not needed

clutter

done

clutter-gtk

done

conduit

to do

dbus

not needed

dbus-glib

not needed, use native bindings instead

dbus-python

not needed

DeviceKit

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

to do

libcroco

to do

libgda

done

libgdata

done

libgsf

done

libical

to do

libmapi

to do

libmusicbrainz

to do

libnotify

done

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

PolicyKit

not needed

PolicyKit-gnome

done

pulseaudio

to do

poppler

done

pycairo

not needed

ptlib

to do

Python

not needed

rarian

to do

shared-mime-info

not needed

speech-dispatcher

to do

sqlite

not needed

startup-notification

to do

system-tools-backends

to do

telepathy-glib

done

telepathy-mission-control

upstream bug

unique

done in 1.1

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-scan

to do

gnome-bluetooth

done

gnome-cups-manager

to do

gnome-main-menu

to do

gnome-mud

to do

goocanvas

to do

goocanvasmm

not needed

GParted

to do

GNOME Phone Manager

to do

Gnumeric

done

gtetrinet

not needed

gtkglext

to do

gtranslator

done

libbtctl

to do

libgnomekbd

done

libgoffice

done

libgsf

to do

libchamplain

done

nautilus-vcs

to do

nemiver

to do

NetworkManager

done

mutter

done

planner

to do

rhythmbox

done

tracker

done

webkit

done

Initiatives/GnomeGoals/AddGObjectIntrospectionSupport (last edited 2014-10-11 20:02:29 by SébastienWilmet)