On Wed, Sep 20, 2006 at 08:55:24AM -0000, Enrico Zini wrote: > After a chat with Andrew Lee (upstream maintainer of scim-chewing), I'll > try to summarise the situation as concisely as I can: Thank you so much. Your explanation has helped me to reach a breakthrough understanding of the situation. > Finding the bug: > > The bug has been found right after the release of Dapper, when skype stopped > accepting chinese input right after the upgrade from Hoary. I assume you mean 'from Breezy' here. > It has not been reported right away because Andrew Lee was trying to > investigate what was wrong. > > As to why more people didn't report this bug, I have a few ideas which I > think are not much relevant to the discussion. > > Cause of the bug: > > The cause of the bug is that Dapper uses scim-qtimm, which requires a patch > to libqt in order to work. The patch changes the API/ABI of libqt. > > Applications built with the patched libqt work fine with scimm-qtimm, but all > 3rd-party applications that weren't built with the patched libqt do not work > with scimm-qtimm. OK, so our libqt includes said patch, and this problem is limited to third-party Qt applications not distributed with Ubuntu? > Proposed work-around: > > The work around is not use scim-qtimm in the im-switch configuration file, > but use xim instead. > > Further issues: > > scim-0.2.1 in dapper has a nasty bug: the user's phrase database file gets > corrupted when scim does not exit gracefully. After this happens, it's > impossible to input Chinese. > > The bug is fixed on 0.3.1. It's unfortunately hard to backport the patch, > because the fix consisted in rewriting the code that handles the user > database. My input method vocabulary is a bit limited; here is what I think I know: scim - input method platform used in Ubuntu scim-qtimm - input method plugin for Qt which talks to SCIM scim-chewing - the default Chinese input method used in Ubuntu xim - an X protocol for input methods, used by SCIM im-switch - a framework which selects input methods at login, based on locale If I apply these definitions to what you've said, here's my current understanding: - Most programs talk to SCIM via the X server's XIM protocol - GTK and Qt programs may instead use a plugin which talks to SCIM by some other means - In Dapper, scim-chewing instructs im-switch to select the following input method settings for Chinese: - Run SCIM in the user's session - Tell GTK to use the native SCIM input method module (scim-gtk2-immodule) - Tell Qt to use the native SCIM input method module (scim-qtimm) - X programs not using GTK or Qt will use XIM, which should still reach SCIM (right?) - scim can't be used with Qt applications unless a patched Qt and scim-qtimm are used, so this configuration doesn't work with those. This applies to all Qt applications when SCIM is in use, and this is the bug described in the original report here. - Ubuntu does not ship with scim-qtimm, so even if the previous problem were fixed, Chinese input in Qt programs in Ubuntu doesn't work. - Kubuntu does not ship with scim-gtk2-immodule, so Chinese input in GTK programs in Kubuntu doesn't work. - Furthermore, the scim-chewing 0.2.1 in Dapper has a nasty bug where, under some circumstances, scim-chewing breaks entirely and becomes unusable for all programs. Therefore it is proposed that we should do the following: - Tell im-switch to use XIM instead of SCIM in Qt programs, by changing the im-switch configuration file provided by scim-chewing. - Update scim-chewing to a new upstream version which fixes the critical bug which makes it unusable Things I still don't understand: - How is scim-pinyin relevant to this discussion? - How will the user experience change when XIM is used instead of scim-qtimm? Does the user still get the same functionality? If so, what purpose does this module (and the corresponding GTK module) serve? - Why is it the scim-chewing package which controls which input methods are selected for Chinese? Shouldn't this be done at a higher level? - It seems to be implied that our Qt is API/ABI incompatible with other platforms due to the patch to support scim-qtimm. Is that true? Reasons why it took so long to get to this point: - The email I received did not refer to this bug report at all, so I didn't see it until much later - There are at least four distinct problems with Chinese input in Dapper, and both this bug report and the email I received conflated these issues in a most confusing way. What we do now: 1. File separate bug reports for each of the four issues described above (this bug report should be used only for the "scim-chewing 0.2.1 can break in such a way that Chinese input is impossible" issue) 2. Discuss in those bug reports what to do about each one for Edgy 3. For each bug, implement and test a solution in Edgy (in some cases this has already been done) 4. For each bug, determine whether it is feasible to backport the solution to Dapper to correct its problems with Chinese input. Does this sound OK to everyone? If anyone can enlighten me regarding the questions under "Things I still don't understand", that would also help. -- - mdz