리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

자유로운 이야기, 구인구직, 이벤트, 나눔

Moderators: Dry8r3aD, drake_kr

unixcruiser
Posts: 125
Joined: 2009/04/24 Fri 7:47 am

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by unixcruiser » 2015/11/20 Fri 1:06 pm

안녕하세요. 오랫만에 포럼에 글을 남기네요...

말씀하신 사안에 대해서, 아무래도 X라는 분야 자체가 꽤 난해한 분야이다보니, 입력기에 대해 어려운 부분이 있을 수 밖에 없지 않나 합니다.
리눅스 상에서 GUI 관련 개발이 GTK+ 혹은 Qt 에 집중되다보니, XLib와 같은 Low-Level 라이브러리를 접하기는 매우 드물지요.

GUI 개발에 대한 제 경험을 잠깐 말씀드리자면, GTK+로 제작 중인 프로그램에서 기타 GUI 응용프로그램으로 Drag and Drop을 수행 시에는 반드시 XLib의 특정한 값을 대입해야 Drop을 받는 상대 측 응용프로그램에서 정상적으로 인식이 되지, 그렇지 않다면 Drop 하는 순간 아이콘이 원래의
자리로 되돌아오게 됩니다 (즉, 작동 안함). 하지만, 이에 대한 자료 및 관련문서가 많이 부족한 편입니다 (특히, 한국어 문서). GTK+ 나 Qt로 GUI 응용프로그램 개발이 많이 수월해졌다고는 하지만 X 구현체와 XLib의 정확한 이해없이는 고품질의 프로그램 제작에 어려움을 겪을 수 밖에 없습니다. 또한 GTK+의 경우에도, 핵심부로 접근하는 순간 관련자료가 없음을 절실히 느끼고 있습니다.

원 주제로 돌아와서, 말씀하신 부분에 대해서도, hodong님께서도 잘 인지하시고 계시리라 봅니다.

물론 주제가 어렵다보니, 이에 대해서는 시간이 답해주리라 생각합니다.

이상입니다.
DON'T ask why!
Ask why NOT!

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/20 Fri 10:41 pm

예전에 유닉스 시대에는 입력 방식이 xim 으로 통일된 방식이었는데...
현재는 리눅스에서 입력 방식이 중구난방(xim, gtk im, qt im, clutter im, wayland 등)이라서 어려운 것고요...
응용 프로그램 및 입력기에서 각각의 입력 방식을 지원해야 하므로 어려운 점이 있고,
게다가 응용 프로그램의 주류 개발자들이 대부분 영미권 사람들이라 CJK(중국어,일본어,한국어) 입력 방식에 대한 이해가 부족하여 버그 보고를 해도 개발자들이 이해를 하지 못하여 못 고쳐주는 부분이 대부분입니다.
시간이 지나면 해결되겠지... 저도 이런 생각으로 5년이 지났지만 아무도 입력기 프레임워크(ibus, fcitx 등)의 끝글자 버그를 고쳐주지 않았습니다. 그래서 결국 다솜 입력기를 만들게 되었습니다...
저뿐만 아니라 다른 프로그래머들의 프로그래밍 능력이 미숙하여 발생하는 버그는 아닙니다.
특히 한국어 관련한 버그는 여러가지 이유로 참여가 부족하여 해결이 안 되고 있다고 보시면 됩니다.
주류 개발자들은 각종 후원금(기부금) 및 회사 월급을 받으면서 개발하므로 사정이 괜찮을 것으로 짐작됩니다.
무슨 말이냐면 어떤 프로그램 GPL, LGPL 등 각종 오픈소스 라이선스 소스코드 헤더를 보면 Copyright Redhat 또는 intel 등 회사이름이 들어가는데... 그 회사에서 월급을 받는 개발자가 만들었을 것이라 추측할 수 있습니다.
그 대부분의 개발자들이 아마도 영미권 사람들일 것이라고 추정할 수 있습니다. 그 사람들이 CJK 권 사람이라면 끝글자 버그를 그냥 두지 않았겠죠. 자기들이 사용하면서 불편을 겪을게 뻔하니까요.

다솜 입력기 1.0 을 사용하면 이클립스 끝글자 버그가 나타나지 않는데(회피됨) 대신 우클릭 문제가 발생합니다.
https://github.com/dasom-im/dasom/issues/9
이거는 다솜 입력기의 후킹 부분이 응용 프로그램의 정상 작동을 방해하는 것이므로 다솜 입력기 버그입니다.

그래서 이벤트 후킹하는 코드를 변경하여 1.0.1 버전에 적용하였습니다.
다솜 입력기 1.0.1 사용할 때 발생하는 이클립스 끝글자 버그는 다솜 입력기의 버그가 아닙니다.
https://github.com/dasom-im/dasom-jeongeum/issues/2

그리고 nabi 는 XIM 입력기입니다.
다솜도 XIM 입력기 기능이 있습니다. eclipse 구동할 때(일반적인 경우) 다솜에 있는 gtk im 모듈이 작동되는데...
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-dasom-gtk3.so
/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-dasom-gtk2.so

아래처럼 하면 다솜 입력기의 XIM 기능이 사용됩니다.
무슨 말이냐면 eclipse 가 im-dasom-gtk3.so, im-dasom-gtk2.so 을 사용하지 않고 X 서버에 접속하여 키값을 X 서버에 전송하여 X 서버는 다솜 XIM 서버(dasom-daemon 은 다솜 프로토콜과 XIM 프로토콜을 동시에 처리합니다)에 접속하여 키값을 다솜에 넘겨주고 다솜은 그 값을 처리하여 X 서버에 보내고 X 서버는 처리된 결과값을 응용 프로그램에 보냅니다.

hodong@debian:~$ export | grep dasom
declare -x GTK_IM_MODULE="dasom"
declare -x QT4_IM_MODULE="dasom"
declare -x QT_IM_MODULE="dasom"
declare -x XMODIFIERS="@im=dasom"
hodong@debian:~$ GTK_IM_MODULE="xim"
hodong@debian:~$ eclipse
hodong@debian:~$
위에 처럼 하여 다솜 XIM 을 사용할 경우 eclipse 끝글자 버그는 나타나지 않습니다.

그리고 imhangul 은 gtk im module 입니다.
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-dasom-gtk3.so 요런 거죠...
imhangul 사용시 이클립스 끝글자 버그는 나타나지 않는데... 그것은...
gtk_key_snooper_install() 함수로 이벤트를 후킹하여 그럴 겁니다.
무슨 말이냐면 이클립스보다 먼저 키 이벤트를 imhangul 이 받아서 처리한 후에 이클립스로 결과를 리턴합니다.
원래는 이클립스가 키 이벤트를 먼저 받고 그걸 imhangul 에 건내주고 imhangul 이 그걸 처리해서 이클립스에 결과를 리턴해야 하는 겁니다.
[code:7idt3tpj]guint
gtk_key_snooper_install (GtkKeySnoopFunc snooper,
gpointer func_data);
gtk_key_snooper_install has been deprecated since version 3.4 and should not be used in newly-written code.
Key snooping should not be done. Events should be handled by widgets.
Installs a key snooper function, which will get called on all key events before delivering them normally.

Parameters

snooper a GtkKeySnoopFunc
func_data data to pass to snooper .

Returns

a unique id for this key snooper for use with gtk_key_snooper_remove().[/code:7idt3tpj]

많은 응용 프로그램들이 이렇게 입력 관련 버그가 있어서 다솜 입력기에도 그걸 회피하고자 이벤트를 후킹하는 방식을 사용합니다.
gtk_key_snooper_install() 함수는 deprecated since version 3.4 때문에 사용하지 않습니다.
(deprecated 뜻: 중요도가 떨어져 더이상 사용되지 않고 사라질)
대신,
다솜 1.0 에서 gdk_event_handler_set(), gtk_main_do_event() 를 사용했었는데 부작용(이클립스 우클릭 문제 https://github.com/dasom-im/dasom/issues/9 )이 있어서
다솜 1.0.1 에서는 gdk_window_add_filter(), gdk_window_remove_filter() 를 사용합니다.
부작용은 아직 발견되지 않았고, 최근 inkscape 사용할 경우 inkscape 죽는 현상을 발견하였습니다.
https://plus.google.com/106795824057033 ... RtC4Z7beyy
이는 프로그래밍 미숙으로 발생된 버그는 아니고, gtk, gdk 핵심 부분(이벤트 핸들링)에 대한 api 설명이 없어서 발생한 프로그래밍 버그입니다. 해결 방법을 찾았고 좀 정리하고 테스트한 후에 commit 하여 반영할 계획입니다. 아울러 하는김에 이클립스 끝글자 버그 회피 방법도 다시 살펴볼 계획입니다.
이클립스 실행시에
gtk_im_context_set_client_window (GtkIMContext *context,
GdkWindow *window); 함수가 작동하는데,
다솜 입력기에서 그 함수를 구현하고 있고 구현한 함수가 실행됨을 확인하였는데, 이클립스 사용할 경우 다솜 입력기 gdk 이벤트 후킹 기능이 작동하지 않아서, 이클립스가 gtk_im_context_set_client_window (context, NULL) 이렇게 NULL 값을 넣는 건 아닌가... 추측만할 뿐입니다.
좀더 확인해보고,
gdk_window_add_filter (GdkWindow *window,
GdkFilterFunc function,
gpointer data);
에 window 인자에 NULL 을 넣어서... api 문서에 따르면 'Pass NULL for window to get all events for all windows, instead of events for a specific window.' 이렇게 나와 있는데, 위험하지만 이 방법을 시도해 볼 생각입니다.

빠르게 개발할 것 같으면 여러 사람들이 사용할 수 있게끔 그 코드를 바로 commit 하여 버그가 올라오면 그 때 또 고치면 됩니다. 이런 개발 방법은 테스트 시간은 줄여주지만, 사용자분들이 많은 불편을 겪게 될 것이므로 이런 개발 방법을 사용하지 않고,
시간이 오래 걸리더라도 제가 최소 1주일 이상을 직접 사용해보고 그후에 commit 하는 과정을 거치게 됩니다.

응용 프로그램 및 배포판이 iceweasel, geany, eclipse, gedit, libreoffice, inkscape 등 많다보니 테스트에 굉장히 많은 시간이 소비됩니다.
우분투 14.04, 15.04, 15.10, 데비안 jessie 최소 4종, 최소 5종의 프로그램, 각 테스트에 10~30분 소요...
4 * 5 * (10~30분) = 200분~600분(기본 테스트에 3시간~10시간 소요됨)
그래서 개발이 늦어지는 것이니 양해 부탁드립니다.
그리고 배포판 4종에 대해 deb 파일을 만들려면 32비트, 64비트가 있으니 8종의 리눅스를 버추얼박스에 설치 및 업데이트, git 다운로드 검파일해야 됩니다. 1종에 대한 deb 파일을 만들려면 2~3시간 소요되므로 8종이면 16시간~24시간 소요됩니다.
그래서 쉽게 릴리즈 엄두도 못내고 있습니다. SSD 비용도 장난아니고.. 120GB 사용하다가 9월말 릴리즈 준비 때문에 240GB 구입했고, 용량 부족해서 11월말이나 12월 초에 SSD 480GB 구입 예정입니다.
버박에 10종 이상의 리눅스를 설치했는데 80GB 정도 차지하고 용량 부족으로 모두 삭제하였습니다. 개발하면서 이렇게 수십만원씩 장비값도 들어가고...
주말이 알바 못나가서 발생되는 손실액만해도... 매달 최소 20만원(보통 40만원 정도 손실 발생됨)에 달합니다.
다솜 입력기 개발하면서 1월부터 10월말까지 손실 본 금액이 500만원이 넘어갑니다. 수면 부족으로 인한 건강 문제도 있고요.
이런 개인적인 사정이 있습니다.

궁극적으로는... 통합된 linux im api standard 가 나와서 모든 응용 프로그램 및 입력기가 linux im api standard 를 지원하는 방향으로 가야겠죠.
C++ 은 호환성 때문에 탈락, ibus 는 비동기 방식의 필연적 버그 때문에 탈락,..
그 비전을 다솜 입력기가 제시하고 싶습니다.

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/21 Sat 1:07 am

이클립스 끝글자 버그를 회피하는 방법을 찾긴 찾았는데... 부작용이 있을 수 있습니다.

아래 방법은 https://plus.google.com/106795824057033 ... RtC4Z7beyy 과 다릅니다.
https://plus.google.com/106795824057033 ... RtC4Z7beyy 방법은 안전한 코드이지만 이클립스 끝글자 버그 회피 불가,

아래 방법은 좀더 넓은 범위에서 작동하므로 부작용이 있을 수 있지만 이클립스 끝글자 버그 회피 가능.
충분히 검토한 후에 다음 릴리즈에 둘 중 하나를 수정하여 포함하게 될 것입니다.

GdkFilterFunc 이것이 api 문서에 나와 있는 것과는 약간 다르게 동작합니다. 한자창 문제도 마찬가지고요.
정확한 동작을 알려면 gtk/gdk 소스코드를 확인해봐야하는 부담감이 있습니다. 소스코드 확인에 며칠씩 걸리기 때문에 소스코드 확인은 하지 않을 것이고 테스트만 수행할 것입니다.

저는 java 를 잘 모를뿐더러... 입력기 개발하냐고 시간이 없으니 이클립스쪽에 버그 리스트 검색해보고 검색된 것이 없다면 그쪽에도 버그 보고해주세요.
그렇지 않으면 5년, 10년 세월이 흘러도 한글 입력 환경은 개선되지 않습니다.

감사합니다.

[code:3hb426dp]hodong@debian:~/dasom$ git diff
diff --git a/modules/clients/gtk/im-dasom.c b/modules/clients/gtk/im-dasom.c
index 57aa18e..1e2a1c9 100644
--- a/modules/clients/gtk/im-dasom.c
+++ b/modules/clients/gtk/im-dasom.c
@@ -166,18 +166,12 @@ dasom_gtk_im_context_set_client_window (GtkIMContext *context,

if (ds_context->client_window)
{
- gdk_window_remove_filter (ds_context->client_window,
- (GdkFilterFunc) on_gdk_x_event, context);
g_object_unref (ds_context->client_window);
ds_context->client_window = NULL;
}

if (window)
- {
ds_context->client_window = g_object_ref (window);
- gdk_window_add_filter (ds_context->client_window,
- (GdkFilterFunc) on_gdk_x_event, context);
- }
}

static void
@@ -433,6 +427,8 @@ dasom_gtk_im_context_init (DasomGtkIMContext *context)
context);
g_signal_connect (context->settings, "changed::hook-gdk-event-key",
G_CALLBACK (on_changed_hook_gdk_event_key), context);
+
+ gdk_window_add_filter (NULL, (GdkFilterFunc) on_gdk_x_event, context);;
}

static void
@@ -443,6 +439,8 @@ dasom_gtk_im_context_finalize (GObject *object)
DasomGtkIMContext *context = DASOM_GTK_IM_CONTEXT (object);
g_object_unref (context->im);

+ gdk_window_remove_filter (NULL, (GdkFilterFunc) on_gdk_x_event, context);
+
if (context->client_window)
g_object_unref (context->client_window);[/code:3hb426dp]

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/22 Sun 1:14 am

다솜 1.1, 다솜 정음 1.1 을 릴리즈하였습니다.
https://github.com/dasom-im/dasom/releases/tag/1.1
https://github.com/dasom-im/dasom-jeong ... es/tag/1.1
이클립스 버그를 회피하는 코드가 적용되었습니다.
감사합니다.

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/22 Sun 2:35 pm

다솜 프레임워크 https://github.com/dasom-im/dasom 내에

dasom-daemon -- 다솜 프로토콜 처리, XIM 프로토콜 처리(IMdkit)
응용 프로그램용 gtk,qt 모듈
[quote:3jk852ea]제 시스템에 설치하면 아래처럼 설치가 됩니다.
/usr/lib/x86_64-linux-gnu/qt4/plugins/inputmethods/libqt4im-dasom.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libqt5im-dasom.so
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-dasom-gtk3.so
/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-dasom-gtk2.so[/quote:3jk852ea]

dasom-indicator -- 다솜 표시기
dasom-agent extension for gnome-shell -- GNOME Shell 확장

입력 모듈 개발, 개발자를 위한
dasom im api --- 클라이언트 모듈 개발에 사용
dasom agent api --- 표시기 개발에 사용
dasom candidate api --- 후보창(한자창, 중국어 입력창, 일본어 입력창) 개발에 사용

위에 언급한 것들을 몽땅 넣어서 개발이 기술적으로 어렵다는 오해가 발생하는 것 같습니다.
입력기 개발에는 기술적으로 어려운 점이 없습니다.
교과서에 나오는 내용만으로 만들 수 있습니다.
그리고 제가 과거에 Xlib, Xt, Xm 프로그래밍을 했었던 사람인데... 이런 글 보면 가슴이 울컥합니다.

그래서 이런 오해를 조금이라도 불식시키고자 1.2 버전에서는

https://github.com/dasom-im/dasom (확정)
https://github.com/dasom-im/dasom-gtk (확정)
https://github.com/dasom-im/dasom-qt (확정)
https://github.com/dasom-im/dasom-jeongeum (확정)
dasom-pinyin (중국어 모듈, 미정)

이렇게 갑니다. 각 프로젝트 별로 다른 버전이 사용될 수 있습니다.
그리고 커밋 및 릴리즈를 최대한 자제할 것입니다.
그리고 제가 하루에 남는 시간이 2 ~ 4시간입니다. 개발 시간 확보를 위해 issue 에 대한 답변도 최대한 자제할 것입니다. 그렇게 하면 issue 답변하는데 소요되는 시간이 최소 30분 ~ 3시간(보통 2시간) 정도 소비되는데 그 시간을 개발 시간으로 확보할 수 있습니다.
그렇게 하여 하루라도 빨리 중국어 엔진 모듈을 만들어서 탑재하면 외국 개발자들의 참여를 기대해볼 수 있고 통합된 Linux IM API Standard 방향을 제시할 가능성이 높어지게 됩니다. 이게 궁극의 해결책입니다. 이 목적 때문에 중국어 엔진 모듈을 탑재하고자 하는 것입니다.

그리고 입력기 개발 동기 및 과정 등이 아래 블로그에 있습니다. 처음부터 할 줄 아는 사람은 없습니다.
모르는 상태에서 공부해서 개발한 것입니다. 특히 Qt 모듈 개발할 때에 팔자에도 없는 C++, Qt 공부하냐고 욕나오곤 했었습니다.
입력기에 대해 궁금하신 부분은 아래 블로그나 아래 자료 링크를 읽어보시기 바랍니다.

http://cogno.org/dasom (전에 사용하던 웹 호스팅에서 이메일 MX 레코드 업데이트 불가하여 네임서버를 변경하여 현재 블로그 서비스 불가, 웹 호스팅 업체를 알아보고 있는 중입니다. 언젠가 재개되는데 재개일은 미정입니다.)

그리고, 아래는 입력기 개발에 필요한 자료 링크입니다.

http://www.x.org/releases/X11R7.6/doc/l ... M/xim.html
http://www.w3.org/TR/ime-api/
https://developer.chrome.com/extensions/input_ime
https://docs.enlightenment.org/stable/e ... Group.html
http://doc.qt.io/qt-4.8/qinputcontext.html
http://doc.qt.io/qt-5/qinputmethod.html
https://git.gnome.org/browse/gtk+ (특히 gtkimcontext 관련 코드)

https://github.com/ibus/ibus (비동기 방식)
https://github.com/fcitx/fcitx
https://github.com/fcitx/fcitx-qt5
https://github.com/uim/uim
https://github.com/dasom-im (동기 방식)

https://github.com/choehwanjin/imhangul
https://github.com/choehwanjin/ibus-hangul

그리고 다솜 입력기에서 한글 입력 기능은 완성된 상태입니다.
그리고 gtk 모듈 이벤트 후킹 기능을 껐다 / 켰다 하는 기능이 있으니,
[attachment=0:3jk852ea]
hook-gdk-event-key.png
hook-gdk-event-key.png (41.05 KiB) Viewed 4398 times
[/attachment:3jk852ea]
각종 응용 프로그램 사용할 때 끄고서 입력해 보시고, 켠 상태에서도 입력해 보시기 바랍니다.
그 결과 응용 프로그램 버그로 판단되면 그쪽에 버그 리포트 검색해보신 후
없다면 꼭 보내시기 바랍니다.
그걸 여가시간이 2~4시간 밖에 되지 않는 제가 하게 되면
입력기 개발이 많이 지연됩니다. 최소 1일에서 일주일 보름 단위로 지연됩니다.
그런 이슈 올라올 때마다 보통 3일 정도 개발이 지연된다고 보시면 되고,
그런 이슈 10개 올라오면 개발이 한달 지연되겠죠....
오해의 소지가 있는 글에도 대응해야 되고.
오해를 조금이라도 불식시키고자 gtk, qt 분리 작업을 수행하면 또 그만큼 개발이 지연됩니다.
저는 기술적으로 어려운 점이 없는데... 처리가 늦는다고 이런 글 올라오면...
제가 과거에 Xlib, Xt, Xm 프로그래밍을 했었던 사람인데 마음이 정말 울컥합니다.
이런 점이 제일 어려운 점입니다.

1111
Posts: 452
Joined: 2010/10/19 Tue 1:28 pm

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by 1111 » 2015/11/23 Mon 7:58 am

Fcitx 써보세요
뒤에 마우스 버그말고는 쓸만해요
오픈소스가 세상을 움직이면 어떻게 되는지 그때까지 살아보고 싶다.

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/24 Tue 2:19 pm

k9200544 님 잘 되신다니 기분이 좋네요.
님 덕분에 모든 이클립스 사용자분들도 좋아할 겁니다.

설정기를 만들긴 만들어야 하는데 일단 공간만 만들어 놓았습니다.
https://github.com/dasom-im/dasom-settings
그리고, gtk, qt 를 분리했는데... 커밋은 아직 안 올렸음.
candidate 에 gtk3 의존성이 있어서 qt 에 gtk3 의존성이 생겨버렸습니다.
그래서 candidate (중국어,일본어,한자 입력시 필요) 요거를 모듈화하여 분리할 겁니다.

다솜을 해외에 소개하기 위한 중국어 엔진도 만들고,

그리고, 언젠가 xim 부분도 모듈화하여 분리할 것입니다.
그렇게하여 dasom 에 X 의존을 없애서 콘솔에서 사용 가능하도록 할 방침.
X 가 없는 콘솔용 입력기를 별도 개발할 필요가 없어지겠죠.

미래에, X 또는 그래픽 환경에 의존성이 없는 Linux IM API Standard 이런 걸 제안을 할 것입니다.
GNOME 환경에 ibus 가 통합되어 있어서 불편한 부분이 있습니다.
미래에 GNOME 프로젝트에 Linux IM API Standard 이런 걸 제안하여
Linux IM API Standard 를 지원하는 모든 입력기가 GNOME 에 있는 키보드 서비스를 이용할 수 있다면 좋을 것입니다.
아울러 Qt 쪽도 마찬가지일거고,,, 리눅스 기반 콘솔용 게임기가 미래에 나올지도 모르겠는데,
이런 곳에도 사용할 수 있도록 X 의존성이 없는 Linux IM API Standard 를 설계하면 좋을 것입니다.
개발자들은 통신 프로토콜 알 필요가 없이 그냥 Linux IM API 를 사용하면 개발도 편할 겁니다.
세부 구현은 각 입력기가 알아서 통신 구조로 할지 비통신 구조로 할지 알아서 결정할 일.

[size=200:2ik31gf2]이제 다솜 프로젝트는 한글 입력기 기능을 넘어서 Linux IM API Standard 제안을 목표로 합니다.
그 일환으로 중국어 입력 기능에 도전할 것입니다.[/size:2ik31gf2]

[size=150:2ik31gf2]모두 감사합니다. 별일도 아닌 일에 짜증 부려서 죄송합니다. 잠을 너무 못자서 그런가봅니다.
죄송스럽고 감사합니다.[/size:2ik31gf2]

onionmixer
Posts: 4
Joined: 2015/11/25 Wed 4:29 pm

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by onionmixer » 2015/11/25 Wed 4:52 pm

새로운 한글 입력기가 나왔다고 해서 찾아보다가...
여기외에는 딱히 토론의 장이 없길래 가입까지 해서 뒤적거려보고 있습니다.

github profile 에서 libhwp 를 보고 설마..했네요.....-.-;


부디 마음상하시는일 없이 꾸준히 개발하실 수 있기를 응원합니다.
일반 사용자 입장이라 말로만 이럴수밖에 없는것도 죄송하구요......

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/11/30 Mon 7:34 am

dasom 1.2 나왔습니다.
https://github.com/dasom-im/dasom/releases/tag/1.2

dasom-gtk 1.2 나왔습니다.
https://github.com/dasom-im/dasom-gtk/releases/tag/1.2
이벤트 후킹 기능을 기본값으로 끕니다. 관련 이슈 https://github.com/dasom-im/dasom-gtk/issues/1

dasom-qt 1.2 나왔습니다.
https://github.com/dasom-im/dasom-qt/releases/tag/1.2

dasom 1.2 시대에 들어서 한글을 이용하기 위해서는

dasom 1.2
dasom-gtk 1.2
dasom-qt 1.2
dasom-jeongeum 1.1

네 가지를 설치하셔야 합니다.

그리고, 개발하면서 손실이 지속적으로 발생하고 있습니다. 따라서 손실을 조금이라도 메우고자 기부하는 방법을 알려드립니다.

저의 페이팔 계정 hodong@cogno.org 으로 기부할 수 있습니다.
저의 플래터 계정 https://flattr.com/profile/hodong 으로 기부할 수 있습니다.
은행 계좌로 기부할 수 있습니다. 우리은행 1002-643-467554 (예금주: 김호동)

감사합니다.

hodong
Posts: 200
Joined: 2014/12/23 Tue 3:29 am
Contact:

Re: 리눅스에서 한글 입력기 참 어려운 주제인것 같습니다.

Post by hodong » 2015/12/01 Tue 1:53 am

다솜 1.2 나왔다고 우분투 포럼에 댓글을 2개 썼고, 구글 플러스에도 글을 썼습니다. 기부하는 사람은 아무도 없었습니다.

제가 2015년 1월부터 11월까지 손실본 금액이 550만원 정도 됩니다. 12월부터 다솜 입력기 관련하여 손 놓고 있으면 누적 손실액은 550만원으로 고정됩니다.

코드 기여 또는 기부가 활성화되어야 한국어, 한글 환경이 개선될 거에요. 누군가 해주겠지... 세월이 흐르면 변하겠지... 정말 그럴까요?
한국어,한글 문제를 해결하고자 하는 사람이 극소수이다보니 10년 전이나 지금이나 한글 입력 환경이 개선이 되지 않는 겁니다.
뭔가를 개발하거나 패치를 작성하는데에는 많은 시간이 소비됩니다. [u:3hgiodf6][b:3hgiodf6]이로 인하여 개발자에게 필연적으로 손실이 발생하게 됩니다. 그 손실을 계속 감당할 수 있으면 개발을 계속하는 거고 감당하기 어려우면 유지보수만 해야겠죠. 개발자가 잘 몰라서 못 하는 것도 아니고 프로그래밍 기술이 부족해서 개발이 지연되는 것이 아닙니다. 개발을 하면 할수록 누적 손실액이 점점 커가는데 그것 때문에 개발을 보류하게 되는 거죠.[/b:3hgiodf6][/u:3hgiodf6]

dasom-settings --- 다솜 입력기 GUI 설정 도구... 이런 거 있으면 좋겠죠. 그런데 그걸 만들기 시작하면 손실액이 200~300만원 추가적으로 발생하는데... 손실을 최소화하면서 개발하다가 이슈가 들어오면 바로 처리를 못할 수도 있습니다. 바로 처리하지 않으면 사람들은 제가 실력이 부족하여 바로 처리하지 않는다고 생각하겠죠. 혹시라도 그런 글이 올라오면 [b:3hgiodf6][u:3hgiodf6]자존심 상하기 싫어서 개발 일정을 강행하여 잠못자고 경제적 손실이 발생[/u:3hgiodf6][/b:3hgiodf6]합니다. 저번 달에 있었던 사례입니다.
개발자에 대한 존중감이 없어서 그런 일이 발생하는건데, 그러니 개발하고 싶은 생각이 나질 않습니다. 개발 시작하기가 좀 겁납니다.

개발하면서 이런 말 못할 속사정이 있습니다. 게다가 deb 패키지 말인데요... 제가 버박에 리눅스 1종 설치하여 deb 파일 제공할 때마다 약 1만원 정도의 손실이 발생합니다. 32비트, 64비트 총 8종이니까... 릴리즈하고 deb 파일 만들면 약 8만원 정도 손실이 발생합니다.
이런 거는 각 사용자분들이 직접할 수 있는거고, 아니면 다른 사람이 만들수 있는 겁니다.
저 말고 다른 분이 PPA 를 운영하여 deb 파일을 제공하여도 되고,
저 말고 다른 분이 데비안/우분투 쪽에 wish list 버그리포트를 보내셔도 됩니다.
그 모든 걸 저에게 기댈 필요가 없는거죠. 그런 걸 해주시는 분도 없습니다.
게다가 설치 방법, 사용 설명서(manual) 같은 건 제가 작성한 글을 토대로 다른 분이 다시 작성하여 사용자들을 지원하는 방법도 있습니다.

그리고 저도 남들처럼 퇴근 후 쉬고 싶고, 주말에 자고 싶습니다.
그래서 기능 추가, 설정 도구 개발은 웬만해서는 하지 않을 것이고, 손실, 손해가 회복될 때까지 유지보수만 할 것입니다.
수년 후 언제가 회복이 되면 dasom-pinyin 을 개발하여 중국에 선보일 것입니다.

왜 한글 입력 환경이 10년전이나 지금이나 마찬가지인지 모두들 이해 하셨으리라 생각합니다.

---
이번에 알게된 소액 기부 Flattr --- 참 괜찮은 서비스 같습니다.

http://softblow.tistory.com/853
http://besuccess.com/2013/08/flattr/

github.com 의 계정에 있는 프로젝트와 연동도 된다고 합니다. 별표를 클릭하는 것만으로도 소액 기부가 가능하다고 하네요.
다만, github.com 의 organization 에 있는 프로젝트의 경우 안 된다고 하네요. organization 에 있는 멤버에게 Flattr 를 통하여 직접 기부하는 방법도 있습니다.

Post Reply