SlideShare a Scribd company logo
1 of 23
Download to read offline
2018/08/11 1/23
What is necessary for
the next input method framework
Fuminobu TAKEYAMA
(ftake)
openSUSE.Asia Summit 2018, Taipei
2018/08/11 2/23
About me
●
TAKEYAMA, Fuminobu (武山 文信)
– openSUSE ID: ftake
– from Japan
●
Community (weekend) developer
– Maintainer of openSUSE M17N (Multilingualization)
●
opensuse-m17n@opensuse.org
●
https://build.opensuse.org/projects/M17N
– Not a developer of any specific input method framework
●
Communities
– Organizer of Japan openSUSE User Group
– openSUSE.Asia Summit 2017 Local Organizing Chair
2018/08/11 3/23
What is an input method?
●
A mechanism to input various characters
– Complex characters used in Chinese, Japanese, Korean
– Usually using several key strokes
aoi
あおい
青い
2018/08/11 4/23
What is an input method framework
(IMF) ?
●
An interface between applications and
input method engines (conversion software)
– Also allows switching multiple input method engines
– e.g., IBus, Fcitx, GCIN, SCIM, UIM, IIIMF, Kinput2, ...
GTK App. Qt App. X App.
IMF daemon
*-qt *-xim*-gtk IMFGUI
QtGtk X server
Mozc
libchewing3
*-mozc
*-chewing
Engines
Different API for each GUI platform
GTK, Qt IM module, XIM
An unified API to
implement engines
2018/08/11 5/23
Input method frameworks on
openSUSE
●
openSUSE supports multiple IMFs
●
Different IMF is used depending on the session locale by
default
– GCIN for zh_TW, zh_HK
– Fcitx for zh_ CN, etc.
– IBus for ja_JP
2018/08/11 6/23
Recent changes in the API layer
●
Qt5 contains ibus-qt (GTK+ 4 will also)
●
Flatpak applications can communicate with IBus running on
the host
– using the IBus portal D-Bus interface
GTK App. Qt App. X App.
ibus-daemon
ibus-qt ibus-ximibus-gtk
QtGtk X server
Mozc
libchewing3
ibus-mozc
ibus-chewing
IBus D-Bus Interface
Flatpak App.
Flatpak portal
Engines
...
...
ibus-ui-gtk3ibus-ui-gtk3
2018/08/11 7/23
But, Flatpak supports only IBus
●
Issue #43 Add other im module for input method
– https://github.com/flatpak/freedesktop-sdk-images/issues/4
3
I'm still not convinced we want to support multiple input
method frameworks
By Matthias Clasen
2018/08/11 8/23
Some people might think
IBus is now the standard IMF?
●
No
– Quite many people prefer Fcitx or Gcin and hate IBus
– By Googling “ibus”, several blog posts saying “how ibus is
bad” are found
– Due to the several design issues (mentioned later)
●
Why so many IMFs have been developed?
– Formerly, for more stability
●
Let’s remind conversion engines were running on an application
process
– Now, usability, customizability, ...
2018/08/11 9/23
Do we still need various IMFs?
●
I think no if we have a thin and simple IMF
– No major difference in the core part of today’s IMFs
– “An interface between applications and engines” does not
provide much user experience
– GUI should be separated into engines and replaceable
●
No more multiple IMF support cost
●
It’s time to end the war of input method framework
2018/08/11 10/23
So let’s discuss
what is necessary for the next IMF?
●
From the viewpoint of architecture/design
●
By reviewing the problems of IBus (and Fcitx)
2018/08/11 11/23
1. Separation of GUI from core IMF
service 1/2
●
GUI of input method is now provided by IMF
– Design of the GUI is a major cause of discontent
●
A candidate window should be a part of an engine
– e.g., IBus cannot show hints (word usage) on a candidate list
●
Mozc replaces candidate window with its own in irregular way
but it is broken on GNOME Wayland shell
Candidate window
of ibus-ui-gtk3
(with ibus-kkc)
Candidate window of Mozc
2018/08/11 12/23
1. Separation of GUI from core IMF
service 2/2
●
For IBus, some major logic of IMF is implemented in
GUI layer (status panel applications)
– Switching keyboard layout, loading plugins, etc.
●
What is worse, there are three GUI layer variations
– ibus-ui-gtk3
– GNOME keyboard plugin
– KDE Input method panel
2018/08/11 13/23
2. Running without specific GUI
libraries
●
IBus depends on GTK+
– KDE input method panel still requires ibus-ui-gtk3
– Fcitx have less dependency
●
Will be necessary for embedded
– e.g., Automotive Grade Linux
2018/08/11 14/23
3. Wayland support
●
Need APIs between IM engine and Wayland compositor
(server)
– To get absolute position of text cursor
– To place IM engine’s window to appropriate position
2018/08/11 15/23
4. Redesigned keyboard layout
switch 1/4
●
Both IBus and Fcitx support this for layouts such as
Russian and Arabic
– ASDF ⇔ ФЫВА
By Nkoke, No modification, CC-BY-SA 3.0
https://commons.wikimedia.org/wiki/File:Russian_keyboard_win.png
A S D F
2018/08/11 16/23
4. Redesigned keyboard layout
switch 2/4
●
A layout is provided as an IBus engine
– ibus-simple
– Some engine like Anthy allow to specify a layout too
2018/08/11 17/23
4. Redesigned keyboard layout
switch 3/4
●
The following situations are not supported
– To switch between JP and US layout with engines like Anthy,
Mozc...
– To use two keyboards with different layout (US, JP)
Internal JP layout
USB US layout
2018/08/11 18/23
4. Redesigned keyboard layout
switch 4/4
●
Switching pairs of an engine and a layout is necessary
●
Anthy JP
●
Anthy US
●
Chewing US
●
Simple RU
– The same engine can be registered multiple times
●
Hardware-specific layout settings
– Internal Keyboard: JP
– USB Keyboard: US
2018/08/11 19/23
5. Support of text input without
physical keyboard
●
Integration with input and conversion
is necessary
– Should be implemented
as an “engine” (plugin)
●
Screen keyboard
– Integrated conversion UI
– Need API to show up
●
Voice input
– Converted texts are directly passed to
applications ATOK input method on Android
2018/08/11 20/23
6. Input mode v.s. input engine 1/2
●
IBus 1.5 is designed for CJK users to use two engines
by switching Meta+Space
– Conversion engine: Anthy, Mozc, Chewing, Pinyin
– ibus-simple: for direct input (a-z, 0-9, ...)
●
Problems
– 半角/全角 key is not used to turn on/off
●
Even though most Japanese use
●
IBus need modifier keys to show its engine selector window
while the keys are pressed
– No shortcut to switch to direct input mode
Turning of/off IBus was obsoleted
2018/08/11 21/23
6. Input mode v.s. input engine 2/2
●
Workaround in IBus 1.5 for CJK
– Use local mode of each engine and do not use ibus-simple
(shortcut keys are provided by engines)
●
“A” mode and “あ” mode in Anthy, Mozc
●
“英” mode and “中” mode in Chewing
●
What should this be?
– Exposing each local mode as an engine like macOS X
(Not sure this is the best)
●
Direct (Simple) RU
●
“A” (Mozc) US
●
“あ” (Mozc) US
●
“中” (Chewing) US Meta+Space
Settings for Russian,
Japanese and Traditional Chinese
2018/08/11 22/23
7. Open community
●
It is getting difficult to make a good solution without
open discussion
– An input method framework is involved with many parts of
applications and platform
●
Not only GNOME
– If the design changes in IBus 1.5 was discussed openly, we
could have resolved some problems before the release
2018/08/11 23/23
Conclusion
●
I think it is possible to make a standard IMF
– By separating into thin core service and various engine plugins
●
Let’s use our effort not for multiple IMF support but for
– New input mechanism such as screen keyboard and voice input
– Wayland integration
– Resolving application specific issues
●
Cursor position problem
●
Electron applications bug in Flatpak

More Related Content

Similar to What is necessary for the next input method framework?

Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)
Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)
Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)Igalia
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
ELK - Optimizations & Updates
ELK - Optimizations & UpdatesELK - Optimizations & Updates
ELK - Optimizations & UpdatesHuynh Thai Bao
 
Developing Qt Applications on MeeGo Touch with Style
Developing Qt Applications on MeeGo Touch with StyleDeveloping Qt Applications on MeeGo Touch with Style
Developing Qt Applications on MeeGo Touch with StyleMarble Virtual Globe
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0Carlo Bonamico
 
MPI Presentation
MPI PresentationMPI Presentation
MPI PresentationTayfun Sen
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Igalia
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
How to make the calculator
How to make the calculatorHow to make the calculator
How to make the calculatorKouji Matsui
 
Jangaroo @ FlashCodersNY
Jangaroo @ FlashCodersNYJangaroo @ FlashCodersNY
Jangaroo @ FlashCodersNYFrank Wienberg
 
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...Konstantin Savenkov
 
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/Assistants
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/AssistantsLiven up your PDFs with FrameMaker-to-Acrobat TimeSavers/Assistants
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/AssistantsShlomo Perets
 
Raju Tiwari-Resume-8+
Raju Tiwari-Resume-8+Raju Tiwari-Resume-8+
Raju Tiwari-Resume-8+Raju Tiwari
 
Transforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovationTransforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovationEranea
 
Qt Application Development on Harmattan
Qt Application Development on HarmattanQt Application Development on Harmattan
Qt Application Development on HarmattanVille Lavonius
 

Similar to What is necessary for the next input method framework? (20)

Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)
Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)
Summary of Igalia's contributions to Chromium in the past year (BlinkOn 10)
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
ELK - Optimizations & Updates
ELK - Optimizations & UpdatesELK - Optimizations & Updates
ELK - Optimizations & Updates
 
Developing Qt Applications on MeeGo Touch with Style
Developing Qt Applications on MeeGo Touch with StyleDeveloping Qt Applications on MeeGo Touch with Style
Developing Qt Applications on MeeGo Touch with Style
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0
 
MPI Presentation
MPI PresentationMPI Presentation
MPI Presentation
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
How to make the calculator
How to make the calculatorHow to make the calculator
How to make the calculator
 
SFScon 2020 - Marina Latini - openSUSE maintenance updates
 SFScon 2020 - Marina Latini - openSUSE maintenance updates SFScon 2020 - Marina Latini - openSUSE maintenance updates
SFScon 2020 - Marina Latini - openSUSE maintenance updates
 
Jangaroo @ FlashCodersNY
Jangaroo @ FlashCodersNYJangaroo @ FlashCodersNY
Jangaroo @ FlashCodersNY
 
Bringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near YouBringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near You
 
Opensource Software usability
Opensource Software usabilityOpensource Software usability
Opensource Software usability
 
Intento Enterprise MT Hub
Intento Enterprise MT HubIntento Enterprise MT Hub
Intento Enterprise MT Hub
 
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...
EVALUATION IN USE: NAVIGATING THE MT ENGINE LANDSCAPE WITH THE INTENTO EVALUA...
 
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/Assistants
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/AssistantsLiven up your PDFs with FrameMaker-to-Acrobat TimeSavers/Assistants
Liven up your PDFs with FrameMaker-to-Acrobat TimeSavers/Assistants
 
Raju Tiwari-Resume-8+
Raju Tiwari-Resume-8+Raju Tiwari-Resume-8+
Raju Tiwari-Resume-8+
 
Transforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovationTransforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovation
 
Qt Application Development on Harmattan
Qt Application Development on HarmattanQt Application Development on Harmattan
Qt Application Development on Harmattan
 
Cracow MuleSoft Meetup #1
Cracow MuleSoft Meetup #1Cracow MuleSoft Meetup #1
Cracow MuleSoft Meetup #1
 

More from Fuminobu Takeyama

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーFuminobu Takeyama
 
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Fuminobu Takeyama
 
SUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたSUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたFuminobu Takeyama
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEFuminobu Takeyama
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編Fuminobu Takeyama
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSEFuminobu Takeyama
 
ここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPFuminobu Takeyama
 
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法Fuminobu Takeyama
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースFuminobu Takeyama
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Fuminobu Takeyama
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Fuminobu Takeyama
 
Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Fuminobu Takeyama
 
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介Fuminobu Takeyama
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4Fuminobu Takeyama
 
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用Fuminobu Takeyama
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるFuminobu Takeyama
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3Fuminobu Takeyama
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2Fuminobu Takeyama
 
20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summitFuminobu Takeyama
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-lineFuminobu Takeyama
 

More from Fuminobu Takeyama (20)

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
 
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
 
SUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたSUSE Studio Express を使ってみた
SUSE Studio Express を使ってみた
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
 
ここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUP
 
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
 
Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017
 
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
 
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
 
20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line
 

Recently uploaded

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

What is necessary for the next input method framework?

  • 1. 2018/08/11 1/23 What is necessary for the next input method framework Fuminobu TAKEYAMA (ftake) openSUSE.Asia Summit 2018, Taipei
  • 2. 2018/08/11 2/23 About me ● TAKEYAMA, Fuminobu (武山 文信) – openSUSE ID: ftake – from Japan ● Community (weekend) developer – Maintainer of openSUSE M17N (Multilingualization) ● opensuse-m17n@opensuse.org ● https://build.opensuse.org/projects/M17N – Not a developer of any specific input method framework ● Communities – Organizer of Japan openSUSE User Group – openSUSE.Asia Summit 2017 Local Organizing Chair
  • 3. 2018/08/11 3/23 What is an input method? ● A mechanism to input various characters – Complex characters used in Chinese, Japanese, Korean – Usually using several key strokes aoi あおい 青い
  • 4. 2018/08/11 4/23 What is an input method framework (IMF) ? ● An interface between applications and input method engines (conversion software) – Also allows switching multiple input method engines – e.g., IBus, Fcitx, GCIN, SCIM, UIM, IIIMF, Kinput2, ... GTK App. Qt App. X App. IMF daemon *-qt *-xim*-gtk IMFGUI QtGtk X server Mozc libchewing3 *-mozc *-chewing Engines Different API for each GUI platform GTK, Qt IM module, XIM An unified API to implement engines
  • 5. 2018/08/11 5/23 Input method frameworks on openSUSE ● openSUSE supports multiple IMFs ● Different IMF is used depending on the session locale by default – GCIN for zh_TW, zh_HK – Fcitx for zh_ CN, etc. – IBus for ja_JP
  • 6. 2018/08/11 6/23 Recent changes in the API layer ● Qt5 contains ibus-qt (GTK+ 4 will also) ● Flatpak applications can communicate with IBus running on the host – using the IBus portal D-Bus interface GTK App. Qt App. X App. ibus-daemon ibus-qt ibus-ximibus-gtk QtGtk X server Mozc libchewing3 ibus-mozc ibus-chewing IBus D-Bus Interface Flatpak App. Flatpak portal Engines ... ... ibus-ui-gtk3ibus-ui-gtk3
  • 7. 2018/08/11 7/23 But, Flatpak supports only IBus ● Issue #43 Add other im module for input method – https://github.com/flatpak/freedesktop-sdk-images/issues/4 3 I'm still not convinced we want to support multiple input method frameworks By Matthias Clasen
  • 8. 2018/08/11 8/23 Some people might think IBus is now the standard IMF? ● No – Quite many people prefer Fcitx or Gcin and hate IBus – By Googling “ibus”, several blog posts saying “how ibus is bad” are found – Due to the several design issues (mentioned later) ● Why so many IMFs have been developed? – Formerly, for more stability ● Let’s remind conversion engines were running on an application process – Now, usability, customizability, ...
  • 9. 2018/08/11 9/23 Do we still need various IMFs? ● I think no if we have a thin and simple IMF – No major difference in the core part of today’s IMFs – “An interface between applications and engines” does not provide much user experience – GUI should be separated into engines and replaceable ● No more multiple IMF support cost ● It’s time to end the war of input method framework
  • 10. 2018/08/11 10/23 So let’s discuss what is necessary for the next IMF? ● From the viewpoint of architecture/design ● By reviewing the problems of IBus (and Fcitx)
  • 11. 2018/08/11 11/23 1. Separation of GUI from core IMF service 1/2 ● GUI of input method is now provided by IMF – Design of the GUI is a major cause of discontent ● A candidate window should be a part of an engine – e.g., IBus cannot show hints (word usage) on a candidate list ● Mozc replaces candidate window with its own in irregular way but it is broken on GNOME Wayland shell Candidate window of ibus-ui-gtk3 (with ibus-kkc) Candidate window of Mozc
  • 12. 2018/08/11 12/23 1. Separation of GUI from core IMF service 2/2 ● For IBus, some major logic of IMF is implemented in GUI layer (status panel applications) – Switching keyboard layout, loading plugins, etc. ● What is worse, there are three GUI layer variations – ibus-ui-gtk3 – GNOME keyboard plugin – KDE Input method panel
  • 13. 2018/08/11 13/23 2. Running without specific GUI libraries ● IBus depends on GTK+ – KDE input method panel still requires ibus-ui-gtk3 – Fcitx have less dependency ● Will be necessary for embedded – e.g., Automotive Grade Linux
  • 14. 2018/08/11 14/23 3. Wayland support ● Need APIs between IM engine and Wayland compositor (server) – To get absolute position of text cursor – To place IM engine’s window to appropriate position
  • 15. 2018/08/11 15/23 4. Redesigned keyboard layout switch 1/4 ● Both IBus and Fcitx support this for layouts such as Russian and Arabic – ASDF ⇔ ФЫВА By Nkoke, No modification, CC-BY-SA 3.0 https://commons.wikimedia.org/wiki/File:Russian_keyboard_win.png A S D F
  • 16. 2018/08/11 16/23 4. Redesigned keyboard layout switch 2/4 ● A layout is provided as an IBus engine – ibus-simple – Some engine like Anthy allow to specify a layout too
  • 17. 2018/08/11 17/23 4. Redesigned keyboard layout switch 3/4 ● The following situations are not supported – To switch between JP and US layout with engines like Anthy, Mozc... – To use two keyboards with different layout (US, JP) Internal JP layout USB US layout
  • 18. 2018/08/11 18/23 4. Redesigned keyboard layout switch 4/4 ● Switching pairs of an engine and a layout is necessary ● Anthy JP ● Anthy US ● Chewing US ● Simple RU – The same engine can be registered multiple times ● Hardware-specific layout settings – Internal Keyboard: JP – USB Keyboard: US
  • 19. 2018/08/11 19/23 5. Support of text input without physical keyboard ● Integration with input and conversion is necessary – Should be implemented as an “engine” (plugin) ● Screen keyboard – Integrated conversion UI – Need API to show up ● Voice input – Converted texts are directly passed to applications ATOK input method on Android
  • 20. 2018/08/11 20/23 6. Input mode v.s. input engine 1/2 ● IBus 1.5 is designed for CJK users to use two engines by switching Meta+Space – Conversion engine: Anthy, Mozc, Chewing, Pinyin – ibus-simple: for direct input (a-z, 0-9, ...) ● Problems – 半角/全角 key is not used to turn on/off ● Even though most Japanese use ● IBus need modifier keys to show its engine selector window while the keys are pressed – No shortcut to switch to direct input mode Turning of/off IBus was obsoleted
  • 21. 2018/08/11 21/23 6. Input mode v.s. input engine 2/2 ● Workaround in IBus 1.5 for CJK – Use local mode of each engine and do not use ibus-simple (shortcut keys are provided by engines) ● “A” mode and “あ” mode in Anthy, Mozc ● “英” mode and “中” mode in Chewing ● What should this be? – Exposing each local mode as an engine like macOS X (Not sure this is the best) ● Direct (Simple) RU ● “A” (Mozc) US ● “あ” (Mozc) US ● “中” (Chewing) US Meta+Space Settings for Russian, Japanese and Traditional Chinese
  • 22. 2018/08/11 22/23 7. Open community ● It is getting difficult to make a good solution without open discussion – An input method framework is involved with many parts of applications and platform ● Not only GNOME – If the design changes in IBus 1.5 was discussed openly, we could have resolved some problems before the release
  • 23. 2018/08/11 23/23 Conclusion ● I think it is possible to make a standard IMF – By separating into thin core service and various engine plugins ● Let’s use our effort not for multiple IMF support but for – New input mechanism such as screen keyboard and voice input – Wayland integration – Resolving application specific issues ● Cursor position problem ● Electron applications bug in Flatpak