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