If I have seen further it is by standing on the shoulders of giants.
-- Sir Isaac Newton
Now we have an opportunity, standing on the shoulders of SU Zhe (I wish my weight won't hurt him), to develop an (or a bundle of) open source input method on Mac OS X, Microsoft Windows, or even embedded devices. That is the purpose of SCIMPort.
The followings are some questions and answers you might ask:
Why porting SCIM?
SCIM, an open source input method platform, can significantly reduce the effort to develop an input method. Besides originally developed input method, such as rawcode, scim-table, scim-pinyin, many input methods are ported on it, including fcitx, chewing, open-vanilla etc. If we port SCIM to other platforms, these input method will be very easily ported to these platforms too (even some of them already work on these OSes). That's the most efficient way to bring mature open source input methods to multiple OS.
Why OSX first?
First, SCIM is originally developed on GNU/Linux, running on POSIX system with XWindow and GTK+ (of coz there is a mutation: skim, which based on Qt). Since OSX supports POSIX well, it needs much less effort than porting to other platform.
Second, OSX users, especially users using simplified Chinese, have less choices on input methods than other platforms. SCIMPort will significantly alleviates this.
And Third, I have a MacBook.
From the point of end user, SCIMPort is just at beginning. If you compile and install it manually, you can only see a blank window with several meaningless buttons, plus several menus say "English Keyboard" or "RAWCODE". No matter opening SCIM or not, keystrokes always become characters input to system, as if SCIM does not exist.
Form perspective of developer, it does a lot.
At runtime, in most scenarios, SCIM is made of three connected parts: 1) daemon, manages multiple input method and other things; 2) panel, handles all GUI component and interact with user; 3) component, talks between OS and SCIM, translating messages. Let's analogize it to human being. To port SCIM, likes to do a surgery on people. First, doctor places and consolidates bones to the correct position (three main parts connected), then connects nerves (I'm rewriting message handler in component and panel) and finally sews skin (I'll try to write a neat, configurable GUI).
As you can see, we are at the middle of the whole process, but I will release SCIMPort as 0.0.1 at the end of second step, with an ugly and unconfigurable GUI.
This project is hosted on sourceforge, at http://sourceforge.net/projects/scimport/. If you want to help, contributing code and artwork, or even giving some suggestions, please feel free to contact me.