Introspection Roadmap
Move gobject-introspection into one of GObject or Gio
Various tradeoffs; GObject probably makes the most sense. We aren't a very large amount of runtime code.
gobject will gain a dependency on libffi (potentially, the libffi parts could be split off, but this is less of a win if say GtkBuilder ends up using introspection).
- Issue: What happens to the hand-written .gir files for things like xlib? Move into gscript? Try to get upstream? Idea: --ignore-foreign-namespace=X option which just assumes all X* is a gpointer.
- Issue: win32/OS X porting: We do some non-trivial stuff like compiling and linking the program binary to do introspection; will need nontrival work to be crossplatform, but in theory, doable. Is this a solid blocker for being in GObject?
Actually upstream introspection in various bits of the stack
Namely GTK+ and dependencies. Mostly blocked on ensuring gtk-doc formats it nicely, and lots of grunt work on analyzing the annotations.
Create GScript specification
Create a document describing semantics that should be common to any JavaScript engine backed by GObject. This includes things like how name mapping is handled, type mappings, subclassing, as well as several custom modules like Mainloop and Signals. We should take this opportunity to add a binary array type.
Rewrite alex' gscript module as a generic interface with explicitly pluggable engine backends
This means a new shared library libgscript and /usr/bin/gscript binary, where you can theoretically not care whether it's Spidermonkey, V8, or JSCore underneath as long as you stick to the spec.
Issue: dlopening the js engine is likely to not be maintainable if it even works now; expect OS vendors to compile gscript --with-backend=<insert backend>.
Rename gjs to gscript-spidermonkey, and seed to gscript-jscore
These packages are what libgscript links to. Extras such as gjs' "debugger" module, Seed's "posix" module are non-standard and turn into custom modules which live in the individual packages.
Create modules gscript-spidermonkey-module-cairo, gscript-spidermonkey-module-jscore
To avoid having GScript depend on cairo and X, split off this module.
Move standard GTypes for cairo into GDK
Somewhat of an ancillary issue, but these gtypes are probably needed in the -module-cairo, so we should standardize on them here. This means -module-cairo depends on GTK+, but I don't consider that a problem.