The case has been approved as the timer has been expired
with +1 (thanks, Sebastien).

Fuyuki

Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
     1.1. Project/Component Working Name:
         iBus integration
     1.2. Name of Document Author/Supplier:
         Author:  Fuyuki Hasegawa
     1.3  Date of This Document:
        17 September, 2009

2. Project Summary
   2.1. Project Description:
        This project is to integrate next generation Input Method framework,
        iBus and its various IMEs (Input Method Engines). Release binding is
        Micro/Patch and initial integration is OpenSolaris (Nevada).

        COMPONENT            VERSION     LICENSE      LANGUAGES
        ------------------------------------------------------------------------
        ibus:                 1.1.0      LGPLv2.1     IM framework

        Available IMEs:
          ibus-anthy:         1.1.0      GPLv2        Japanese
          ibus-pinyin:        1.1.0      GPLv2        Simplified Chinese
          ibus-chewing:       1.1.0      GPLv2        Traditional Chinese
          ibus-hangul:        1.1.0      GPLv2        Korean
          ibus-m17n:          1.1.0      GPLv2        libm17n[4] Umbrella Engine
          ibus-table:         1.1.0      GPLv2        code-table Umbrella Engine

        Codetables for ibus-table
          ibus-table-array30  1.2.0      GPLv2        Traditional Chinese
          ibus-table-cangjie  1.1.0      GPLv2        Traditional Chinese
          ibus-table-erbi     1.1.0      GPLv2        Simplified Chinese
          ibus-table-quick    1.1.0      GPLv2        Simplified Chinese
          ibus-table-translit 1.1.0      GPLv2        Cyrillic
          ibus-table-wubi     1.1.0      GPLv2        Simplified Chinese
          ibus-table-xinhua   1.1.0      GPLv2        Simplified Chinese
          ibus-table-yong     1.1.0      GPLv2        Simplified Chinese
          ibus-table-zhengma  1.1.0      GPLv2        Simplified Chinese

   2.2. Risks and Assumptions:
        iBus requires python 2.5+ in runtime, but currently opensolaris still
        uses python 2.4 as default. We need python2.6 to be the default in
        OpenSolaris.

4. Technical Description
   4.1. Details:

      4.1.1 iBus Overview:
        iBus (http://code.google.com/p/ibus) leverages many design ideas and
        principles in the CJK input method SPI specification conference, which
        many experienced IM developers (among iiimf, scim communities and us)
        joined and contributed. It's mainly developed by Peng Huang, who works
        for Redhat. And it's a very active community, much more active than
        iiimf and scim.

        ibus delivered 1.1.0 stable release on July 2009. It had been adopted
        as default IM framework on Fedora 11, and it will also be used as the
        default on next Ubuntu release Karmic (https://wiki.ubuntu.com/desktop-
        karmic-input-methods). It's already in Debian/Ubuntu package repo.

        Integrating ibus does not mean to obsolete iiimf or scim, but we would
        put them in maintenance state.

          +------------+   +--------+    +-----------+
          |   GtkApp   |   | X11App |    |   QtApp   |
          +------------+   +--------+    +-----------+
          |ibus-gtk-imm|   |ximcp.so|    |ibus-qt-imm|
          +----^-------+   +----^---+    +-----^-----+
               |                |              |
               |        +-------V---------+    |
               |        |ibus-xim-frontend|    |
               |        +-------^---------+    |
               |                |              |
           /---V----------------V--------------V-------\
          /              ibus message bus               \
          \                daemon in C                  /
           \---^--------^-----------^------------^-----/
               |        |           |            |
            +--V---  +--V--+  +-----V-----+  +---V----+
            |IME A|  |IME B|  | panel GUI |  | config |
            +-----+  +-----+  +-----------+  +--------+

        This 'bus-centric' architecture is introduced to resolve the following
        weakness in 'server-centric' architecture.

        * There's usually only 1 server per desktop session, which loads all
          IMEs as shared objects. So one buggy IME would crash the entire
          server.
        * IMEs are developed with either C or C++, it's difficult to add other
          language bindings. Adding a binding basically means plugging an
          interpreter into server's process space.
        * IMEs are not able to be loaded or unloaded on the fly.

        All components in above diagram uses DBus as IPC. And iBus largely uses
        python, such as panel GUI, config backend, or even IMEs.

      4.1.2 Switching between iBus, SCIM and IIIMF
        iBus services are started by gnome-session(1). User could simply enable
        or disable the service via gnome-session-properties(1). With the help of
        startup scripts shipped with iiimf and scim, user could set 
GTK_IM_MODULE
        environment variable in $HOME/.profile to select iBus, IIIMF or SCIM.

        We plan to change default IM framework from iiimf to ibus in Solaris
        Next.

    4.4. Out of Scope:
        KDE/Qt support through ibus-qt-imm is out of scope this time.
        Qt applications will be connected through XIM frontend.

    4.5. Interfaces:

        INTERFACE NAME             STABILITY    NOTE
        -----------------------------------------------------------------------
        /usr/bin/ibus-daemon       Volatile     message bus daemon
        /usr/bin/ibus-setup        Volatile     setup launcher

        The following are all Project Private.

        INTERFACE NAME             STABILITY    NOTE
        -----------------------------------------------------------------------
        /usr/lib/ibus/ibus-x11     Private      ibus XIM fontend/agend
        /usr/lib/ibus/ibus-gconf   Private      config backend by gconf-python
        /usr/lib/ibus/ibus-ui-gtk  Private      panel GUI by pygtk

        /usr/lib/libibus.so.0      Private      ibus C binding SDK library

        /usr/include/ibus-1.0/*    Private      ibus C binding header files

        /usr/share/gtk-doc/html/   Private      ibus developor documents
        ibus/*

        /usr/lib/python2.6/        Private      ibus Python binding
        site-packages/ibus/*

        /usr/lib/gtk-2.0/2.10.0/   Private      ibus gtk-im-module
        immodules/im-ibus*.so
        /usr/lib/{amd64,sparcv9}/  Private      64bits version of ibus
        gtk-2.0/2.10.0/immodules/               gtk-im-module
        im-ibus*.so

        /usr/share/ibus/setup/*    Private      ibus-setup modules
        /usr/share/ibus/ui/gtk/*   Private      panel GUI by pygtk

        /usr/share/ibus/           Private      ibus components registry
        components/*                            like ibus-gconf, ibus-ui-gtk
                                                and IMEs

        /usr/lib/ibus/             Private      IME launcher
        ibus-engine-<IME_NAME>
        /usr/lib/ibus/             Private      IME setup launcher
        ibus-setup-<IME_NAME>
        /usr/share/ibus-<IME_NAME> Private      IME modules
        *IME_NAME is among [anthy, chewing, hangul, m17n, pinyin, table]

        /usr/share/ibus-table/*    Private      ibus-table engine and
                                                code-tables

        -> It was suggested to move ibus-<IME_NAME> under /usr/share/ibus.
           The community will examine it in future ibus version (1.2~).

    4.10. Packaging & Delivery:

        SUNWibus
        SUNWibus-root
        SUNWibus-devel

        SUNWibus-chewing
        SUNWibus-chewing-root

        SUNWibus-anthy
        SUNWibus-pinyin
        SUNWibus-hangul
        SUNWibus-m17n

        SUNWibus-table
        SUNWibus-table-devel

        SUNWibus-table-data-cangjie
        SUNWibus-table-data-erbi
        SUNWibus-table-data-quick
        SUNWibus-table-data-translit
        SUNWibus-table-data-wubi
        SUNWibus-table-data-xinhua
        SUNWibus-table-data-yong
        SUNWibus-table-data-zhengma
        SUNWibus-table-extraphrase
        SUNWibus-table-extraphrase-devel

    4.12. Dependencies:
        We need python2.6 to be the default in OpenSolaris.
        -> It was suggested to make ibus independent on python default version.
           Project team has agreed it.

5. Reference Documents:
    1). IIIMF project
        http://www.openi18n.org/iiimf
        PSARC 2005/525 IIIMF upgrade to revision 12

    2). SCIM project
        http://www.scim-im.org
        PSARC 2008/418 Integrate SCIM to Solaris

    3). Server-Centric vs. Bus-Centric Architectures
        http://docs.google.com/present/view?id=ahtgvwdt62tk_24ftz4nsft

    4). Supported Input Methods in libm17n
        http://www.m17n.org/m17n-lib-en/support_input_sum.html
        PSARC 2008/624 Integrate libm17n and scim-m17n to Solaris

6. Resources and Schedule
     6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                G11N
     6.5. ARC review type: FastTrack
     6.6. ARC Exposure: approved

Reply via email to