GNOME 의 ibus 통합 정책 비판

cogniti3의 이미지

gnome desktop 에는 ibus 가 통합되어 있습니다.
ibus 는 용량을 많이 잡아먹고, 느립니다. 버박이나 저사양 컴퓨터에서 사용하면 너무 느려서 타이핑하기가 짜증나는 정도로 느립니다. 부정확해서 한글 입력할 때 오류나는 경우는 아주 흔합니다.
삭제하고자 하면, 아래처럼 gnome 의 핵심 어플까지 삭제할될 거라는 메시지가 나옵니다.

root@:/home/hodong # pkg remove ibus
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 7 packages (of 0 packages in the universe):
 
Installed packages to be REMOVED:
	chrome-gnome-shell: 10.1
	gdm: 3.28.4_1
	gnome-control-center: 3.28.2_6
	gnome-shell: 3.28.3_6
	gnome-terminal: 3.28.2_1
	gnome-tweaks: 3.28.1_1
	ibus: 1.5.22
 
Number of packages to be removed: 7
 
The operation will free 102 MiB.
 
Proceed with deinstalling packages? [y/N]:

그래서 gnome desktop 을 사용하면 ibus 를 삭제하지도 못하고 사용하지 않더라도, 그냥 메모리만 잡아먹습니다.

hodong@:/home/hodong $ irb
irb(main):001:0> 9.1 + 8.5 + 8.3 + 29.5 + 8.4 + 26.9
=> 90.7

ibus 는 nimf 보다 메모리 용량을 두배 이상을 잡아먹으면서 오히려 더 느리며 버그는 더 많습니다.
입력기는 시스템 어플은 아니지만, 시스템 어플 성격이 강합니다. 메모리 적게 잡아먹고 안정적으로 작동해야 되어야 한다는 의미입니다.
메모리 많이 잡아먹고, 느리고, 입력 버그 많은 ibus 통합 정책은 재검토되어야 할 것입니다.

저는 대안을 제시합니다.
XIM 같은 유닉스/리눅스용 통합 입력 API 를 제작하여 퍼블릭 도메인 또는 BSD 계열의 라이선스로 보급할 것.
이를 위해 Qt input method, GTK input method API 가 하나로 통합될 필요가 있습니다. 라이선스도 제각각이고 의존성이 걸려 있는데, 라이선스를 BSD 계열로 하고, 의존성이 걸리지 않게끔, 호환성이 높은 C API 를 설계하여 보급하는 대안을 제시하겠습니다.
또한 wayland 는 여러 input protocol 를 만들어서 혼란을 주지 말고, 영향력이 높은 GTK, Qt, Wayland 프로젝트가 합심하여 통합 입력 C API 를 만들어 주셔서, gtk, qt, xim, wayland im 등을 통합해 주시길 바랍니다.
자유/오픈소스 까방권 뒤에 숨는거 이제는 못 봐주겠습니다.
개발자는 잘못이 없습니다. 저도 압니다. 그래서 저는 개발자를 욕하지 않습니다.
대신, 사실에 입각하여, 정책이나 소프트웨어 품질에 대해 앞으로도 열심히 비판하겠습니다.

File attachments: 
첨부파일 크기
Image icon ibus-memory-usage.png116.6 KB
세벌의 이미지

xfce를 GNOME desktop 대신 쓰는 건 어떤가요?
xfce도 ibus가 통합되어 있는지는 잘 모르겠습니다.

cogniti3의 이미지

그 생각을 못했네요. XFCE 써야겠네요

chahoolee의 이미지

coughingmouse의 이미지

uim은 그 대안이 될 수 없나요?

cogniti3의 이미지

uim 은 제가 잘 모릅니다. 설정이 너무 어려워서 uim 을 설치했을 때, 한글 입력하는 방법을 잘 모릅니다. 그리고 인디케이터도 어떻게 작동시켜야 되는지 모르겠고요. 될 때도 있고 안 될 때고 있고요. 그래서 uim 에 대해서는 이렇다.. 저렇다.. 할 드릴 말씀이 없네요.

https://developer.gnome.org/gtk3/stable/GtkIMContext.html 이런 API 가 있습니다.

가칭 아래와 같은 C API가 만들어져야 한다는 얘기입니다. 툴킷에 비종속적이어야 합니다. 라이선스도 (L)GPL 이 아닌 BSD 계열이 되어야 합니다. 그렇게 해야만 아래와 같은 API 를 GTK, Qt, Wayland, JVM 등의 광버위한 소프트웨어에서 사용할 수 있죠.

void im_set_client_window ()
void im_get_preedit_string ()
bool im_filter_keypress ()
void im_focus_in ()
void im_focus_out ()
void im_reset ()
void im_set_cursor_location ()
void im_set_use_preedit ()
void im_set_surrounding ()
bool im_get_surrounding ()
bool im_delete_surrounding ()
입력기 설정 API 도 만들어야만, 각종 데스크탑 환경에서 제각기 다른 입력 설정을 하지 않고, 공통적인 설정을 할 수 있어야겠죠. 이게 wayland 시대에 접어들면 필요합니다.
과거의 유물 CDE 같은게 필요합니다. freedesktop 이라는게 있긴 한데 freedesktop 스펙은 여러모로 부족합니다.

GTK 를 예를 들면 GTK 는 입력에 GtkIMContext 를 사용하기도 하고, XIM 을 사용하기도 합니다.
GTK_IM_MODULE=xim 이렇게 환경 변수를 설정하면 XIM 방식으로 입력을 합니다.
JVM 은 GtkIMContext 이렇게 Toolkit 에 종속적인 API 를 사용하기 곤란하니까 XIM 을 사용하여 입력을 합니다.
Qt 는 QPlatformInputContext 이란 걸 사용합니다.
통합 입력 C API 를 만들고 장기적으로 라이브러리, 툴킷 등에서 통합 입력 C API 를 사용하여 입력을 받도록 해야죠. 입력기는 통합 입력 C API 를 구현하면 되고요.

그리고 입력기를 변경하는 것도 매우 간편하게 할 수 있는데,

/etc/input.d/ibus.conf
/etc/input.d/fcitx.conf
/etc/input.d/nimf.conf
/etc/input.d/uim.conf

/etc/X11/xinit/xinput.d 디렉토리처럼, /etc/input.d/ 디렉토리에 입력기.conf 파일을 넣자고 규정하고,
$HOME/.inputrc 파일에
[ -f /etc/input.d/nimf.conf ] && . /etc/input.d/nimf.conf
이런 내용을 넣도록 규정하거나,
ln -sf /etc/input.d/nimf.conf /etc/input.d/default 이런 식도 괜찮고요.
이렇게 하면 입력기 설정 문제로 골탕먹을 일도 없습니다. GUI 로 간편하게 설정할 수 있는거죠.
예전 X 시대에 그런 식으로 설정이 가능했습니다. 어떻게 된게 기술이 역행하여 사용자분들이 골탕을 먹고 있는거죠.

cogniti3의 이미지

그리고 wayland 시대에 접어들면 입력 문제는 더욱 파편화될 겁니다. 통합 요구 분명 나올거고 통합 시도도 할 수 밖에 없습니다. X 의 경우 XKB 옵션을 설정하면 모든 어플에 적용되는데, wayland 의 경우 서버에서 관리하는게 아니기 때문에 데스크탑/툴킷 마다 제각각입니다. A 툴킷을 사용하여 만든 어플과, B 툴킷을 사용하여 만든 어플의 입력 방법이 다를 수 있습니다. A 툴킷, B 툴킷이 사용하는 입력 라이브러리가 같으면 입력 방법이 같을 수 있고, 그렇지 않을 경우 입력 방법이 다를 수 있습니다. 예를 들자면, 컴포즈키 누르고 라틴계열 문자를 조합하는 방식을 생각해볼 수 있는데, A 툴킷은 libxkbcommon 이라는 라이브러리에서 제공하는 기능을 사용하여 구현했고, B 툴킷은 자체 구현했다고 할 때, 입력 방법이 상이하겠죠.
libxkbcommon 에서 제공하는 기능 중, 컴포즈키 누르고 라틴계열 문자를 조합하는 기능은 XKB 와는 전혀 관련이 없는 기능입니다.

xtiinhs의 이미지

이쯤에서 잠시 읽고 가시죠. https://medium.com/@parkjoonkyu/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%9E%85%EB%A0%A5%EA%B8%B0%EB%A1%9C-%EB%B3%B8-wayland%EC%9D%98-%ED%98%84%EC%A3%BC%EC%86%8C-130ac441de7a

그리고 중요한 게 결국 아무리 좋은 표준이 있다고 해도 그걸 적용하는 거는 여러 관련된 사람들에게 표준의 중요성을 설득하고 안정된 구현을 제공하는 것에 달려 있습니다. 자칭 "오픈소스 안티"랍시고 성 안에서 아무리 좋은 표준을 만들어 봤자 그걸 아무도 안 써 준다면 공염불일 뿐입니다. 기술적으로 의미가 있다는 건 잘 알겠으나 이것을 실현하는 것은 결국 커뮤니케이션의 문제라고 봅니다.

cogniti3의 이미지

표준을 제가 만든다는게 아니고, 대형 프로젝트에서 만들고 보급하면 좋겠죠.
ibus 에도 api 가 있는데 https://ibus.github.io/docs/ibus-1.5/index.html
GNOME 데스크탑에서 ibus api 를 호출하는 것보다는 여러 입력기에서 공통적으로 사용할 수 있는 api 를 만들어서 여러 입력기들이 GNOME 에서 만든 api 를 구현하면 GNOME 데스크탑 설정에서 간편하게 언어를 추가하도록 할 수도 있겠죠. 그런 걸 얘기하는 겁니다.
kstatusnotifieritem/appindicator 이라는게 있는데, 어플에서 간편하게 appindicator 라이브러리를 사용하면 패널 알림 영역에 상태 아이콘이 나옵니다. 이렇게 사용될 수 있는 라이브러리 또는 api 를 대형 프로젝트에서 만들어서 보급하면 좋죠.
애초 XIM 을 사용하다가 GTK IM api 가 나오고, QT IM api 나오고,... 이렇게 된 거죠. 통합 api 가 나오지 않으면 GTK, Qt 를 사용하지 않는 wayland 어플에서 입력 문제를 해결하기 위해 자체 api 가 나올 것이라 예상할 수 있습니다.
통합 입력 api 표준을 제가 만들겠다는 얘기가 아닙니다. 보시다시피, 통합 입력 api 가 필요하다고 커뮤니케이션을 하고 있는 거죠.

cogniti3의 이미지

표준은..., 커뮤니케이션 문제보다는 주도권, 점유율 문제로 봅니다만.

세벌의 이미지

저는 세벌식이 좋아서 여기저기 홍보하러 다니다가 이제 지쳤네요.
두벌식만 표준이죠. 세벌식은 표준 아니지요. 그래도 쓰고 싶은 사람 쓰겠다는 거 말리지도 않고요.
표준은 주도권 점유율 문제라는데 동감합니다.

cogniti3의 이미지

리눅스/유닉스 데스크탑을 주도하는 현재의 세력은 데탑 문제점을 해결하는데 가망이 없어보입니다.
저는 이 문제를 각종 오픈소스 프로젝트 관련 이해관계 때문이라고 생각하는 사람입니다.
이미 옛날에 상업용 유닉스 회사들이 만들어놓은 표준을 오픈소스를 주도하는 세력이 받아들이기가 싫어서 새롭게 계속 만들면서 오히려 기술이 역행한다고 생각하는 사람입니다. XIM 이라는게 그들의 주장처럼 안 좋은 것이 아닙니다. X 를 거쳐야하기 때문에 그런 부분이 단점이 되는 것은 맞지만, GTK IM, QT IM, Wayland IM 은 XIM 보다 훨씬 빈약합니다.
각각의 대형 프로젝트에서 XIM 이라는 표준을 무시하고 자기들만의 독자적인 표준을 만들어서 뿌리는건데 시장에서는 어쩔 수 없이 사용을 하고 있는 형국입니다. XIM 이 정 마음에 들지 않으면 각각의 대형 프로젝트들이 XIM 을 대체할 만한 걸 만들면 되는데 만들지도 않고 있고 자기들만의 입력 방법을 고집하는 거죠. 예를 들자면 GNOME 은 GTK IM, ibus 를 고집하고, Qt 는 QT IM 을 고집하고, Wayland 는 그들만의 입력 방법을 고집하고 있는 것이 현실입니다.
이 문제는 커뮤니케이션으로 풀 수 없습니다.
현재 리눅스 데탑을 주도하는 세력을 모두 갈아엎을 블록버스터가 필요한 시점입니다.
안드로이드 같은게 리눅스 데탑에 들어오지 말라는 법 없습니다.
MS, 구글, 애플 등의 거대 기업이 리눅스 데탑 시장에 들어와서 개뻘짓하는 오픈소스 세력들을 모두 갈아엎어 춘추전국시대를 평정하기를 바랍니다.

세벌의 이미지

MS, 구글, 애플 등의 거대 기업이 리눅스 데탑 시장에 들어와서 개뻘짓하는 오픈소스 세력들을 모두 갈아엎어 춘추전국시대를 평정하기를 바랍니다.
개뻘짓 이 표현 그리 좋게 들리지는 않네요.일부러 플레임을 만들려고 하시는 건지... kldp에 여러 종류의 사람들이 옵니다. 그 중에 오픈소스 안 하는 분도 있겠지만 오픈소스에 관심 갖고 오시는 분이 더 많을 텐데... 제가 개뻘짓하는 사람 중 하나인 거죠?
swish95의 이미지

남이 댓글 달면 플레임이고 님이 달면 건의 인지...

------------------------------------------------------------
ProgrammingHolic

세벌의 이미지

다른 사람이 댓글 단 것 자체를 뭐라 하는 게 아니라, 그 내용 중 플레임을 일으킬 수 있는 것을 지적한 것이었네요. 오해 없길 바래요.

cogniti3의 이미지

해외에는 wayland 까는 글 엄청 많아요. wayland sucks 라고 검색함 해봐요.

cogniti3의 이미지

개인분들에게는 해당 안 되는 얘기입니다. 과거 상업용 유닉스 벤더들이 만들어 놓은 넘사벽 수준의 X, XIM 을 거부하고 오히려 더 안 좋은 것들을 만들어서 좋다고 세뇌하고 구라치는 불특정 세력에 해당하는 얘기입니다.
사람들은 이들 주장에 현혹되어 카더라 수준에서 재생산하고 있습니다. 그러나,
그들의 주장처럼 Wayland 가 X 보다 좋으면 10년이 지난 지금 X 를 교체했겠죠.
그들의 주장처럼 XIM 이 안 좋으면 왜 X, XIM 을 아직까지 왜 쓸까요?
2020년 현재 X, Wayland 벤치마크해보세요. Wayland 이거 완전 희대의 개뻘짓입니다.
아마 제 생각에는 X 세력을 몰아내고, 전문성이 떨어지는 W 세력이 유닉스/리눅스 데탑을 주도하기 위해 만들어낸거 아닌가 그런 생각이 듭니다. 그렇게 기술과 품질은 역행 중입니다.

cogniti3의 이미지

2020년 자료입니다. 속도 차이가 거의 없습니다. 오히려 X 가 약간 빠릅니다.

Ubuntu 20.04 GNOME X.Org vs. Wayland Session Performance Impact For Gaming
https://www.phoronix.com/scan.php?page=article&item=ubuntu-2004-waylandgame&num=1

drinkme의 이미지

이쯤에서 제가 만든 한글 ime를 살짝 광고

https://github.com/gyungoh/soju/releases

navi대비 10%정도의 메모리 사용
No GUI
한자 지원 안됨

세벌의 이미지

링크 따라 들어가 보았습니다.
프로젝트 소개를 readme 파일에 넣어 올리시면 광고 효과가 좀 더 높아질 듯.

drinkme의 이미지

감사합니다.

세벌의 이미지

링크 따라 들어가 보았습니다.
프로젝트 소개를 readme 파일에 넣어 올리시면 광고 효과가 좀 더 높아질 듯.
아. Readme 있었네요. 죄송.

cogniti3의 이미지

마이크로소프트에서 리눅스용 다이렉트X를 발표했습니다.
https://devblogs.microsoft.com/directx/directx-heart-linux/
제 예상대로내요. 오픈소스 큰행님들이 Wayland 로 뻘짓함으로서 리눅스 데탑 시장이라는 틈새 시장이 열렸고 그 틈새 시장에 어느 기업이 먼저 발을 딛을 지 궁금했습니다. 미래에 MS 리눅스 데스크탑 환경 이런거 나오길 기대해봅니다.