Experience about IIIMF and SCIM from Taiwanese Developers Jim Huang (aka. "jserv") (New) Chewing Project http://chewing.csie.net/ Dec 12, 2005 * Acknowledge to the enthusiastic developers who helped me to resolve the problems related to input method development. * The XCIN[1] input method is the most famous XIM server in Taiwan, and it works really well among various UNIX-like platforms. However, with the impacts of multilingualization and globalization, an extensive, high- customizable, pluggable, and scalable IM (Input Method) Framework is necessary in order to overcome the existing issues, such as dynamic changing locale support, efficient ways to adapt new input methods, acquiring the specific languages of IM clients, changable UI support in various IM, etc. In 2004, there is a new project named as (New) Chewing, which aims to be a portable, common, centric-developed, and even better intelligent phonetic Chinese (regarded as smart "BoPoMo") input method solution suitable for users in Taiwan. Many developers[2] are involved in, and Chewing is known to be ported to various platforms and environments, such as IIIMF, SCIM, OpenVanilla [3], Win32 IME, Linux console, GNU screen, etc.[4] The Chewing core team suffers many problems related to the input method infrastructure and so-called IM Framework. I attended some meeting minutes about the development behind input method designs and implementations, and I met Hideki Hiura and James Su, who are the creators of two famous IM frameworks, IIIMF and SCIM, last year. There was an excellent overview from their talks, and the Chewing Project does support the two IM frameworks at the moment. A year ago, I spent some spare time tracing IIIMF in the aspects of the server, client, and AUX framework designs. I was so surprised that IIIMF makes use of the concepts from many modern software approaches, such as RPC (Remote Process Call), Distributed Computing, Object Dispatching, MVC (Model-View-Control) and Authorization. Also, since IIIMF was created by the i18n team in Sun Microsystems, there are numerous IM engines for IIIMF, and the storage size of Subversion repository for IIIMF was so impressive. So that, I thought that I should consider IIIMF as the first IM framework for Chewing IM support when the first time I got in touch with IIIMF. The designs behind IIIMF are awesome, and I could not use simple diagrams and charts to represent my trace progress for IIIMF, which drove my development slow down. The iiimf-le-chewing (Chewing IM language engine for IIIMF) was buggy, and I must spend several days to fix the bugs and of course to study, hack, and learn the huge API sets. Finally, with the help from Ervin Yan, the engineer from the i18n team in Sun Microsystems, Chewing IM support in IIIMF works again, and there is a new GTK+-based UI AUX implementation, which is really professional. The work became one the of software components in Sun Java Desktop System, an excellent desktop operating environment for commercial applications. However, that cames with huge amount of C program lines in order to finish the Chewing IM support aparting from the IM engines. In other side, SCIM-chewing (Chewing IM module for SCIM) was partially done with some hacking after talking to James Su with some techniques. IIIMF is very flexible, high-customized, and powerful, but I think that IIIMF is still a bit hard to the developers who are not familiar with the approaches and mechanisms in IIIMF. James Su claims that the principle of SCIM design is KISS - "Keep It Simple and Stupid", and that really rocks to me. In fact, there are few IM developers who are in charge of the input method development in Taiwan, and most of them could not spend much time studying the awesome architectures behind the IM frameworks. Additionally, I did attempt to fix and correct the issues when iiimf-le-chewing crashed, which led to unbelievable amont of tracing log. The leif API in IIIMF is difficult, and I was seeking for the help from Leon Ho, the author of IIIMF-xcin[5]. However, the progress was still in the trap of endless bugs and crashes when I tried to enhance the implementations. The license of IIIMF is suitable for commercial usage, and I know that there are many successful commercial IM products based on IIIMF. Comparing to IIIMF, lots of independent developers are writing input methods for SCIM according to the search results of internet. As far as I know, the number of the users who adopt SCIM as the IM in Linux/*BSD Desktop is increasing in Taiwan, but the that of IIIMF is limited to the fact that most of the users only use IIIMF when Fedora Core was just installed, which takes IIIMF as the default IM framework, and they might switch back to XCIN or SCIM due to the fact that they can't find out the suitable IM with built-in IIIMF packages. The experience about developing the IM module/engine for IIIMF and SCIM is essential to Chewing core team including me. I agree with words from James Su: "Because we are all in OpenSource world, so please don't make such decision by ourselves. Instead, we should let users and developers choose the best one for themselves." As the promise from the idea of Chewing Project, the core team is still willing to develop and maintain the implementations on IM frameworks, of course, IIIMF and SCIM included. However, SCIM-chewing is much easier to maintain and enhance for core team developers and other contributors, and I can make a fresh release of SCIM-chewing and libchewing (the core of Chewing IM) as we expect. Very interestingly, SCIM-chewing and IIIMF-le-chewing have the similar LoC (Line-of-Code), but their functionality differ a lot. Indeed, we should let users and developers choose the best one for themselves. [1] http://xcin.linux.org.tw/ [2] See http://chewing.csie.net/credit.html for details. [3] http://www.openvanilla.org/ [4] The screenshots explain some facts: http://chewing.csie.net/screenshots.html [5] http://tciiimf.sourceforge.net/