I'm submitting this fast-track for myself (IM group), scheduled to timeout
at 09/24/2009.

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       Uncommitted  message bus daemon
       /usr/bin/ibus-setup        Uncommitted  setup launcher
       /usr/libexec/ibus-x11      Uncommitted  ibus XIM fontend/agend

       /usr/libexec/ibus-gconf    Uncommitted  config backend by gconf-python
       /usr/libexec/ibus-ui-gtk   Uncommitted  panel GUI by pygtk

       /usr/lib/libibus.so        Uncommitted  ibus C binding SDK library
       /usr/include/ibus-1.0/*    Uncommitted  ibus C binding header files

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

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

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

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

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

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

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

   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.

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: open

Reply via email to