Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Integrate SCIM to Solaris
    1.2. Name of Document Author/Supplier:
         Author:  Yong Sun
    1.3  Date of This Document:
        06 July, 2008

2. Project Summary
   2.1. Project Description:
        This project is to integrate SCIM (www.scim-im.org) and its various
        IMEs (input method engines) to Solaris Nevada and OpenSolaris.

        COMPONENT       VERSION   LICENSE TERMS
        ----------------------------------------
        scim:            1.4.7    LGPLv2.1
        scim-bridge:     0.4.14   GPLv2 and LGPLv2.1
        scim-anthy:      1.2.4    GPLv2
        scim-chewing:    0.3.1    GPLv2
        scim-hangul:     0.3.2    GPLv2
        libdatrie:       0.1.2    LGPLv2.1
        libthai:         0.1.9    LGPLv2.1
        scim-thai:       0.1.0    GPLv2
        scim-pinyin:     0.5.91   GPLv2
        scim-tables:     0.5.7    GPLv2
        scim-sunpinyin:  1.0      LGPLv2.1 and CDDL

   2.2. Risks and Assumptions:
        The SDK library and IME interface of SCIM are in C++, we are using
        SunStudio C++ compiler to build the components, it may not work with
        the 3-party IMEs built by g++.

4. Technical Description
   4.1. Details:

      4.1.1 SCIM Overview:
        SCIM is an opensourced input method framework, lead by James Su. It has
        similar client/server architecture as IIIMF[1].

        +------------+   +---------------+    +--------+     +-----------+
        |   GtkApp   |   |    GtkApp     |    | X11App |     |   QtApp   |
        +------------+   +---------------+    +--------+     +-----------+
        |scim-gtk-imm|   |scim-bridge-imm|    |ximcp.so|     |scim-qt-imm|
        +----^-------+   +-----^---------+    +----^---+     +-----^-----+
             |                 |                   |               |
             |        +--------V--------+   +------V----------+    |
             |        |scim-bridge-agent|   |scim-xim-frontend|    |
             |        +--------^--------+   +------^----------+    |
             |                 |                   |               |
             +-----------------+-------------------+---------------+
                               |
                        +------V------+
                        | scim-server |
               +--------+-------------+--------+ ~~~
               |  IME1  |     IME2    |  IME3  | ...
               +--------+-------------+--------+ ~~~

        'scim-gtk-imm' is a gtk-im-module that talks to 'scim-server' directly, 
        it's written by C++. To avoid the C++ ABI issue, 'scim-bridge' was 
        introduced, it has a gtk-im-module written by C, and an agent daemon
        in C++ that communicates to scim-server eventually. Legacy X11 app 
        talks to 'scim-xim-frontend' via XIMP (X11 Input Method Protocol), and 
        then connect to 'scim-server'. 'scim-server' loads the engines as 
        shared objects, and dispatches events to individual engine.

        'scim-helper-manager' is not shown in above diagram, it manages some
        helper modules, such as setup.so, which loads configuration GUI
        components provided by engines.

      4.1.2 Switching between SCIM and IIIMF
        NOTE, after the integration of SCIM, IIIMF would still be the default
        input method framework on Solaris/OpenSolaris.
        
        For gdm(1), we'd provide a xsession script in /etc/scim, which starts
        scim daemons only if $GTK_IM_MODULE equals 'scim'. And the xsession file
        for IIIMF (/etc/iiim/xsession, shipped with SUNWiiimf-root) would start 
        IIIMF daemons when $GTK_IM_MODULE is not set or equals to 'iiimf' or 
        'xim'. We would modify /etc/X11/gdm/Xsession to include the xsession
        file for scim. (The one for IIIMF is already included.)

        For dtlogin(1), we would modify the input method start script at 
        /usr/openwin/lib/locale/common/imsscript/S505multi, to start preferred 
        input method frameworks by user's profile.

        So, user could set $GTK_IM_MODULE environment variable in $HOME/.profile
        to select either IIIMF or scim framework. 

    4.2. Bug/RFE Number(s):
        None
    
    4.3. In Scope:
        N/A

    4.4. Out of Scope:
        KDE/Qt support is out of scope.         
    
    4.5. Interfaces:

        INTERFACE NAME             STABILITY    NOTE
        -------------------------- ---------------------------------------------
        /usr/lib/libdatrie.so      Uncommitted  double-array trie library
        /usr/lib/libthai.so        Uncommitted  Thai language processing library

        IMEngine C++ API           Uncommitted  C++ interface for engines
        /usr/lib/libscim-1.0.so    Uncommitted  scim SDK C++ library
        /usr/lib/{amd64,sparcv9}/  Uncommitted  scim SDK C++ 64bits library
        libscim-1.0.so

        /etc/iiim/xsession         Committed    iiim start scripts for gdm
        /etc/scim/xsession         Uncommitted  start scripts for gdm
        /etc/scim/{config,global}  Uncommitted  scim default configurations
        /usr/bin/scim              Uncommitted  scim daemon watchdog
        /usr/bin/scim-bridge       Uncommitted  scim-bridge daemon

        /usr/lib/gtk-2.0/          Uncommitted  gtk-im-modules for scim and
        immodules/im-scim*.so                   scim-bridge

        /usr/lib/{amd64,sparcv9}/  Uncommitted  64bits gtk-im-modules for scim
        gtk-2.0/immodules/                      and scim-bridge
        im-scim*.so

        /usr/lib/scim-1.0/scim*    Uncommitted  scim executables, including scim
                                                server, helper manager etc.

        /usr/lib/scim-1.0/1.4.0/   Uncommitted  scim engines, including anthy
        IMEngines/*                             chewing, hangul, thai, pinyin,
                                                sunpinyin, tables etc.

        /usr/lib/scim-1.0/1.4.0    Uncommitted  configuration GUI components
        SetupUI/*                               for scim engines

        /usr/lib/scim-1.0/1.4.0    Uncommitted  unix domain sockets and XIMP
        FrontEnd/*                              frontends

        /usr/lib/scim-1.0/1.4.0/   Uncommitted  helper, filter, and config
        {Helper,Filter,Config}/*                modules for scim

        /usr/share/scim/*          Uncommitted  icons and data files for engines

    4.6. Doc Impact:
        None
    
    4.7. Admin/Config Impact:
        None
    
    4.8. HA Impact:
        None
    
    4.9. I18N/L10N Impact:
        None
 
    4.10. Packaging & Delivery:

        SUNWscim-bridge
        SUNWscim                SUNWscim-root          SUNWscim-devel
        SUNWlibdatrie           SUNWlibdatrie-devel
        SUNWlibthai             SUNWlibthai-devel
        SUNWscim-thai           SUNWscim-hangul        SUNWscim-anthy
        SUNWscim-pinyin         SUNWscim-sunpinyin     SUNWscim-chewing
        SUNWscim-tables         SUNWscim-tables-extra
        SUNWscim-tables-india   SUNWscim-tables-korean
        SUNWscim-tables-chinese SUNWscim-tables-japanese

    4.11. Security Impact:
        None.
    
    4.12. Dependencies:
        None.

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

    2). SCIM and IMEngines
        http://www.scim-im.org 
        http://www.scim-im.org/projects/imengines

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


Reply via email to