This case was approved at today's LSARC meeting.  I marked the IAM
file "closed approved".

Brian


On 08/13/09 18:23, Brian Cameron wrote:
>
> Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
> This information is Copyright 2009 Sun Microsystems
> 1. Introduction
>      1.1. Project/Component Working Name:
>        gobject-introspection and gir-repository
>      1.2. Name of Document Author/Supplier:
>        Author:  Brian Cameron
>      1.3  Date of This Document:
>       13 August, 2009
> 4. Technical Description
>
> 1. Introduction
>
>     1.1. Project/Component Working Name:
>          gobject-introspection and gir-repostiory
>
>     1.2. Name of Document Author/Supplier:
>          Brian Cameron
>
>     1.3. Date of This Document:
>          08/07/2009
>
>     1.4. Name of Major Document Customer(s)/Consumer(s):
>          1.4.1. The PAC or CPT you expect to review your project:
>                 Solaris PAC
>
>          1.4.2. The ARC(s) you expect to review your project:
>                 LSARC
>
>          1.4.3. The Director/VP who is "Sponsoring" this project:
>                 Robert O'Dea
>
>          1.4.4. The name of your business unit:
>                 Software - OPG
>
>     1.5. Email Aliases:
>          1.5.1. Responsible Manager:
>                 leo.binchy at sun.com
>
>          1.5.2. Responsible Engineer:
>                 brian.cameron at sun.com
>
>          1.5.3  Marketing Manager:
>                 glynn.foster at sun.com
>
>          1.5.4. Interest List:
>                 desktop-discuss at opensolaris.org
>
> 2. Project Summary
>     2.1. Project Description:
>
>          The goal of gobject-introspection is to describe the APIs and collect
>          them in a uniform, machine readable format.
>
>          Historically in GNOME, the core platform has been relatively binding
>          friendly, but there are several details not captured in the C+GObject
>          layer that bindings have needed. For example, reference counting
>          semantics and the item type inside GLists. 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.
>
>          Additionally, because the introspection build process will occur 
> inside
>          the GObject libraries themselves, a goal is to encourage GObject
>          authors to consider shaping their APIs to be more binding friendly 
> from
>          the start, rather than as an afterthought.
>
> 4. Technical Description:
>     4.1. Details:
>
>          Note that gobject-introspection and gir-repository are not currently
>          used by the GNOME 2.28 stack.  They are used by clutter version 1.0,
>          but nothing in the GNOME 2.28 stack currently uses clutter.  
> Providing
>          these libraries in a GNOME 2.28 timeframe is useful only for making
>          it possible for developers to build and test programs like GNOME 
> Shell
>          and libchamplain which are expected to be introduced in the next
>          release of GNOME.
>
>          gobject-introspection provides:
>
>          * An XML format called GIR containing introspection information
>          * python package to create and parse the GIR format
>          * scanner to generate GIR format from C source and headers
>          * a typelib similar to xpcom/msole which stores the information on 
> disk
>            in a binary format
>          * a compiler to compile the typelib from a xml format (and vice 
> versa)
>          * C library to read the typelib
>
>          The gobject-introspection module installs:
>          * typelib files to /usr/lib/girepository-1.0
>          * GIR files to /usr/share/gir-1.0
>
>          for the following modules:
>          * OpenGL
>          * Glib
>          * cairo
>          * fontconfig
>          * freetype2
>          * libxml2
>          * xfixes
>          * xft
>          * xlib
>
>          Note that only the glib GIR and typelib files are built by the
>          gobject-introspection module.  The other modules are supported with
>          static files.
>
>     4.1.1 GIR XML Format
>
>          The core of the GObject-introspection is an XML format which is 
> called
>          GIR (GObject Introspection Repository) which contains the API
>          introspection metadata for a library or interface entity.  The 
> purpose
>          of it is to provide a common structure to access the complete 
> available
>          API that a library or other unit of code exports. It is meant to be
>          language agnostic using namespaces to separate core, language or
>          library specific functionality. There are currently only C based 
> tools
>          that work on the format, but it's meant to be usable to use in other
>          situations, for instance to/from another set of languages.
>
>          GIR currently contains three different XML namespaces:
>
>          * core: contains features available in popular programming languages:
>                  classes, methods, functions, interfaces, properties, strings,
>                  enums etc.
>          * c:    contains features specific to the C language: identifiers,
>                  symbol names, C types
>          * glib: contains features specific to GLib/GObject: signal, GType,
>                  flags, paramspec
>
>          The separation of different data in different namespaces allow you to
>          reuse it allows you to arbitrarily extend the metadata available in
>          different languages.
>
>     4.1.2 Typelib
>
>          The typelib is a to disk version of the GIR designed to be fast, 
> memory
>          efficient and complete enough so that language bindings can be 
> written
>          on top of it without other sources of information. It is normally
>          compiled from a GIR when a library/program is installed and accessed
>          from the language binding or another application who wishes to use 
> the
>          information.
>
>     4.1.3 Tools
>
>          * g-ir-compiler - A typelib compiler.  It converts one or more GIR
>                            files into one or more typelib files.  It can emit
>                            either raw typelib files (default) or C code if the
>                            --code argument is used.
>          * g-ir-generate - A GIR generator, using the repository API.  It
>                            generates GIR files from a raw typlib or a shared
>                            library.
>          * g-ir-scanner  - Generates GIR XML files by parsing headers and
>                            introspecting GObject based libraries.  It is
>                            usually invoked during the normal build step for a
>                            project and the information is saved to disk and
>                            later installed so language bindings and other
>                            applications can use it.  Header files and source
>                            files are passed in arguments on the command line.
>                            Currently only C-based libraries are supported by
>                            the scanner.
>
>     4.1.4 API Library
>
>          gobject-introspection also includes a C based library called
>          libgirepository which provides an API to access to the typelib
>          metadata. It also contains an API to invoke functions, given the
>          function info object. The implementation is based on libffi.
>
>     4.1.5 API Library
>
>          A separate module called gir-repository provides typelib and GIR 
> files
>          for many libraries available in the GNOME stack which library 
> bindings
>          can depend upon.  This module is temporary, since these .gir files 
> will
>          eventually migrate to their respective upstream modules.
>
>     4.1.6 gir-repostiory
>
>          The gir-repository module installs:
>          * typelib files to /usr/lib/girepository-1.0
>          * GIR files to /usr/share/gir-1.0
>
>          for the following modules:
>          * ATK
>          * avahi
>          * babl
>          * clutter, clutter-gtk, clutter-cairo, clutter-json
>          * D-Bus
>          * GConf
>          * GDK, GDK-pixbuf, GTK
>          * gnio (not currently available on Solaris)
>          * gnome-keyring
>          * gnome-menu
>          * goocanvas (not currently available on Solaris)
>          * GStreamer
>          * gssdp (not currently available on Solaris)
>          * gtksourceview
>          * libnautilus-extension
>          * libnotify
>          * libunique
>          * libwnck
>          * pango
>          * poppler
>          * libsoup
>          * VTE
>          * webkit (LSARC 2009/409)
>
>          It only installs the files for the modules which are available on the
>          system.
>
>          gir-repostitory also installs a handful of helper libraries to build
>          and use typelibs.
>
>     4.2. Interfaces:
>
>        Exported Interfaces                 Stability         Comments
>        ----------------------------------  ----------------  -------------
>
>        The gobject-introspection module exports these interfaces:
>
>        /usr/bin/g-ir-compiler              Uncommitted       Compiler
>        /usr/bin/g-ir-generate              Uncommitted       GIR Generator
>        /usr/bin/g-ir-scanner               Uncommitted       GIR XML Generator
>        /usr/lib/libgirepository-1.0.so     Uncommitted       Library API
>        /usr/lib/libgirepository-everything-1.0.so
>                                            Uncommitted       Library used for
>                                                              testing bindings
>                                                              for completeness.
>        /usr/lib/girepository-1.0           Uncommitted       Repository of
>                                                              typelib files for
>                                                              libraries
>        /usr/lib/gobject-introspection/giscanner
>                                            Project Private   Implementation of
>                                                              g-ir-scanner
>        /usr/lib/pkgconfig/gobject-introspection-1.0.pc
>                                            Uncommitted       
> object-introspection
>                                                              pc file
>        /usr/include/object-introspection/girepository.h
>                                            Uncommitted       header file
>        /usr/include/object-introspection/girffi.h
>                                            Uncommitted       header file
>        /usr/share/gir-1.0/                 Uncommitted       Repository of GIR
>                                                              files for 
> libraries.
>        /usr/share/man/man1/g-ir-compiler.1 Uncommitted       Man page
>        /usr/share/man/man1/g-ir-generate.1 Uncommitted       Man page
>        /usr/share/man/man1/g-ir-scanner.1  Uncommitted       Man page
>
>        The gir-repository module exports these additional interfaces:
>
>        /usr/lib/libgirepo-Clutter-custom.so
>                                            Volatile          Helper library
>                                                              for building
>                                                              typelibs
>        /usr/lib/libgirepo-DBus-custom.so   Volatile          ""
>        /usr/lib/libgirepo-Gdk-custom.so    Volatile          ""
>        /usr/lib/libgirepo-Gtk-custom.so    Volatile          ""
>
>        Imported Interfaces      Stability          Comments
>        --------------------     ---------------    -----------------------
>
>        gobject-introspection imports:
>
>        glib                     Committed          LSARC 2006/202
>        libffi                   Volatile           PSARC 2008/542
>
>        gir-repository imports:
>
>        ATK                      Committed          LSARC 2006/202
>        avahi                    Volatile           LSARC 2006/455
>        babl                     Volatile           LSARC 2008/702
>        clutter                  Volatile           LSARC 2008/426
>        D-Bus                    Volatile           LSARC 2006/368
>        GConf                    Volatile           LSARC 2006/202
>        GDK, GDK-pixbuf, GTK     Committed          LSARC 2006/202
>        gnome-keyring            Volatile           LSARC 2008/430
>        gnome-menu               Volatile           LSARC 2007/146
>        GStreamer                Volatile           LSARC 2006/202
>        gtksourceview            Volatile           LSARC 2007/146
>        libnautilus-extension    Volatile           LSARC 2006/202
>        libnotify                Volatile           LSARC 2007/137
>        libunique                Volatile           LSARC 2009/142
>        libwnck                  Volatile           LSARC 2006/202
>        pango                    Committed          LSARC 2006/202
>        poppler                  Volatile           LSARC 2007/146
>        libsoup                  Project Private    LSARC 2003/298
>        VTE                      Volatile           LSARC 2006/202
>        webkit                   Uncommitted        LSARC 2009/409
>
>     4.3. Doc Impact:
>
>          Man pages are provided with gobject-introspection
>
>     4.4. Packaging&  Delivery:
>
>          SUNWgobject-introspection, SUNWgobject-introspection-devel,
>          SUNWgir-repository
>
>     4.5. Dependencies:
>
>          None.
>
>     4.6. L10N Impact:
>
>          The Desktop team and the G11N team are working together to evaluate 
> and
>          provide I18N/L10N support.
>
>     4.7. Security Impact:
>
>          None
>
> 5. Reference Documents:
>
>     GObject Introspection Website
>     http://live.gnome.org/GObjectIntrospection/
>
>     GObject Introspection Tutorial
>     http://live.gnome.org/GObjectIntrospection/FromHereToThere
>
>     GObject Introspection Annotations
>     http://live.gnome.org/GObjectIntrospection/Annotations
>
>
> 6. Resources and Schedule
>      6.4. Steering Committee requested information
>       6.4.1. Consolidation C-team Name:
>               Desktop
>      6.5. ARC review type: FastTrack
>      6.6. ARC Exposure: open
>
> _______________________________________________
> opensolaris-arc mailing list
> opensolaris-arc at opensolaris.org


Reply via email to