GNOME Interface Review




GNOMEies:

Over the past few months, the Sun GNOME team has been working with the
Sun ARC (Architectural Review Committee).  Our goal in this process is
to better define the set of GNOME interfaces that can be recommended
for use to integrate with the GNOME desktop.  It explains which
interfaces Sun is recommended to its users, and why.  It also discusses
the ARC committee's overall opinion of the stability of the GNOME
stack.  Hopefully this is interesting to people, and this mail list
seems an appropriate forum for GNOME interface discussion.

With this case, we have tried to define a reasonable subset of
interfaces which allow users to realistically integrate with the
desktop without exposing interfaces that are not well documented or
clearly Stable (e.g. following Platform API/ABI rules).  The approach
follows what many current ISV's (Adobe, Real, GIMP, etc.) are using.
In other words, depend only on GNOME Platform Interfaces GTK+ and
below and specific FreeDesktop specs required for reasonable desktop
integration.  Read the interface table in the attached opinion for
more detail.  It would be interesting to hear if others have differing
perspectives on this.

I have also attached the Functional Specification that we are currently
working on to explain differences between 2.12 and 2.14.  This second
document is still a work-in-progress and will likely take a month or
two to be finalized into another Opinion, which I can share when the
process completes.  Our goal is to go through this process for each
GNOME stable release, to better capture and document the specific
differences to intefaces recommended for use.

It would be especially useful if anyone had any information to share.
Do these documents reasonably cover a minimal set of interfaces needed
to integrate with the GNOME desktop?  Are there additional interfaces
that should be considered Stable integration points?  The opinions
expressed in these documents are Sun's, so it would be useful to hear
if there are any inaccuracies you notice.

There has been some past discussion about the general need to better
clarify what subset of GNOME interfaces should be recommended for use
outside of the GNOME consolidation.  If this sort of documentation is
generally useful to the GNOME community, I would be happy to integrate
it however appropriate with general GNOME documentation.

Thanks,

Brian

Sun Microsystems Systems Architecture Committee

Subject:                     GNOME For Nevada
Submitted by:                Brian Cameron
File:                        LSARC/2005/734/GNOME-Nevada-Opinion.txt
Date:                        March 27nd, 2006
Committee:                   John Fischer (written by Brian Cameron), TBD
Product Approval Committee:  Solaris PAC

  1. Summary

     This case updates Solaris Nevada to include an updated and more modern
     GNOME desktop, helping Sun to remain competitive with other desktop
     platforms.

     This project updates the next Minor release of Solaris to GNOME 2.12. 
     This release includes updates to components such as Evolution, Gaim.  
     Some new components have been added to the release, such as cairo, evince,
     and D-BUS.  Full details of new features can be found in the GNOME
     Release Notes [19].

     This project also announces a few components as being Obsolete in a Patch
     release of Solaris and removes them in a Minor release of Solaris.  These
     components are Obsolete because the GNOME community no longer ships them
     or suitable replacements have been established.  

  2. Decision & Precedence Information

     The project is approved as specified in reference [1], but as modified by
     the required technical changes listed in Appendix A below.  The project
     may be delivered in a Minor release of Solaris. 
      
     The GNOME project is an example of where Solaris has an increasing
     dependency on external projects.  Based on past experience with GNOME,
     this case intends to set precedents on how external projects are reviewed
     and managed.  The goal being to improve the relationship between Sun and
     the open software communities Sun depends upon.  

     Precedent includes:

     1) This case intends to provide an example of how external project
        documentation can be used to navigate the ARC process.

     2) An opinion crafted to include issues that need to be communicated
        back to the external community.  This includes removal of the "Sun
        Proprietary/Need to Know" labels in the ARC documentation, so that
        information can be more easily shared with the external community.

        To make it easier for people in the Free and Open Source community
        to parse this document, sections not relevant to the external 
        community are identified as follows:

        #ifndef OPEN_SOURCE_COMMUNITY
        [...]
        #endif /* OPEN_SOURCE_COMMUNITY */

     3) An expectation that the project team will work with the external
        community to resolve issues highlighted in the opinion and report back
        progress in a future review.

     4) This case shows how one project has mapped external community stability
        claims to Sun claims

     5) Closer integration with the OpenSolaris ARC process.

  3. Interfaces

     This interface table was compiled with the assistance and approval of
     Joe Kowalski.

     Interfaces Exported

     Interface Name         Classification          Comment
     ---------------------- ----------------------- -------------------------

     Stable GNOME Platform interfaces.  Refer to GNOME-Nevada-interfaces.txt
     for more detail on specific interface additions
     -----------------------------------------------

     ATK 1.10.3              Stable                 [ref 4, sec 3] Was 1.7.3
                                                    (LSARC 2001/650)
     glib 2.8.4              Stable                 [ref 4, sec 3] Was 2.4.1
                                                    (LSARC 2001/384)
     GTK+ 2.8.8              Stable                 [ref 4, sec 3] Was 2.4.1
                                                    ("")
     pango 1.10.1            Stable                 [ref 4, sec 3] Was 1.4.1
                                                    ("")
     at-spi 1.6.6            Stable                 [ref 4, sec 3] Was 1.6.2
       (except include/libspi/Accessibility.h)      (LSARC 2001/650 - listed
                                                    incorrectly as "External"
                                                    in LSARC 2004/713)

     Other Stable GNOME Interfaces
     -----------------------------

     GDM 2.8.0.7
        Configuration        Stable                 Updated stability
                                                    [ref 4, sec 2] [11]

     GNOME package names     Stable                 As defined in
                                                    LSARC 2004/713
     /usr/sfw/share/applications
                             Stable                 Location for .desktop files
                                                    for /usr/sfw components.
     /usr/share/gnome        Stable                 GNOME 2.0 directory for
                                                    external applications
                                                    supported for backwards
                                                    compatibility.
     /usr/bin/update-desktop-database
                             Stable                 Utility for updating the
                                                    desktop menu database.
                                                    Refer to 4.14.
     /usr/bin/gtk-update-icon-cache 
                             Stable                 Utility for updating the
                                                    icon cache.  Refer to 4.14.

     GNOME Platform interfaces that have API documentation
     -----------------------------------------------------

     libglade 2.5.1          Contracted External    [ref 4, sec 3] Was 2.3.6
                                                    Downgraded from Evolving
                                                    due to expected
                                                    Deprecation.
                                                    (LSARC 2001/384)
     GConf 2.12.1            Contracted External    Was 2.6.1 (LSARC 2004/713)
     ORBIT2 2.12.4           Contracted External    Was 2.10.1 (LSARC 2004/713)
     gnome-vfs 2.12.2        Contracted External    Was 2.6.0 (LSARC 2004/713)
     gtk-doc 1.4             Contracted External    Updated stability.
     libIDL 0.8.6            Contracted External    Updated stability.
     libbonobo 2.10.1        Contracted External    Was 2.6.0 (LSARC 2004/713).
                                                    Includes bonobo-activation.
     libbonoboui 2.10.1      Contracted External    Was 2.6.0 (LSARC 2004/713)
     libgail-gnome 1.1.2     Contracted External    Was 1.1.0 (LSARC 2004/713)
     libgnome 2.12.0.1       Contracted External    Was 2.6.0 (LSARC 2004/713)
     libgnomecanvas 2.12.0   Contracted External    Was 2.6.0 (LSARC 2004/713)
     libgnomeui 2.12.0       Contracted External    Was 2.6.1.1 (LSARC 2004/713)

     FreeDesktop specifications used by GNOME  
     ----------------------------------------

     Base Directory
       Specification         Stable                 New [ref 4, sec 1]
     Icon Theme
       Specification         Stable                 New [ref 4, sec 1]
     Desktop Menu
       Specification         Stable                 New [ref 4, sec 1]
     Shared MIME Info
       Specification         Contracted External    New [ref 4, sec 1]
     /usr/bin/update-mime-database
                             Contracted External    Utility for updating MIME
                                                    database.  Refer to 4.14.

     Other Interfaces
     ----------------

     at-spi include/libspi/Accessibility.h interface
                             Contracted External    The auto-generated CORBA
                                                    bindings in at-spi are not
                                                    Stable.
     GNOME Desktop Libraries Contracted External    All non-Platform
                                                    library interfaces.
     GNOME Platform Libraries
     Missing API Docs        Contracted External    audiofile, esound, 
                                                    libart_lgpl, intltool
     GNOME Desktop Apps      Contracted External    All GNOME applications.
     pkg-config 0.16.0       Contracted External    (LSARC 2002/747)

     The following GNOME Desktop applications are listed to reference their
     previous ARC case
     -----------------

     GAIM 1.5.0              Contracted External    (LSARC 2005/489)
     gnome-pilot 2.0.13      Contracted External    (LSARC 2005/414)
     gnome-panel 2.12.2      Contracted External    (LSARC 2001/384)
     Evolution 2.4           Contracted External    See separate interface
                                                    table below.

     The following GNOME Desktop interfaces are Obsolete
     ---------------------------------------------------

     nautilus-media          Obsolete               Removed from GNOME in
                                                    the community codebase.
     ggv                     Obsolete               Replaced by evince in
                                                    the community codebase.
     gpdf                    Obsolete               Replaced by evince in
                                                    the community codebase.
     /usr/bin/ggv            Obsolete               Symlink to evince, or
                                                    appropriate viewer.  For
                                                    backwards compatibility
     /usr/bin/gpdf           Obsolete               Symlink to evince, or
                                                    appropriate viewer.  For
                                                    backwards compatibility

     Evolution Interfaces Exported

     Interface Name         Classification          Comment
     ---------------------- ----------------------- -------------------------
     Evolution GUI          Contracted External     LSARC/2003/298
     Evolution CLI          Contracted External     LSARC/2003/298
     Evolution Data Server  Project Private         Evolution backend process 
                                                    for managing contacts and 
                                                    calendars.
     Exchange Connector     Project Private         Evolution exchange 
                                                    connector for communicating
                                                    with MS Exchange servers.
     Sun ONE Connector      Project Private         Evolution Sun One
                                                    Connector.
     Evolution alarm        Project Private         Evolution Alarm Daemon.
     notify                                         A Program for giving users
                                                    alarms according to 
                                                    Evolution calendar. 
                                                    Evolution alarm notify 
                                                    will stay alive after the 
                                                    termination of Evolution 
                                                    main process.
     Evolution-address      Project Private         Evolution addressbook 
     book-export                                    export tool
     Ximian-connector-setup Contracted External     A traditional tool for 
                                                    setting up Exchange
                                                    accounts
     gconf keys             Contracted External     LSARC/2003/298.  How
                                                    Evolution stores its
                                                    configurations.
     Camel Messaging        Project Private         LSARC/2003/298.  The
                                                    foundation Library of the
                                                    mail component.  Loosely 
                                                    based on the design of
                                                    Sun's JavaMail? API.  It
                                                    provides an abstraction
                                                    layer through which mail
                                                    messages are accessed.
     Shell                  Contracted External     LSARC/2003/298, A container
                                                    component to manage various 
                                                    components of Evolution.
     Mailer                 Contracted External     LSARC/2003/298, A full 
                                                    feature e-mail client. To 
                                                    view mail messages in 
                                                    various style.  Provide 
                                                    filter and vfolder,
                                                    encryption.  Embedded html
                                                    mail composer.
     Addressbook            Contracted External     LSARC/2003/298.  The
                                                    addressbook backend (PAS)
                                                    in the Wombat includes
                                                    support for both LDAP 
                                                    servers and local contact
                                                    databases.
     Calendar               Contracted External     LSARC/2003/298.  Allows the 
                                                    user to manage his to-do 
                                                    lists and appointments on 
                                                    calendar servers or locally
     Importing tools        Contracted External     LSARC/2003/298.  To
                                                    facilitate migration from
                                                    other applications.
     LDAP schemas           Project Private         LDAP Contact configurations 
                                                    and attributes.
     PALM Sync conduit      Contracted External     GNOME-pilot conduit
                                                    definitions, files for
                                                    syncing data between
                                                    Evolution and Palm Devices
     PALM Sync conduit      Contracted External     Exported APIs for
                                                    GNOME-pilot, libraries
                                                    for syncing data between
                                                    Evolution and Palm Devices
     Package Names          Stable                  LSARC/2003/298. Package
                                                    names for Evolution.
     Key installed files    Contracted External     LSARC/2003/298.  All the
                                                    files installed and created
                                                    by Evolution
     Key Navigation map     Contracted External     Keyboard shortcuts for
                                                    Evolution
     libsoup                Project Private         LSARC/2003/298.  An HTTP
                                                    library implementation in C
     libgtkhtml             Project Private         LSARC/2003/298.  A light-
                                                    weight HTML rendering,
                                                    printing, and editing
                                                    engine
     gnuTLS                 Project Private         LSARC/2003/298.  A library
                                                    which provides a secure
                                                    layer, over a reliable
                                                    transport layer.  Currently
                                                    the gnuTLS library
                                                    implements the proposed
                                                    standards by the IETF's TLS
                                                    working group
     aspell                 Project Private         LSARC/2003/298.  GNU spell
                                                    checker
     aspell-en              Project Private         LSARC/2003/298.  The
                                                    dictionary for GNU aspell

     Interfaces Imported

     Interface Name         Classification          Comment
     ---------------------- ----------------------- -------------------------
     libxml2 Codebase       Standard                PSARC 2001/175 libxml.
                                                    Used by many dependencies.
                                                    Bug filed with ON to update
                                                    to newer version.
     libxml2 directory
     layout                 Evolving                PSARC 2001/175 libxml.
     libxslt                Evolving                PSARC 2002/244 Using XSLT
                                                    and libxslt in Solaris.
                                                    Used by many dependencies.
                                                    Bug filed with ON to update
                                                    to newer version.
     FreeType               Contracted External     LSARC 2002/291 FreeType.
                                                    Used by GTK+.  [6]
     Solaris Printing       Contracted External/
                            Stable                  LSARC 2002/447 GNOME 2.6
                                                    postscript viewer.  Used by
                                                    GNOME's postscript viewer
                                                    (ggv).  ggv is replaced by
                                                    evince in this release, so
                                                    this dependency no longer
                                                    exists.  [7]
     mediaLib               Stable                  LSARC 2002/669 GNOME 2.x
                                                    use of mediaLib.  Used by
                                                    GTK+.
     libtiff, libjpeg,
     and libpng API         Evolving                LSARC 2003/085 libtiff,
                                                    libjpeg, and libpng.  Used
                                                    by many dependencies,
                                                    including gtk-pixbuf and
                                                    GIMP. Bug filed with ON to
                                                    update to newer version.
     libtiff, libjpeg,
     and libpng file
     locations              Stable                  LSARC 2003/085 libtiff,
                                                    libjpeg, and libpng.
     Xscreensaver           Contracted External     LSARC 2001/121 Xscreensaver
                                                    Used by gnome-session.
     Perl Script Interface  Evolving                PSARC 1999/192 Including
                                                    Perl 5 with Solaris and
                                                    PSARC 2003/661 Update Perl
                                                    to version 5.8.x.  Various
                                                    GNOME scripts such as
                                                    bonobo-slay use Perl.
     X11R6                  Standard            
                                                    PSARC 1998/299 X11R6.  Used
                                                    by many GNOME modules
     Standard X11   
     Xorg Interfaces        Contracted External     PSARC 2004/187 Xorg Server
                                                    For Solaris.  GNOME depends
                                                    on the Xserver.  Standard
                                                    X11 interfaces are
                                                    Contracted External.
     Solaris Audit          Contracted Project
                            Private                 PSARC 2003/397 Contracted
                                                    audit interfaces for open
                                                    source.  Used by GDM.  [8]
     libdevinfo             Contracted              PSARC 2003/612 Interface
                            Consolidation Private   for enforcing
                                                    etc/logindevperm.  Used by
                                                    GDM.  [9]
     X core, Xvfb, XKB      Standard                PSARC 1998/299 X11R6.4:
                                                    Update/upgrade of X Server.
                                                    Xvfb is used by a11y
                                                    (gnome-mag).  XKB used by
                                                    accessibility (libxklavier,
                                                    gnome-keyboard-preferences,
                                                    GOK).
     fontconfig             Contracted External     LSARC 2003/273 fontconfig
                                                    library.   Fontconfig is
                                                    used by GTK+ and pango.
                                                    Bug filed with Xserver
                                                    team to update to newer
                                                    version.
     Xft2                   Contracted External     LSARC 2003/274 Xft2 library
                                                    Xft2 is used by GTK+ and
                                                    pango.  Bug filed with
                                                    Xserver team to update to
                                                    newer version.
     XEvIE X server
     Extension              Contracted External     LSARC 2002/312 XEvIE.
                                                    XEvIE is used by
                                                    accessibility (GOK).
     XFixes And X
     Notification of Screen
     and Cursor Changes
     (aka Damage Extension) Contracted External     LSARC 2003/506 X
                                                    Notification of Screen and
                                                    Cursor Changes aka Damage
                                                    Extension.   XFixes and
                                                    Damage is used by
                                                    accessibility (gnome-mag).
     XFixes X server
     Extension              Contracted External     PSARC 2004/318 XFixes
                                                    Xserver Extension.  XFixes
                                                    is used by accessibility
                                                    (gnome-mag).
     XInput X server
     Extension              Standard                PSARC 1992/172 XInput
                                                    Extension.  XInput is used
                                                    by accessibility (GOK,
                                                    Gnopernicus and GDM).
     XKB private headers    Contracted External     LSARC 2004/576 libxkbfile
                                                    update for GNOME 2.6.  Used
                                                    by libxklavier.
     Xrender                Contracted External     LSARC 2001/125 Xserver
                                                    Render Extension and LSARC
                                                    2004/414 X Render Extension
                                                    0.8.  Xrender is used by 
                                                    GTK+.
     Xrnr                   Stable                  PSARC 2004/187 Xorg Server
                                                    For Solaris.  Xrnr is used
                                                    by Nautilus and set desktop
                                                    preferences for changing
                                                    screen resolution).
     gtar                   Contracted External     In /usr/sfw consolidation.
                                                    Used by file-roller since
                                                    GNOME 2.6.
     libexpat               Contracted External     In /usr/sfw consolidation.
                                                    Used by python,
                                                    perl-xml-parser, dasher,
                                                    D-BUS, and musicbrainz.

     libusb                 Contracted External     PSARC 2003/721 libusb.
                                                    Used by Evolution.  [10]
     Xvideo                 Contracted External     PSARC 2004/187 Xorg Server
                                                    For Solaris.  Xvideo is
                                                    used by the xvimagesink
                                                    GStreamer plugin. 
     Firefox NSS            Contracted External     LSARC/2004/840, 
                                                    LSARC/2003/298.   A set of
                                                    libraries designed to
                                                    support cross-platform
                                                    development of security-
                                                    enabled server applications
     Firefox NSPR           Contracted External     LSARC/2004/840, 
                                                    LSARC/2003/298.  NSPR
                                                    provides a platform-neutral
                                                    API for system level and
                                                    libc like functions.
     Sun Kerberos           Contracted External     PSARC/2006/027.  Sun's 
                                                    implementation of kerberos
                                                    libraries.  Contract
                                                    pending.
     Sun LDAP               Evolving                PSARC/2000/362,
                                                    PSARC/2000/363,
                                                    LSARC/2003/298.  Sun's
                                                    implementation of the
                                                    Lightweight Directory
                                                    Access Protocol.
     ldapssl_install_routines
     ldapssl_client_init    Contracted
                            Consolidation Private   PSARC/2000/362, Contract
                                                    pending.
     Samba                  External                PSARC/2000/488.  Used by
                                                    gnome-vfs.

     Please note that Firefox NSS, NSPR, Sun Kerberos and Sun LDAP are imported 
     by Evolution.

  4. Opinion

     This project is a positive step in the evolution of GNOME at Sun, and
     shows that Sun is taking a more proactive role in working with internal
     process and the external GNOME community.  Sun has long promoted open
     development and this is demonstrated by Sun's commitment towards the GNOME
     product.

     It is necessary for the minimal set of GNOME interfaces required for
     integrating an application into the desktop to be considered Stable.  Many
     existing applications that integrate with the GNOME desktop (GIMP, Adobe
     Acrobat, Real Player, Thunderbird, Firefox, etc.) depend only upon the
     Stable interfaces mentioned in this case, which is a reasonable indication
     that this case does meet this minimal requirement.

     Of second importance is ensuring the stability of interfaces used
     internally within Sun by other projects.  In other words, our internal
     usage is a good indication for general usage.  If we depend on interfaces
     internally we should consider working to make them Stable externally.
     Beyond these interfaces, their stability should be "market driven".  For
     example, a customer requesting an interface be made Stable would be an
     appropriate time to expand the list of Stable GNOME interfaces.

     The committee recognizes that the GNOME community has a mature process for
     keeping its core interfaces stable, as documented at the GNOME Release
     Planning website [13].  The committee is pleased to see that the GNOME
     community continues to take additional steps to improve interface
     stability, such as by adding ABI requirements that any new API must be
     properly documented.

     However, the committee feels that Sun could do more to create an
     atmosphere where common goals are better established and shared with
     external partners.  For example, Sun would likely find external partners
     more willing to prioritize Sun's interests in supporting highly scaled
     desktop environments if Sun were more effective at contributing our work
     back to those external communities.  Documentation and localization work
     are examples.

     Furthermore, Sun should do more to evangelize OpenSolaris as a development
     platform with its rich set of integrated and open development, debugging,
     probing, and analysis tools.
  
  4.1 GNOME Interface Stability/GNOME Platform

     For Sun to have a healthy relationship with an external software
     community, it is necessary to establish a relationship based on trust.
     For Sun to be able to tell its customers what interfaces are appropriate
     for use, the external community must clearly communicate how its
     interfaces should be used.  Sun wants external software providers to
     describe the stability level of their interfaces so that Sun can inform
     its customers what interfaces can be considered stable.  The Sun project
     team is expected to work with the external community to establish and
     document interface stability and recommended usage.  The more that
     interface stability claims can "pass through" the better, but this does
     suggest a "blind pass through".  The project team must demonstrate to
     ARC that these external stability claims are, in fact, meaninful.

     Therefore, this is an ongoing task and at each ARC review the project team
     must explain how the external community process is evolving, detail any
     interface stability issues discussed in external community forums, and
     explain how Sun is playing an active role in the process.

     The three FreeDesktop specifications listed in the Exported Interface
     table are required in order to integrate an application with the
     desktop.  Although they are unlikely to change, the FreeDesktop
     community does not make a clear stability claim about them [17] [20].
     The Icon Theme and Desktop Menu Integration interfaces must be considered
     Stable by Sun, since these are required for minimal integration with the
     desktop.  The project team must work with the GNOME community to ensure
     these are treated as Stable interfaces with appropriate backwards
     compatibility if they change.

     This project shows proper GNOME community references that indicate GNOME
     Platform library interfaces follow interface stability guidelines
     consistent with the "Stable" taxonomy used by Sun.  GNOME Platform
     interfaces have a stability guarantee from the GNOME community.  The GNOME
     release team is the body which determines the official GNOME Platform.
     However, not all GNOME Platform libraries should be marked as "Stable".
     Libraries such as libgnome and libgnomeui should not be marked as Stable
     because these libraries are used as "holding areas" for interfaces which
     eventually evolve into glib, GTK+, etc. and therefore seem intended to be
     used in a "Consolidation Private" fashion within the GNOME consolidation.
     Other Platform interfaces are not clearly intended for public use (those
     missing API documentation, for example).

     The GNOME Platform API/ABI policy does not clearly extend to non-library
     interfaces.  This includes FreeDesktop specifications [4] (and their
     implementation in Desktop modules), GConf file formats/schemas, gnome-vfs
     URI, etc.  It also is not clear if stability claims cover interfaces
     imported by the GNOME Platform, such as audio device and printer
     interfaces.

     The list of GNOME Platform interfaces [18] include:

     GNOME Platform Interfaces Sun Considers "Stable":

          atk
          glib
          gtk+
          pango
          at-spi (except include/libspi/Accessibility.h)

     GNOME Platform Interfaces Sun Considers "External and appropriate for
     Contracts":

          GConf
          ORBit2
          at-spi (the include/libspi/Accessibility.h interface)
          gail
          gnome-mime-data
          gnome-vfs
          gtk-doc
          libIDL
          libbonobo
          libbonoboui
          libglade
          libgnome
          libgnomecanvas
          libgnomeui
          libxml2
          libxslt

     GNOME Platform Interfaces missing API docs ("Private"):

          audiofile
          esound
          intltool
          libart_lgpl

     The project team is Advised to work with the GNOME and FreeDesktop
     communities to further stabilize interfaces which Sun considers Stable or
     sees a need to be Stable, but do not have a clear stability indication
     from the external community (e.g. FreeDesktop specifications).  The
     project team is strongly advised to mark the Shared MIME Info interface as
     Stable before Nevada ships.

     It is important for Sun to consider those non-Stable GNOME interfaces
     which are used internally by other Sun teams.  Examples include GConf
     (used by APOC) and pkg-config (used by Xorg, etc.).  The project team is
     Advised to consider how such interfaces should evolve to a more Stable
     classification.

     Likewise it is important for the project team to be involved with ensuring
     the GNOME Platform is Stable.  Reviewing ABI, proposing additional
     interfaces that should be considered for including in the Platform
     (perhaps pkg-config), being involved with Project Ridley [15] are
     examples.  Also working with the community to evolve the GNOME API/ABI
     rules so that they include a more full set of interfaces (such as
     non-library interfaces, configuration files, etc.) is desired.  The
     project team is Advised to work with the GNOME community to ensure
     community Platform stability is meaningful.
  
     A minor issue is that the pkg-config command interface is not used by some
     GNOME dependencies.  Some GNOME modules seem to ship their own *-config
     script rather than using the pkg-config standard.  The project team is
     Advised to work with the module maintainers to ensure that pkg-config is
     used more consistently.

  4.2 Accessibility

     Sun has invested a great deal of effort enhancing GNOME to support
     accessibility, yet the GNOME community seems divided about long-term
     support for Bonobo/ORBit2 interfaces exposed by at-spi. 

     The original idea behind Bonobo components is that people would write
     shared components to do common tasks (view images, preview soundfiles,
     etc.) that would be shared by multiple applications.  In GNOME 2.0 Bonobo
     components were used by Nautilus, Evolution, gnome-panel, and other
     applications.  Starting with GNOME 2.6 AT programs started using Bonobo
     components via the at-spi interfaces.

     Bonobo has had limited acceptance in the GNOME community, possibly due
     to maintenance complexity and the fact that many components were not 
     being shared across applications as intended.  Therefore, Bonobo started
     to fall out of favor and most GNOME applications have moved away from
     Bonobo or are in the process.  However Accessibility Technology (AT)
     applications using at-spi are one area in the GNOME stack where Bonobo
     continues to makes a sense and will continue to require Bonobo/ORBit2
     support.
     
     The committee recommends working with the GNOME community to ensure that
     Bonobo/ORBit2 interfaces have continued supported for at-spi usage.
     Another solution could be redesigning at-spi so the Bonobo/ORBit2
     interfaces are no longer directly exposed.

     The GNOME team has done great work documenting the complexity of GNOME
     Accessibility [24].  Developer documentation coverage for ATK and AT-SPI
     is now at 100%, and complete documentation for the AT-SPI IDL is available
     via HTML as well.  User documentation for accessibility is quite 
     complete, with the exception of Gnopernicus and ORCA manuals).  That said,
     API overview documentation and developer guides to implementing
     interfaces for custom widgets, but this is primarily due to the fact
     that these interfaces are easily ignored by developers and thus need
     extra promotion (compared to, say GTK+, for which there is much 
     supplemental unofficial documentation, tutorials, etc.).  Investing 
     resources to further improve accessibility documentation will help
     accelerate its standardization, use, and adoption.

     The committee Advises that the Solaris PAC/PMT fund such additional
     accessibility documentation efforts.

     There are a number of important gaps in accessibility including fast,
     competitive magnification; Sun Ray accessibility support; a lack of
     quality dictation software; and identified bugs.  Accessibility support
     also suffers on Sparc architecture since some accessibility features
     require the Xorg server which is not yet the default (such as the
     Composite extension which will be used in future magnification solutions,
     and the fact that XKB is not turned on by default in Xsun). Sun Ray is
     Sun's most significant desktop product and accessibility support is
     required by federal law, so Sun should be working harder to resolve these
     issues.

     The committee strongly recommends that identified gaps be resourced. 

#ifndef OPEN_SOURCE_COMMUNITY

  4.3 Documentation and Localization

     Documentation and localization are areas where Sun makes a significant
     investment to ensure that our documentation is high quality and 
     translated.  However, Sun has not been effective at sharing our
     documentation and localization work with the GNOME community.  Reasons
     include difficulty coordinating between the Solaris and GNOME release
     schedules, the fact that Sun maintains data in different formats (e.g.
     Solaris manpages are in SGML format while GNOME community uses NROFF),
     and it is seen as an extra expense to spend additional time working with
     the GNOME community.

     Any interface exposed by the GNOME community API docs (gtk-doc) should be
     given a section 3 manpage that highlights the library's interface table.
     It can be assumed that if a GNOME library has no API documentation that
     the interfaces can be considered "Private" (regardless of whether the
     library is in the GNOME Platform or not).

     Both Sun's localization and documentation teams give back our work to the
     community and make the GNOME community aware that they can merge our work
     into the GNOME codebase if they wish.  However, because the GNOME
     community is working several releases ahead of Sun, there has not been
     interest from the community in doing this work.

  4.4 Man Page Interfaces

     Interfaces exposed in man pages (ATTRIBUTES section) should be clearly
     marked in terms of their stability level.  Some GNOME man pages do not
     have proper values in the Attributes section, and these must be corrected
     so they match the values assigned in this case.  This issue is a TCR.

#endif /* OPEN_SOURCE_COMMUNITY */

  4.5 GNOME Platform Interface Documentation

     The committee notices that many GNOME Platform modules do not have
     up-to-date interface documentation available on the web.  The project team
     is Advised to drive resolution on this issue with the community.  This
     might mean that the PAC/PMT fund a project to facilitate interface
     documentation or simply the project team being proactive in documenting
     and filing bugs against various GNOME components.

     The committee and project team are concerned that these issues exist.  The
     committee Advises that the project team work with the GNOME community to
     resolve the issues listed at the live.gnome.org website [3].  

  4.6 GNOME Library Versioning

     Upon reviewing the discussion concerning library versioning (LT_VERSION
     recommendations) on the Release Team website, the opinion of the committee
     is that incrementing library version numbers does not add any interface
     stability value on Solaris and does not need to be encouraged.  Though
     it may be useful for other platforms with different linker capabilities.

     The GNOME Community Library Versioning Definition [14] states (reformatted
     for readability):

     ---

     For libraries, update the LT_VERSION string. There's usually a comment in
     configure.in that explains how this works. For instance:

     # Before making a release, the LT_VERSION string should be modified. 
     # The string is of the form C:R:A.
     # - If interfaces have been changed or added, but binary compatibility has
     #   been preserved, change to C+1:0:A+1
     # - If binary compatibility has been broken (eg removed or changed
     #   interfaces) change to C+1:0:0
     # - If the interface is the same as the previous version, change to
     #   C:R+1:A
     LIB_PANEL_APPLET_LT_VERSION=0:14:0
     AC_SUBST(LIB_PANEL_APPLET_LT_VERSION)

     ---

  4.7 GNOME Footprint Clutter

     The GNOME desktop could better manage its installation footprint.  GNOME,
     for example, seems to clutter the /usr/share directory.  It would be
     useful if the GNOME community had more clear guidelines to encourage GNOME
     maintainers to install files in a less cluttered fashion.  For example, by
     installing application specific files to /usr/share/gnome/application
     rather than /usr/share/application.  See advisory.

  4.8 libxklavier

     libxklavier uses private XKB configuration files [22] that are not safe to
     use, so if a user has a non-standard Xserver or if a user is remote logged
     into a computer running a different Xserver, keyboard switching will
     break.  However, many users who are use a supported Xserver obviously find
     the ability to switch keyboard layout very useful.

     "LSARC 2004/576 libxkbfile update for GNOME 2.6" discusses the fact that
     Sun is now exposing the X header files used by libxklavier, but this case
     does not highlight the fact that this interface is considered private and
     unsupported by X.org.  Nor does this case discuss the issues caused by
     using this interface discussed in this section.

     The project team is Advised to drive resolution on this issue with the
     community.  The Xorg team is currently working on a more Stable solution
     which the GNOME team should adopt when it becomes available.

     The project team is Advised to work with the Xorg Sun team and the
     external Xorg and GNOME communities to facilitate this work.

     The committee recommends that the Sun GNOME team facilitate the adoption
     of a more stable interface to support libxklavier functionality.

  4.9 Application Dependencies

     More effort could be taken to ensure that GNOME libraries that are not
     needed do not get pulled into memory.  So running pldd shows many more
     GNOME dependencies than elfdump, which just shows what an application links
     against.

     For example, when accessibility is enabled, libgail is loaded into memory
     for all running GTK+ based applications.   libgail contains the ATK
     implementation of gnome-canvas, so libgail pulls libgnomecanvas into
     memory.  Moving this ATK implementation directly into gnome-canvas would
     reduce the number of libraries needed when running with accessibility.

     The project team is Advised to further identify such issues and work
     towards minimizing the number of dependencies that are pulled into memory
     when running GNOME applications.

#ifndef OPEN_SOURCE_COMMUNITY

  4.10 CBE

     The GNOME Custom Build Environment (CBE) contains a number of GNU tools
     not found in Solaris that are needed for building the GNOME desktop.  It
     should be possible to build GNOME out-of-the-box with Solaris.  These 
     same tools are needed for building many Free/Open Source applications
     and Solaris should better support users who wish to build and use such
     applications.

     Sun should consider enhancing existing tools (make, m4, diff, flex, etc.)
     so it is not necessary to use the GNU versions of these tools to build
     GNOME and other Free/Open Software applications.  Sun should consider
     shipping GNU build tools such as autoconf, automake, libtool, and CVS that
     are commonly required for building most Free/Open Software applications.

     CBE Tools (according to [25]):

       Apache ant *
       GNU autoconf
       GNU automake
       GNU bison
       CVS
       GNU diffutils
       GNU fileutils
       GNU flex
       GNU gettext
       GNU libtool
       GNU m4
       GNU make
       pkgbuild
       rsync *

       *=optional

     Ideally, the GNOME CBE would eventually become simply the same as the
     existing Solaris Common Build Environment, with all needed tools contained
     in either the Solaris WOS or Studio compilers packages.

     The committee Advises the PAC/PMT to find a resolution to the problem of
     being unable to build the GNOME desktop (and other Free/Open Software
     applications) on Solaris without needing to install additional build
     tools, some of them needed to replace existing Solaris tools that lack
     needed functionality (make, m4, diff, flex, etc.).

  4.11 Solaris intltool

     This project must NOT integrate with a version of intltool that continues
     to be incompatible with Solaris.   Shipping software in /usr/bin in the
     Solaris WOS that cannot run on Solaris is simply inexcusably broken.  (See
     bugs 4812320 and 5042612.).

     Either GNU gettext options need to be integrated into Solaris 
     /usr/bin/xgettext (RFE 4826523), or GNU xgettext needs to be added to
     Solaris (e.g. /usr/sfw/), or make intltool work with Solaris xgettext.

     Also, the project team has to hack the configure script to use
     AM_GLIB_GNU_GETTEXT macro (which is unsupported by the external community)
     instead of the supported AM_GNU_GETTEXT macro (bug 6329710).

     The committee Requires that the PAC/PMT fund a project to have the
     intltool problem resolved.

#endif /* OPEN_SOURCE_COMMUNITY */

  4.12 GConf

     Solaris users complain that user preferences are not managed in a Stable
     fashion when switching between GNOME environments.  Examples include users
     who share the same $HOME directory across multiple versions of GNOME, or
     users who experience problems on upgrade.  Typically users must delete
     their $HOME/.gconf directory to get their preferences back to a usable
     state.

     It is likely more common for Solaris users to share $HOME directories
     across multiple machines, so this problem is likely of lesser importance
     to other GNOME distributions.   Likewise, it is more common for Sun to  
     skip GNOME minor releases.  So Linux users upgrading from
     2.0->2.2->2.4->etc. may experience less problems than Solaris users
     upgrading from 2.0->2.6->2.12+.

     Even though GConf is considered a GNOME Platform library, the GNOME
     community stability guarantee does not extend to the GConf file structure
     or the key/value pairs.  Resolving this problem would require identifying
     which GConf keys require stability and working with the GNOME community to
     mark these keys as Stable.  This would require a significant amount of
     work and community interaction to resolve.  This is also probably not
     necessary to resolve the underlying problems.

     Fixing backwards compatibility issues with GConf from a coding perspective
     is typically not much work.  The hard part is identifying issues when they
     are introduced in the codebase.  Therefore, the best approach to address
     this issue if more QA effort were invested to ensure that problems are
     identified, reported to the GNOME community, and corrected.  Also, more
     effort could be made to make sure that when Solaris users complain about
     such problems, the user's corrupted $HOME/.gconf settings are captured,
     the issue identified and corrected.

     One example of work done in the past to resolve such an issue is the 
     gnome-panel patch [21] applied to GNOME 2.6.  This patch was used to
     address a problem that was causing the panel to crash due to
     incompatibilities in the panel configuration between 2.0 and 2.6.  This
     patch causes the user to have separate panel configuration for the two
     GNOME versions.  Leaving this patch in place for future builds will
     ensure that panel preferences are not lost between GNOME 2.6 and future
     builds.
   
     The committee Advises that the PAC/PMT to fund QA testing efforts to
     identify GConf instability issues when sharing a $HOME directory across
     different versions of GNOME.

  4.13 Default Application Launching

     There exists a mechanism (Preferences->Preferred Applications) for users
     to specify their default Browser, Mail program, and Terminal Program.  Yet
     in the Applications menu, we have choices for "Evolution", "Firefox", etc.
     The menus should contain menu choices which will launch the appropriate
     program instead of listing the programs separately.  Perhaps a "Default
     Browser" choice in addition to, say, "Firefox".

     The project team is Advised to improve the menu choices so they work with
     the user's preferred choice.

  4.14 MIME Info Update Utilities

     Associated with the MIME Info Integration FreeDesktop specification is an
     "update" utility.  To get additions to be seen it is necessary  to run
     this utility.  For example, to add the "foo" mime type:

	cp foo.xml /usr/share/mime/packages/foo.xml
	update-mime-database /usr/share/mime

     To be useful, these commands need to be at the same commitment level
     (Stable) as the uncached formats.  Hence "update-desktop-database" and
     "gtk-update-icon-cache" need to be made stable as part of this case and
     "update-mime-database" need to promoted when the MIME interfaces are
     promoted.

  4.15 Evolution

     The Evolution project has resolved the following TCR's from the previous
     LSARC 2003/298 case:

     Section 6, item 2:    Evolution must no longer statically link against
                           private BerkeleyDB interfaces.
     Section 6, item 5:    S/MIME must be supported.
     Appendix A, issue 1:  All C++ libraries supplied by Evolution must be
                           compiled with the Sun CC compiler rather than g++ to
                           product ABI-conformant libraries.
     Appendix A, issue 2b: Evolution must use SunLDAP instead of OpenLDAP.
     Appendix A, issue 3:  Files in /usr/libexec need to be moved to /usr/lib.
     Appendix A, issue 4:  Do not ship archive libraries.

     However, the following tasks have not been completed:

     Appendix A, issue 2a: The project team must not use GnuTLS.  Instead they
                           must find the root cause of the problem that
                           originally required the use of GnuTLS, and resolve
                           it without using this additional security library.
     Appendix A, issue 5:  Libraries should be shipped with version numbers and
                           version tags.
     Appendix A, issue 6:  Make all the components of aspell which are
                           necessary for runtime, private and hidden from the
                           user, and not to ship any documentation.

     Also, the following usses (from section 6 of LSARC 2003/298) were given
     a one-time exception, but need to be resolved before Evolution can be
     updated.

     1. The committee allowed a one-time exception to the "Packaging rules
        for system extensions" policy in regards to statically linking to the
        BerkeleyDB package.  This must be corrected.
     2. S/MIME is a missing feature that must be added.
     
     It has been pointed out that other GNOME programs (GOK, for example)
     use aspell, so making a commitment to make these interfaces more Stable
     than "Consolidation Private" should be considered if these interfaces
     are intended for use beyond Evolution.

     It is disturbing that these issues were not resolved before shipping
     the last release of Evolution, and the project team is reminded to
     resolve TCR's before shipping, or acquire a waiver through the appeals
     process.  It is not acceptable to ship without following process.

#indef OPEN_SOURCE_COMMUNITY

  5. Minority Opinion(s)

     None. 

  6. Advisory Information

     Escalation to Solaris PAC/PMT
     -----------------------------

     The committee recommends that the SSG PAC fund the SSG project to port
     the SPARC graphics drivers to Xorg, and the Sun Ray PAC to fund the Sun
     Ray project to complete required Sun Ray work to support the extensions
     needed to support accessibility.  Refer to section 4.2.

     The committee strongly recommends that the Solaris PAC/PMT fund additional
     accessibility documentation efforts.  Refer to section 4.2.
     
     To resolve this problem and foster a better relationship between Sun and
     the GNOME community the committee Advises the PAC/PMT to fund Sun's
     documentation and localization teams to work more closely with the GNOME
     community by working against community CVS head so we leverage concurrent
     efforts by community members.  Refer to section 4.3

     Solaris quality and branding rules have encouraged Sun to maintain forked
     documentation and internationalization data, and attempting to merge our
     work with the GNOME community is seen as additional work.  The committee
     Advises the PAC/PMT to rethink our quality, glossary, and branding rules to
     see what creative solutions can be found to work better when working with
     external groups.  Refer to section 4.3.

     The committee recommends that the Solaris PAC/PMT fund integration of the
     GNOME CBE tools into Solaris.  Refer to section 4.10.

     The committee recommends that the Solaris PAC/PMT fund QA resources to 
     identify issues with GConf preferences failing to work across multiple
     versions of GNOME, and to fund engineering to fix issues discovered.
     Refer to section 4.12.

     Advice to Sun GNOME Project Team 
     --------------------------------

     The committee recomments that the Sun GNOME Team work more closely with
     the GNOME and FreeDesktop groups to stabilize interfaces which Sun
     considers Stable, but do not have a clear stability indication from the
     external community.  For example, the FreeDesktop specifications.  Refer
     to section 4.1.

     The committee recommends that the Sun GNOME team be more involved with
     ensuring high quality GNOME API documentation.  Refer to section 4.5.

     The committee recommends that the Sun GNOME team share the ARC
     perspective about library versioning being unnecessary with the GNOME
     community, since there seems to be debate regarding the usefulness of
     this practice.  Refer to section 4.6.

     The committee recommends that the Sun GNOME team work with the GNOME
     community to ensure better FHS compliance.  Refer to section 4.7.

  Appendices

          Appendix A: Technical Changes Required

            1. The project team is Advised to integrate Sun's man pages with the
               GNOME community codebase and work with the community to determine
               the best format for them (NROFF, SGML, or preferably docbook).
               Sun should ship the man pages in whatever format is used by the
               GNOME community, if possible, and avoid maintaining forked man
               pages.   Refer to section 4.4.

            2. The Sun GNOME team must work with the intltool team and put
               together a strategy for resolving the problems described in
               section 4.11.  If the team cannot resolve the problem in this
               way, the broken interfaces must be removed from the GNOME
               distribution.

            3. The Evolution project must address the TCR's described in 
               section 4.15 or go through the appeals process.

          Appendix B: Technical Changes Advised
 
             1. The committee recommends that libgail be re-engineered so that
                it does not require non-Stable library dependencies for 
                improved performance.  Refer to section 4.9.

             2. The committee recommends that the application menu choices work
                with the user's preferred settings.  Refer to section 4.13.

#endif /* OPEN_SOURCE_COMMUNITY */

          Appendix C: Reference Material

         1. http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2005/734/nevada-gnome-one-pager.txt
            Project 1 pager

         2. http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2005/734/inception.materials2/
            Inception Materials

         3. http://live.gnome.org/InterfaceSpecification/Issues
            GNOME Interface Issues

         4. GNOME-Nevada-Interfaces.txt
            GNOME Interface Table

         5. http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2003/298/opinion.txt
            LSARC 2003/298 Evolution Opinion

         6.  http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2001/384/commit.materials/contract-01
             FreeType Contract
         7.  http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2002/447/contract-2002-447-01.txt
             Solaris Printing Contract
         8.  http://sac.sfbay.sun.com/Archives/CaseLog/arc/PSARC/2003/397/contract.gdm
             Solaris Audit Contract
         9.  http://sac.sfbay.sun.com/Archives/CaseLog/arc/PSARC/2003/612/contract-01
             libdevinfo Contract
         10. http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2005/414/contracts/contract-721-01
             libusb Contract

         11. http://sac.sfbay.sun.com/Archives/CaseLog/arc/LSARC/2005/734/commit.materials/wiki/gnome.ireland/gnome/ARC/gdm/2.8/gdm.html
             GDM Documentation

         12. http://opensolaris.org/os/community/onnv/os_dev_process/
             OpenSolaris ARC Process Documentation

         13. http://live.gnome.org/ReleasePlanning
             GNOME Release Planning Website

         14. http://live.gnome.org/MaintainersCorner_2fReleasing
             The GNOME Community Library Versioning Definition
 
         15. http://live.gnome.org/ProjectRidley
             GNOME Project Ridley website

         16. http://www.pathname.com/fhs/
             FHS website

         17. http://www.freedesktop.org/wiki/Standards
             FreeDesktop Standards Website

         18. ftp://ftp.gnome.org/pub/GNOME/platform/
             GNOME Platform Libraries

         19. http://www.gnome.org/start/2.8/
             http://www.gnome.org/start/2.10/
             http://www.gnome.org/start/2.12/
             GNOME Release Notes

         20. http://www.freedesktop.org/wiki/Portland
             FreeDesktop Portland project.

         21. http://cvs.opensolaris.org/source/xref/jds/patches/gnome-panel-06-concurrent-login.diff
             GNOME Panel Concurrent Login patch

         22. http://bugzilla.gnome.org/show_bug.cgi?id=152105
             libxklavier usage of private Xorg interfaces

         23. http://bugzilla.gnome.org/show_bug.cgi?id=301364 
             Bug regarding making intltool work with Solaris xgettext

         24. http://gnome.org/learn/access-guide/2.10/
             Accessibility Guide

         25. http://www.opensolaris.org/os/community/desktop/communities/jds/building/
             Building JDS on OpenSolaris
GNOME 2.14 - Vermillion, Functional Specification

1 Project Description

    This project continues on the work of LSARC 2005/734 to provide 
    a newer version of GNOME, as part of the Java Desktop System,
    targeted for Nevada.  More formally, this project will integrate
    GNOME 2.14 along with some other components that aren't 
    currently part of the official community release.

    GNOME is essentially comprised of 2 sets of components

      - The GNOME Desktop, a collection of utilities and applications
        that a user needs for every day work. Some internal 'desktop
        private' libraries are included here.

      - The GNOME Developer Platform, a set of libraries that 
        developers can use to write applications that integrate 
        well into the desktop.  All GNOME Stable library interfaces
        fall into these components.

    1.1 Definition

    This case will build on from previous cases, in that it will
    only outline the differences between GNOME 2.12, as detailed 
    in LSARC 2005/734 and GNOME 2.14.

    Those differences can be loosely summarized as follows:

      - Continuing focus on user experience and consistency
        throughout the desktop
      - Significant performance improvements to several
        important components eg. Terminal
      - Search framework in File Manager and Help Browser
      - Improved Window Management
      - Improved configuration support in Login Manager
      - New applications eg. Deskbar Applet, Fast User
        Switching, Sound Juicer
      - Shared calendaring in Evolution over CalDAV
      - Significant improvements to the multimedia framework,
        GStreamer in terms of stability, performance and
	integration of 3rd party plugins, and introduction of
        new media applications.
      - Continuing evolution of the GTK+ widget library and
        dependencies
    
    1.2 Motivation, Goals, and Requirements

    GNOME meets the desktop needs of Sun customers who have invested in
    the Solaris OS, and prefer the stability and maturity of that platform.
    Moreover, the GNOME desktop provides an alternative for customers
    migrating away from Microsoft, or a comparable offering to those
    migrating away from Linux.

    The following requirements from section 14 of the Solaris Nevada
    Product Requirements Document are relevant to this particular
    ARC case -

        o Up-to-date support of community components (GNOME, browser,
          email, GAIM, etc...)
        o Up-to-date productivity and entertainment application support
        o Accessibility features (minimally to meet 508)
        o Enhanced printing management (print utility)
        o Remote Desktop Administration (help desk)
        o Enhanced/complete localization of desktop components for all
          geographic target markets

    As a modern productivity, collaboration, and tools environment, the
    Solaris OS desktop in Nevada needs to deliver a media rich and highly
    personalizable, yet simple and uncluttered user experience.  The Nevada
    desktop needs to support all leading media formats (documents, voice,
    multimedia, etc.). It also needs to deliver a set of core - but well
    integrated - desktop applications.
    Specifically, it needs to offer one standard browser, email client and
    Instant Messaging client (as opposed to several clients) that the
    mainstream desktop market shows to favor.

    Furthermore, with appropriate increases in Stablility and quality,
    the GNOME desktop will become an operationally complete replacement
    for CDE, allowing that product to be completely EOL/EOF.  This
    should result in a significant cost reduction to Sun.

    1.3 Changes From the Previous Release

    This is a minor change to the GNOME desktop that addresses concerns raised
    in "LSARC 2005/734 GNOME For Nevada", adds new desktop functionality as
    described above, or detailed externally in the GNOME 2.14 release notes [6], 
    adds some new components (notably in better support of media), and fixes bugs.  
    This case adds some new interfaces to Stable libraries and new External 
    applications and libraries as detailed in the Interface Table.

    1.4 Program Plan Overview

      1.4.1 Development

      Community development is very much at the core of the GNOME Desktop, 
      and consequently the Java Desktop System, JDS. The project team values
      this, and chooses to work 'with' rather than 'against' where possible
      on an open development model.
 
      Furthermore, with the relatively recent birth of the OpenSolaris project,
      the project team also works under the OpenSolaris Desktop Community, 
      with a public development environment. The project sees the importance 
      of an open development strategy in the hope to leverage key allies and
      communication among the different product groups in Solaris. 
 
      1.4.2 Quality Assurance/Testing

      The project team will continue to uphold high standards in QA, creating 
      test assertions for new functionality, along with regression testing 
      with existing components. Frequent builds will be available under the 
      OpenSolaris project, and the project team will encourage feedback. 

      1.4.3 Documentation

      Documentation will be leveraged from the community where possible. If
      missing, the project team will be provide the necessary documentation
      in conjunction with existing documentation teams within Sun.

      Furthermore, the project team will promote the use of high standards
      within the community, and ensure that missing documentation will go
      back to the community.

      1.4.4 Release Cycle

      The project team aims to integrate this project as close to build
      40 or 41 of Solaris Nevada. Once integrated, the project will follow
      existing Nevada release schedules.

      1.4.5 Technical Support

      Technical support will be provided by existing support channels.

      1.4.6 Training

      Training will be provided as per existing Solaris requirements.

    1.5 Related Projects

      1.5.1 Dependencies on Other Sun Projects
 
            LSARC 2004/109 Trusted Solaris X Server Extension
            LSARC 2005/280 Trusted Solaris Gnome
            PSARC 2005/399 Tamarack: Removable Media Enhancements in Solaris

            Refer to LSARC 2005/734 GNOME For Nevada Imported Interface
            table for additional dependencies.

      1.5.2 Dependencies on Non-Sun Projects

            FreeDesktop (http://www.freedesktop.org/)
            GNOME Project (http://www.gnome.org/)
            XOrg Project (http//www.x.org/)

      1.5.3 Sun Projects Depending on this Project

            PSARC 2000/487 Solaris-Linux API Compatibility (contract in
                           PSARC 2001/804 Glib becomes Contracted External)
            LSARC 2003/273 fontconfig library (contract in LSARC 2003/273)
            LSARC 2003/274 Xft2 library (contract in LSARC 2003/274)
            LSARC 2004/707 SWUP Bootstrap (contract in LSARC 2004/707)
            LSARC 2004/840 Firefox for JDS4
            LSARC 2005/221 APOC2.0 (contract in LSARC 2003/217 APOC)
            LSARC 2005/504 Orca Screen Reader/Magnifier
            LSARC 2005/506 Orca Support Libraries
            LSARC 2005/701 Realplayer plugin and reader integration into Solaris
            FIXME: Thunderbird?

      1.5.4 Projects Rendered Obsolete by this Project

            LSARC 2005/345 GNOME Keyboard Layout Switcher EOF
            FIXME: ggv/gpdf?
            FIXME: nautilus-media?
            FIXME: jdshelp?
            FIXME: gnome-cd?

      1.5.5 Related Active Projects [Describe the relationship.]

            LSARC 2006/182 Ekiga: a videoconferencing and VOIP/IP-Telephony 
                           application

      1.5.6 Suggested Projects to Enhance this Program

            JDS team currently working with gettext team to resolve TCR's
            highlighted in LSARC 2005/734 GNOME For Nevada.

    1.6 Competitive Analysis

    Today's information worker relies on a disjointed set of office
    productivity, content, collaboration and portal tools. The future
    desktop will be much simpler, yet richer, than today's by incorporating
    contextual, role-based information from business systems, applications
    and processes. It will deliver:

            - Voice
            - Documents
            - Rich media
            - Process models
            - Business intelligence
            - Real-time analytics

    It will also foster just-in-time eLearning as well as real-time
    collaboration. Using a service-oriented architecture, the future desktop
    will be rich with presence awareness, information rights, and
    personalization. It will provide offline and online support to a plethora
    of devices. As this unfolds, information work will expand beyond
    traditional knowledge workers.  The future desktop will begin to emerge
    in two years and will evolve radically during the next five to eight
    years. It will include a wide range of new technologies and capabilities.
    Core elements of this new information workplace will be:

            - Enterprise information
            - Metadata
            - Integration services
            - Identity services
            - Content services
            - Collaboration services

    Internal and external users will be able to access all enterprise
    information to which they have privileges using a variety of devices,
    not just laptops and PDAs. For that reason, privacy and security will
    be key concerns.

    It is essential that Solaris OE ships with an updated desktop, both in
    terms of providing support and the technical merits of a newer desktop.

2 Technical Description

    2.1 Architecture

    This project is a new iteration of the GNOME Desktop and Developer
    Platform. It continues development of existing technology, on an
    existing architecture of a layered X11 application environment -
 
           +---------------------------------------+
           |             GNOME Desktop             |
           +---------------------------------------+
           |      Additional Desktop Libraries     |
           +---------------------------------------+
           |                GTK+                   |
           +-------------------------+-------------+
           |          Pango          |    GDK      |
           +-----------+-------------+-------------+
           |   Cairo   |           Glib            |
           +-----------+---------------------------+
           |                X11                    |
           +---------------------------------------+

    The GNOME Desktop contains a rich set of utilities and applications
    that a user needs for every day work, which get launched from a
    comfortable user windowing environment including session manager and
    panel.

    GNOME 2.14 continues its evolution of the GNOME Platform, a set of
    libraries that developers can use to write applications that integrate
    well into the desktop. The project team continually evaluates these
    interfaces separate to the community and classify them accordingly 
    to our confidence in their evolution and stability.

    2.2 Interfaces

      2.2.1 Exported Interfaces

      Interfaces Exported

                                       Proposed        Specified in
                                       Stability       What Document?
      Interface Name                   Classification  Comments.
      ==========================================================================

      Detail on FreeDesktop Specs defined in LSARC 2005/734
      -----------------------------------------------------

      /usr/share/applications          Stable          System integration point from
                                                       Desktop FreeDesktop spec.
      $HOME/.local/share/applications  Stable          User integration point from
                                                       Desktop FreeDesktop spec.
      /usr/share/gnome/applications    Obsolete        Obsolete Sun-specific location
                                                       for desktop files supported
                                                       on Sun for GNOME 2.0 backwards
                                                       compatibility.
      /usr/share/icons                 Stable          Icon Integration FreeDesktop
                                                       spec.
      /usr/share/mime/packages         External        Need to make MIME FreeDesktop
                                                       spec Stable before Nevada
                                                       ships.

      ATK
      ---
 
      atk_component_get_alpha           Stable         New ATK functions.
      atk_document_get_attribute_value  Stable
      atk_document_get_attributes       Stable
      atk_document_get_locale           Stable
      atk_document_set_attribute_value  Stable 
      atk_image_get_image_locale        Stable
      atk_object_get_attributes         Stable

      at-spi
      ------

      AccessibleComponent_getAlpha      Stable         New libcspi (at-spi)
                                                       functions.  
      AccessibleEvent_getSourceApplication
                                        Stable
      AccessibleEvent_getSourceDetails  Stable
      AccessibleEvent_getSourceName     Stable
      AccessibleEvent_getSourceRole     Stable
      AccessibleImage_getImageLocale    Stable
      Accessible_getAttributes          Stable
      Accessible_getHostApplication     Stable

      pango
      -----

      pango_matrix_get_font_scale_factor
                                        Stable         New pango functions
                                                       specified in gtk-docs

      gobject
      -------

      g_object_force_floating           Stable         New gobject functions
                                                       specified in gtk-docs
      g_object_is_floating              Stable
      g_object_ref_sink                 Stable
      g_param_spec_gtype                Stable
      g_param_spec_ref_sink             Stable
      g_hash_table_get_type             Stable
 
      g_gtype_get_type                  Stable         New get_type functions
                                                       These are normally not 
                                                       documented in gtk-docs.
      g_initially_unowned_get_type      Stable
      g_value_get_gtype                 Stable
      g_value_set_gtype                 Stable

      g_object_compat_control           Consolidation  This is "hidden" but
                                        Private        since this attribute is
                                                       not supported, Forte
                                                       exports this symbol.

      glib
      ----

      g_async_queue_push_sorted         Stable         New glib functions
                                                       specified in gtk-docs
      g_async_queue_push_sorted_unlocked
                                        Stable
      g_async_queue_sort                Stable
      g_async_queue_sort_unlocked       Stable
      g_atomic_int_set                  Stable
      g_atomic_pointer_set              Stable
      g_date_set_time_t                 Stable
      g_date_set_time_val               Stable
      g_hash_table_ref                  Stable
      g_hash_table_unref                Stable
      g_intern_static_string            Stable
      g_intern_string                   Stable
      g_list_insert_sorted_with_data    Stable
      g_main_context_is_owner           Stable
      g_slice_alloc                     Stable
      g_slice_alloc0                    Stable
      g_slice_free1                     Stable
      g_slice_free_chain_with_offset    Stable
      g_slist_insert_sorted_with_data   Stable
      g_thread_foreach                  Stable
      g_thread_pool_get_max_idle_time   Stable
      g_thread_pool_set_max_idle_time   Stable
      g_thread_pool_set_sort_function   Stable
 
      g_slice_get_config                Stable
      g_slice_get_config_state          Stable
      g_slice_set_config                Stable
 
      GDM Configuration
      -----------------

      debug/Gestures                    Stable                
      daemon/GdmXserverTimeout          Stable         New GDM Configuration
                                                       allowing users to specify
                                                       how long GDM should wait
                                                       for the Xserver to start.
                                                       Default is 10 seconds.
      greeter/PreFetchProgram           Stable         New GDM Configuration
                                                       to support preloading
                                                       session libraries for
                                                       better performance
      /usr/lib/gdmprefetch              External       Program launched by
                                                       greeter/PreFetchProgram
      /etc/X11/gdm/gdmprefetchlist      External       List of libraries to
                                                       prefetch.
 
      Package Names
      -------------

      SUNWlibcdio                       Stable         Package name for libcdio
      SUNWgst-fluendo-mp3               Stable         Package name for MPEG-1
                                                       level 3 (MPG audio)
                                                       GStreamer plugin.
      SUNWapoc-adapter-gconf            Stable         New package name : FIXME
      SUNWgnome-internet-applets-devel  Stable         New package name
      SUNWgnome-pilot                   Stable         New package name FIXME.
      SUNWgnome-pilot-devel             Stable         New package name FIXME.
      SUNWgnome-pilot-devel-share       Stable         New package name FIXME.
      SUNWgnome-pilot-root              Stable         New package name FIXME.
      SUNWgnome-pilot-share             Stable         New package name FIXME.
      SUNWgnome-python-desktop          Stable         New package name
      SUNWgnome-python-desktop-devel    Stable         New package name
      SUNWgnupg                         Stable         New package name
  
      File Locations
      --------------

      /usr/share/gdm/defaults.conf      External       GDM default configuration
      /etc/X11/gdm/custom.conf          External       GDM custom configuration
      /etc/X11/gdm/gdm.conf             Obsolete       Old GDM configuration,
                                                       supported as custom.conf
                                                       file if on system for
                                                       backwards compatibility.
      /usr/lib/libnautilus-burn.so      External       Library for CD burning. FIXME.
      /usr/bin/sound-juicer             External       New media player
      /usr/bin/rhythmbox                External       New media player    
      /usr/lib/pkgconfig/rhythmbox.pc   External       New pkgconfig file.
      /usr/bin/gnome-cd                 Obsolete       No longer shipping 
                                                       gnome-media CD player.
                                                       Now shipping symlink to
                                                       sound-juicer for
                                                       backwards compatibility.
      /usr/lib/gstreamer-0.10/libgstflump3.dec.so
                                        External       New MP3 plugin for 
                                                       GStreamer to support
                                                       MPEG1 level 3 (MP3 audio)
                                                       decoding.
       /usr/lib/gstreamer-0.10/libgstcdio.so
                                        External       New cdio paranoia plug
                                                       for GStreamer to support
                                                       CD ripping.
 
      /usr/bin/cd-drive                 External       New libcdio interface
      /usr/bin/cd-info                  External       New libcdio interface
      /usr/bin/cd-paranoia              External       New libcdio interface
      /usr/bin/cd-read                  External       New libcdio interface
      /usr/bin/iso-info                 External       New libcdio interface
      /usr/bin/iso-read                 External       New libcdio interface
      /usr/lib/libcdio.so               External       New libcdio interface
      /usr/lib/libiso9660.so            External       New libcdio interface
      /usr/lib/libudf.so                External       New libcdio interface
      /usr/include/cdio/*.h             External       New libcdio interface
      /usr/lib/pkgconfig/libcdio.pc     External       New pkgconfig file
      /usr/lib/pkgconfig/libcdio_cdda.pc
                                        External       New pkgconfig file
      /usr/lib/pkgconfig/libcdio_paranoia.pc
                                        External       New pkgconfig file
      /usr/lib/pkgconfig/libiso9660.pc  External       New pkgconfig file
 
 
      2.2.2 Imported Interfaces

      FIXME.

    2.3 User Interface

    GNOME 2.14 continues on its focus of user experience and usability.
    While there have been made significant changes both in terms of 
    functionality and other user-oriented features, the core user interface
    remains the same as previous cases.

    2.4 Compatibility and Interoperability

      2.4.1 Standards Conformance

      This project will continue standards conformance as detailed in 
      LSARC 2005/734 GNOME For Nevada.
  
      The Evolution mail, addressbook and calendar client now supports 
      CalDAV, a protocol allowing calendar access via WebDAV. CalDAV is
      part of the Network Working Group, Internet Engineering Task Force 
      (IETF).

      2.4.2 Operating System and Platform Compatibility

      This project is targetted for Solaris Nevada on x86 and SPARC platforms.
      While there has been discussion regarding providing this project in a
      Solaris Update release, there has been no formal decision to date.

      Support for Linux is not currently in the scope of this project, although
      The GNOME Desktop obviously runs well on that platform.

      2.4.3 Interoperability with Sun Projects/Products

      Due to the nature of this project, and its architecture, all existing
      Sun products should run seemlessly in this desktop environment. Exceptions
      to this rule may involve using legacy windowing interfaces.

      2.4.4 Interoperability with External Products

      All products that can interoperate with the X11 window system will run
      seemlessly in their desktop environment as above.

      2.4.5 Coexistence with Similar Functionality

      [Can other products with overlapping functionality be run on the same 
      machine, or will they clash (e.g. over resources such as specific port 
      numbers)? ]

      FIXME.

      2.4.6 Support for Multiple Concurrent Instances

      [Can more than one instance of this product be safely run on the same 
      machine? If yes, can they be different versions? ]

      FIXME.

      2.4.7 Compatibility with Earlier and Future Releases

      [See discussion in the Changes to Interfacessection of the Architectural 
      Considerations document[5], even if this is the first release. ]

      FIXME.

    2.5 Performance and Scalability

      FIXME - we need some metrics here. There's some nice bits in the GNOME
      release notes.

      2.5.1 Performance Goals
      2.5.2 Performance Measurement
      2.5.3 Scalability Limits and Potential Bottlenecks
      2.5.4 Static System Behavior

      [Resources required (footprint, disk space, large files, database, etc.)]

      2.5.5 Dynamic System Behavior

      [does the system wake up periodically? what is the expected working set? 
      how much of is is potentially shareable? Is it MT-safe (will it work 
      with multi-threaded clients)?

      See the Performance, Resource Consumption, and Scalability section of the 
      Architectural Considerations document[5] for more advice.] 

    2.6 Failure and Recovery

      2.6.1 Resource Exhaustion

      [What happens when resources (e.g. virtual memory, disk space) are 
      unavailable or exhausted?]

      2.6.2 Software Failures

      [What circumstances cause abnormal behavior? How are user interrupts 
      handled?] 

      2.6.3 Network Failures
      2.6.4 Data Integrity

      [Will data be lost if the program aborts or crashes?]

      2.6.5 State and Checkpointing
      2.6.6 Fault Detection
      2.6.7 Fault Recovery (or Cleanup after Failure)

    2.7 Security

    [What support does this product have for authentication? authorization 
    policies? privacy (e.g. encryption)? integrity? Are there any associated 
    export restrictions? Is sensitive data protected against snooping? 
    against unauthorized modification? Are the policies different for local 
    and on-the-wire data?

    See the Security Classifications section of the Architectural Considerations 
    document[5].]

    2.8 Software Engineering and Usability

      2.8.1 Namespace Management

      [The key goal is to avoid "namespace pollution". That is, consume as 
      little of the client namespace as possible, make sure names are unique, 
      and document what you're consuming. Pick a common prefix and use it 
      for public names and symbols. Reserve Solaris package names and Java 
      package names that are unique and comply with the appropriate conventions.

      A secondary goal is to avoid gratuitous creation of new namespaces. If 
      there is a public namespace, how is it administered?]

      2.8.2 Dependencies on non-Standard System Interfaces

      [Do Solaris components depend on kernel features not in the default 
      kernel (e.g. Berkeley compatibility package, /usr/ccs, /usr/ucblib, 
      optional loadable kernel modules)?

      Do Java components depend on Java classes that are non-standard or 
      not included in the JDK runtime?

      Projects using system (or other project) interfaces that are neither 
      Standard nor Stable (formerly Public) should explain to the ARC why 
      the risk of being broken by an incompatible change are sufficiently 
      low, and howthe risk will be managed.]

      2.8.3 Year 2000 Compliance

      [All SunSoft products FCS'd on or after May 1, 1997 must be compliant, 
      though the working definition is merely "still work in the year 2000". 
      (Those price-listed after Jan. 1, 1995, need a solution plan.) Advice: 
      save years in 4 digits, not just 2; interpret and sort 2-digit years 
      as indicating years from 1969 through 2068, if possible. For more 
      infomation, visit http://spg-quality.eng/y2000. For help evaluating 
      your software for Year 2000 compliance, or to volunteer to help define 
      guidelines, contact y2000 boutique eng ]

      2.8.4 Internationalization (I18N)

      [Sun products must comply with Internationalization levels 1-4. (The 
      levels are not truly hierarchical, but generally indicate increasing 
      difficulty.) 

      I18n Level	Meaning
      ======================================================================== 
       "Level 0" 	Are images trivially replaceable without source code? 
                        Cultural differences demand it.
       Level 1          "8-bit clean" to support ISO Latin-1 (European)
                        codesets. This includes data paths and messages.
       Level 2          Formatting (date, time, currency, numbers) are 
                        locale-sensitive.
       Level 3          User-visible text trivially translated in message
                        catalogs.  Localization (L10n) should be possible
                        without algorithmic source code.
       Level 4          Asian language support--via Extended Unix Coding (EUC)? 
                        Are data paths capable of handling wide Asian
                        characters? Code Set Independence (CSI) enabled?  (See
                        Solaris 2.6's attributes(5) manpage.)

      A replacement set of  requirements for Internationalization is under
      development.  For more information, see the Internationalization section
      of the Architectural Considerations document[5]. Questions may be asked
      of the "i18n-interest sun" alias.]

      2.8.5 64-bit Issues

      [How will it deal with issues in the 64-bit world, including 64-bit
      address spaces, 64-bit integers, and 64-bit files? Most Solaris projects
      should at least be 64-bit "clean." For C, you can use DevPro lint with
      -errchk=longptr64.]

      2.8.6 Porting to other Platforms

      [Is this anticipated? What would be involved?]

      2.8.7 Accessibility

      [Sun products must support Section 508 compliant accessibility for users
      with disabilities. What is your plan for compliance? See 
      http://solaris.eng/accessibility/index.html.] 

3 Release Information

Note: Some of the packaging and installation details may not be available at
design time. Describe expected solutions, and augment the description as the
details are decided.

FIXME.

    3.1 Product Packaging

    [Is this product bundled or unbundled? How is it released for each major 
    configuration/platform?

      3.1.1 Package Overview

      For each Solaris package or installation unit, give
          + its purpose
          + its name
          + its default installation root
          + whether it is required, recommended, or optional]

      3.1.2 (Default) Installation Locations
      
      [For each of the following categories, state the default installation
      directory name(s).
          + configuration files
          + libraries
          + temporary files
          + DLLs, VxDs for Windows
          + Java packages and zip or class files]

      3.1.3 Effect on External Environment

      [Are any of the above components shared with other projects? Is anything
      external to this project modified or circumvented?

      For SAC advice about packaging and installation locations, start at 
      http://sac.eng/sac/HTML/Considerations/#Packaging.

      ARCs should review "ABI application certification" results for all
      executables and libraries that run on Solaris. See http://abi.eng/ and 
      http://suntools.eng/tools/toolpages/appcert.html and/or 
      http://www.sun.com/developers/solbrand/app-cert.certify.html.] 

    3.2 Installation

      3.2.1 Installation procedure
      3.2.2 Effects on System Files

      [what is touched outside this project?]

      3.2.3 Boot-Time Requirements
      
      [rc start/kill scripts, dependencies, etc.]
      
      3.2.4 Licensing
      
      [Describe licensing scheme, if any. Default should be the approved DevPro
      licensing package, 1995/151; FlexLM is also a possibility.]

      3.2.5 Upgrade
      
      [Describe versioning scheme, and explain how version mismatches are
      handled (e.g. upgrades, backwards compatibility).]

      3.2.6 Software Removal
      3.3 System Administration

      [What is supported? GUI or command line? Configuration? Maintenance?
      Logging? Monitoring? Can administration be performed remotely?
      Backup/Restore capabilities? Is relocation supported?

      See the System Administration section of the Architectural Considerations
     document[5].] 

4 Component Name Architecture

Note: Section 4 and beyond should be used for detailed functional
specifications for each major component or subsystem as described in the
Architecture section. (A component can be anything, for example: a library, an
executable, an applet, or a GUI.) The following Section 4 is intended as an
example outline of such a component specification. Include any subsections of
Sections 2 or 3 that are appropriate for this component if not already covered
above.

FIXME - moved from an alternate section.

    This project adds the "External" GNU libcdio library to Solaris, allowing
    programs that depend on GStreamer, such as Sound Juicer, to have access to
    CD ripping functionality.  This library is built with GCC because Sun
    Forte compiler does not yet support GNU style "flexible arrays".  According
    to the Sun Studio team RFE's 6308028, 6342333, and 6342974 should be 
    resolved in Sun Studio 11, and we will start building libcdio with Forte
    when this happens.  In the meantime, we are not shipping libcdio with
    C++ headers and library stub functions as these are not required for
    GStreamer or Sound Juicer support.  To better follow the external 
    project, we plan to ship the C++ headers and library stubs when we port
    libcdio to Forte.  Hopefully before Nevada ships, if possible.

    4.1 Description
    
    [May include component architecture, if desired.]

    4.2 Interfaces

      4.2.1 User-visible

      [Are there relevant aspects of this component's interfaces that are not
      covered by the global interface table from section 2.2?]

      4.2.2 Internal (optional for ARC review)
      4.3 Operation

      [How and when is the component started? What are its operating
      requirements? How does it interact with other components?]

      There are specific guidelines in the Architectural Considerations
      document[5] for command line syntax, libraries, daemons (search for
     "daemon"), device drivers, and Graphical User Interfaces (GUIs). 

Appendix A: Standards Supported 

References

[Reference key documents mentioned in your specification.]

    R.1 Related Projects

    [List projects by name and ARC case numbers. Include in this section any
    interface contracts or other inter-project info.]

    R.2 Background Information for this Project or its Product
    
    [Reference the Requirements Specification, Project Plan, etc.]

    R.3 Interface Specifications

    [If not within this document, reference specifications for the syntax and
    semantics of any interfaces. Use man pages, tables, state diagrams, or
    whatever means is appropriate.]

    R.4 Project Details

    [Include design documents, implementation notes, etc.] 


Important References for embedded comments

[1] http://sac.eng/arc/Processes/Client.Handbook/

[2] http://sac.eng/BestPractices/interface_taxonomy.txt/

[3] Motif 1.2 Style Guide (sun part no. 801-5366-10)

[4] CDE Style Guide and Certification Checklist (Sun part no. 802-1581-10)

[5] Architectural Considerations Document, http://sac.eng.sun.com/arc/ARC-Considerations.html 

[6] GNOME 2.14 Release Notes, http://www.gnome.org/start/2.14/

[7] MP3 License, http://jds.ireland/common/legal/patents/MP3_Patent_License.pdf


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]