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

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

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

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

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

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

이상입니다.

예전에 유닉스 시대에는 입력 방식이 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 는 비동기 방식의 필연적 버그 때문에 탈락,…
그 비전을 다솜 입력기가 제시하고 싶습니다.

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

아래 방법은 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]

다솜 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

이클립스 버그를 회피하는 코드가 적용되었습니다.
감사합니다.

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

Fcitx 써보세요
뒤에 마우스 버그말고는 쓸만해요

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]

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

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

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

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 (예금주: 김호동)

감사합니다.

다솜 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 를 통하여 직접 기부하는 방법도 있습니다.

hodong 님 글을 읽어보니 너무 무리하신 것 같아요. 쉬엄 쉬엄하셔요.

안녕하세요.

오랫만에 지나가다…
잘 알지도 못하면서, 염치불구하고, 아주 조금 제가 아는거랑 달라서 제가 잘못알고 있나 해서…(크게 중요하지 않을수 도 있는건데…)

[quote="hodong":qfbp4d1c]
그 사람들이 [b:qfbp4d1c]CJK[/b:qfbp4d1c] 권 사람이라면 끝글자 버그를 그냥 두지 않았겠죠. 자기들이 사용하면서 불편을 겪을게 뻔하니까요.
[/quote:qfbp4d1c]

제가 개발도 잘 모르고, 영어를 잘 못해서, 오해 를 산것일수도 있는데,
scim 입력기 개발할때 중국, 일본 개발자들과 메일을좀 많이(?) 주고 받고 한적있는데,
우리보다 해당부분에 불편해 하지 않기때문에 해당 버그에 이야기 할때도 조금 힘들었던 기억이 있었던거 같은데, CJ 쪽도 끝글자 버그에 민감한가요?
전 유독 우리네의 슬픈(아픈?) 부분으로 알고 있었거든요…

제가 전에 표현을 잘못한 부분이 있습니다.

아침에 댓글 2개 달았었는데, 삭제했습니다.

중국어와 일본어는 사람들이 명시적으로 commit 을 합니다.
무슨 말이냐면, 우리가 한국어를 입력할 때, 조합 중인지 아닌지 신경쓰지 않고 입력하는데,
중국어나 일본어는 입력할 때 조합 중인지 아닌지를 신경써서 입력합니다.
후보 목록창에서 마우스를 클릭하여 문자를 commit 하거나, 엔터키를 눌러서 commit 합니다.

우리가 한자를 입력할 때 한자 후보 목록창에서 마우스를 클릭하거나 엔터키를 눌러서 commit 하는 것을 생각하시면 되겠습니다.

제가 그런 차이점을 몰랐던 것은 아니고, 말 표현에 실수가 있었습니다.
전에 2015년 1월 경, 제가 보고한 것이 있습니다(최초 보고자는 아닙니다. 오해 없으시기 바랍니다.) 여기에 설명이 나와 있습니다. 제 블로그에도 [b:o8faczle]아주 자세하게[/b:o8faczle] 설명이 있긴 한데… 블로그 재개는 아직 미정입니다.(년간 운영비가 10만원 가량 예상되는데… 금전적 부담 때문에 재개를 아직 못하고 있는 것이니 오해 없으시기 바랍니다.)

https://code.google.com/p/ibus/issues/detail?id=1264

개발자가 프로그래밍 관련 지식이나 기술을 잘 모른다는 식으로 오해가 발생하는데, 이런 식의 오해는 앞으로 없었으면 좋겠습니다.
그리고, 끝글자 버그는 Xlib 와 전혀 관계가 없습니다. 또한 끝글자 버그는 XIM 과도 전혀 관계가 없습니다.
그리고, eclipse 개발자가 Xlib 를 몰라서 끝글자 버그가 발생하는 것이 아닙니다.

제가 하고 싶은 얘기는 이러한 끝글자 버그를 잡으려면 사람들의 개발 참여가 필요하다는 의미입니다.
주 개발자가 영미권 사람이기 때문에 한글 입력 방식을 잘 모릅니다.(프로그래밍 관련 기술이나 지식, 프로그래밍 실력이 부족하다는 의미가 아닙니다.)
그래서 CJK 권(K 는 한국어를 의미합니다. K 를 빼고 CJ(중국어, 일본어) 만 논할 필요도 없습니다.) 사람이 주 개발자라면 끝글자 버그를 그냥 놔두겠느냐는 의미이고,
그렇다면… 우리는 어떻게 해야 할까요?
주 개발자가 한글 입력 방식을 이해할 수 있도록 버그 리포트 보내고 고쳐주지 않으면 직접 개발을 해야 한다는 의미로 받아들이시면 됩니다.

[quote="bluetux":o8faczle]안녕하세요.

오랫만에 지나가다…
잘 알지도 못하면서, 염치불구하고, 아주 조금 제가 아는거랑 달라서 제가 잘못알고 있나 해서…(크게 중요하지 않을수 도 있는건데…)

[quote="hodong":o8faczle]
그 사람들이 [b:o8faczle]CJK[/b:o8faczle] 권 사람이라면 끝글자 버그를 그냥 두지 않았겠죠. 자기들이 사용하면서 불편을 겪을게 뻔하니까요.
[/quote:o8faczle]

제가 개발도 잘 모르고, 영어를 잘 못해서, 오해 를 산것일수도 있는데,
scim 입력기 개발할때 중국, 일본 개발자들과 메일을좀 많이(?) 주고 받고 한적있는데,
우리보다 해당부분에 불편해 하지 않기때문에 해당 버그에 이야기 할때도 조금 힘들었던 기억이 있었던거 같은데, CJ 쪽도 끝글자 버그에 민감한가요?
전 유독 우리네의 슬픈(아픈?) 부분으로 알고 있었거든요…[/quote:o8faczle]

버그 리포트도 못하겠고, 개발도 못하겠고…
그럴 경우, 누군가가 개발을 하면 되는데… 하려는 사람이 아무도 없어서 버그가 5~10년 동안 지속되고 있다면,
입력기 개발자에게 이러쿵 저러쿵 그럴 것이 아니라…
문제가 있는 프로그램에 대하여, 그 프로그램 제작자에게 돈을 주고 개발 의뢰를 하는 방법도 있습니다.

오해 소지를 없애기 위해 구체적으로 설명드리자면,
이클립스에 있는 끝글자 버그가 중국 사람, 일본 사람에게는 민감하지 않아서 중국, 일본 사람은 별 관심이 없어서 버그가 방치되고 있고, 한국 사람들에게는 민감한 버그이지만 고치려 하는 사람이 없는 상황에서
[i:1elxoair]‘나는 꼭 이클립스를 써야하는데’[/i:1elxoair]… 그 버그 때문에 힘들다면 버그 리포트를 검색해보고 검색된 것이 없다면 그쪽에 버그리포트 보내시고, 그래도 해결이 안 되면 이클립스 개발자에게 돈을 주고 개발 의뢰를 하던가… 아니면 그 버그를 고칠 수 있는 사람 또는 회사에게 돈을 주고 개발 의뢰를 해야 그 버그가 고쳐진다는 의미입니다.

즉, 시간이 5~10년 흐르면 자연히 없어지는 버그가 아니라, 돈을 받던 안 받던 누군가가 코드를 수정해야 해결이 되는 것입니다.
이클립스 끝글자 문제는, 다솜 입력기 문제도 아니고 다솜 입력기 개발자인 제가 이클립스를 사용하지를 않는데다가 자바를 잘 모릅니다.(모른다고 표현하니 무시할까봐 걱정이 되는군요. 예전에 자바로 어플 개발 해봤는데… 자바 사용하지 않은지가 오래되어 지금은 잘 모릅니다.) 제가 사용하지도 않는데 제가 대신 버그 리포트 보내지도 않을 것이고, 이클립스를 수정하지도 않을 것입니다.
다솜 입력기가 좋네 안 좋네… 이런 글은 상관이 없는데,…
개발자에 대한 추측성 글은 절대 사양합니다.
제발 당부 부탁드립니다.
자꾸 오해가 발생하면 개발에 지장이 생깁니다. 이거는 제가 갑님이라서 겁주려고 하는 의미가 아니라…
이름 내놓고, 소스코드 공개하여 개발을 하는 것인데… 심적 부담이 커지기 때문입니다.
그리고 이런 상황이 자꾸 발생하면 한국어/한글 관련하여 오픈소스로 개발하고자 하는 사람 점점 줄어듭니다.
(오픈소스? 이름 실명으로 까고, 소스 까놓고 개발하는 겁니다)
그리고 사실 제가 유별난 사람도 아니고 민감하게 받아들이는 것도 아닙니다.
이러쿵 저러쿵 피곤하면 결국 개발자는 신경 끄고 방치하는 수순을 밝게 됩니다.
그런 프로젝트들 많습니다.
그나마 다행인게… 다솜 입력기가 다국어 입력기라는 것.

한마디로 표현해서,

아니… 이클립스 버그를 이클립스 개발자한테는 찍소리 못하고
왜 다솜 입력기 개발자한테 저한테 자꾸 뭐락뭐락 그러냐고요!!!

다솜 입력기 버그 아니거든요!!! 이클립스 버그에요
이클립스 개발자한테 말씀하세요 !!!

[quote="hodong":82343jpv]한마디로 표현해서,

아니… 이클립스 버그를 이클립스 개발자한테는 찍소리 못하고
왜 다솜 입력기 개발자한테 저한테 자꾸 뭐락뭐락 그러냐고요!!!

다솜 입력기 버그 아니거든요!!! 이클립스 버그에요
이클립스 개발자한테 말씀하세요 !!![/quote:82343jpv]

혹시 저에게 하신 이야기라면 무슨 오해가 있으신거 같습니다.

전 그는 위에 잘 설명해주신대로 CJK 중에서도 우리나라면 commit 필요 없는 체계라서 그부분을 같은 CJK 권에 있는 중국과 일본 개발자들도 크게
필요성을 못느껴우 이야기 하신것처럼 우리 스스로 개발하거나 이야기 해야 하는것으로 알고 있어 문의 드렸던 겁니다.
예전에 scim 개발시 제가 잘 설명 못하고 해결 못하니까 당시에 나비 개발자 최환진님을 소개해서 해당 부분을 해결한 scim-hangul
이 만들어지는 과정을 옆에서 본 가물마물한 기억에서 문의 했던거지… 어떠 테클이나… 의의제기는 아니였습니다.

이클립스 버그등과 제 질문과는 아무 상관없습니다.(전 이클립스 사용하지도 않습니다. 이멕스 유저에요… --:wink:

아무튼…
제 설명에 오해의 소지가 있었음을 인정합니다.
그래서 위에 중국어,일본어 입력 방식에 대해 상세 설명을 했습니다.
상세하게 설명하면 시간이 또 소모되므로… 편의상 묶어서 CJK 라고 표현한 겁니다.
제가 뭘 몰라서 그렇게 쓴 글은 아니고, ibus 버그 리포트에도 해당 내용이 나와 있습니다.
제 블로그에는 수차례에 걸쳐서 시리즈물로 상세하게 작성을 했습니다.
말로 설명하다보면 오해에 오해가 계속 되는바,

CJK 입력 방식에 대해서는 유튜브에 동영상을 보시면 되겠습니다.

ibus pinyin, fcitx pinyin, anthy, chinese, japanese 이런 검색에 입력해서 보시면 되겠습니다.

[size=200:3ipyir61]아무튼… 이클립스 끝글자 버그는…

2012-02-13 12:30:06 EST

Bug 371397 - When I enter the Korean sentence : Last character is gone.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=371397[/size:3ipyir61]

여기에 말씀해주세요.
2012년 2월에 보고된 버그인데… 지금이 2015년이니까…
4년 동안 케케묶은 버그네요…

[quote="bluetux":3ipyir61][quote="hodong":3ipyir61]한마디로 표현해서,

아니… 이클립스 버그를 이클립스 개발자한테는 찍소리 못하고
왜 다솜 입력기 개발자한테 저한테 자꾸 뭐락뭐락 그러냐고요!!!

다솜 입력기 버그 아니거든요!!! 이클립스 버그에요
이클립스 개발자한테 말씀하세요 !!![/quote:3ipyir61]

혹시 저에게 하신 이야기라면 무슨 오해가 있으신거 같습니다.

전 그는 위에 잘 설명해주신대로 CJK 중에서도 우리나라면 commit 필요 없는 체계라서 그부분을 같은 CJK 권에 있는 중국과 일본 개발자들도 크게
필요성을 못느껴우 이야기 하신것처럼 우리 스스로 개발하거나 이야기 해야 하는것으로 알고 있어 문의 드렸던 겁니다.
예전에 scim 개발시 제가 잘 설명 못하고 해결 못하니까 당시에 나비 개발자 최환진님을 소개해서 해당 부분을 해결한 scim-hangul
이 만들어지는 과정을 옆에서 본 가물마물한 기억에서 문의 했던거지… 어떠 테클이나… 의의제기는 아니였습니다.

이클립스 버그등과 제 질문과는 아무 상관없습니다.(전 이클립스 사용하지도 않습니다. 이멕스 유저에요… --;)[/quote:3ipyir61]

[quote="hodong":1qpshci9]아무튼…
제 설명에 오해의 소지가 있었음을 인정합니다.
그래서 위에 중국어,일본어 입력 방식에 대해 상세 설명을 했습니다.
상세하게 설명하면 시간이 또 소모되므로… 편의상 묶어서 CJK 라고 표현한 겁니다.
[/quote:1qpshci9]

그냥 우연히 아주 오랫만에, 지나다 아무 생각 없이 글을 읽다

편의상 묶어서 표연 하신줄 모르고 해당 부분만 질문 했던 겁니다.

보통의 끝글자 버그가 발생하는 이유가, 잘 설명해주신것처럼 중국, 일본보다도, 우리나라만 좀더 다르다 보니,

여러 좋으신 개발자분들이 여러 OS 에서 한글 입력기를 따로 만들어 주심에도, 입력기가 OS 메인 스트림에 들어가는게 좀더 더디게 되고 그로 인해
중국 일본보다도 상대적으로 좋은 입력기를 개발, 과 사용하기 힘든 환경이고 개발자들이 좀더 고생하고 있다는 생각에 한이야기 였습니다.

저도 버그 리포팅은 잘하는 편이지만, 이클립스를 사용하지 않으니 해방 버그에 솔직히 관심 없습니다.

bluetux 님 죄송합니다.

다 아시겠지만,
중국어 입력기, 일본어 입력기는 한국어 입력기보다 만들기가 휠씬 어렵습니다.
그런데도 그들은 잘 쓰고 있는데,

이 이유는,
여러가지 이유로 중국인, 일본인 참여가 높아서 그렇습니다.

그외 비중있는 이유가 없습니다.

여러가지 이유로 한국 사람들은 참여는 서로 안 하려고 하고,
중국인, 일본인들이 만든 다국어 입력기 프레임워크에 무임 승차하여
끝글자 버그를 5년 이상 겪고 있는 거죠.
(참고로, 한글 입력기 nabi, imhangul 은 아주 훌륭합니다. 끝글자 버그 없습니다.)
저도 그 버그를 5년 이상 참다 참다가…
ibus 가 GNOME 에 통합되면서 더 불편해져서 리눅스 갖다버릴려다가…

아무튼 늦었지만, 우리도 다국어 입력기 프레임워크를 만들었습니다.

감사합니다.

뭐 사실 어떤 애기를 해도 변명이죠. 저도 프로그래밍을 잘 하는것도 아니고… 그냥 불편한대로 쓰고있으니 저 역시 무임승차는 맞는것 같습니다.

제가 다른 프로젝트를 해도 사실 제 만족에 의해서 하는거니 저도 알리는것 외에는 별다른 방법도 없구요. :D

deb 패키지 문제는 정말로 문의만 드려본것입니다만… 그게 부담이 되셨다면… 죄송합니다…(꾸벅)

연말에 몸 상하지 않게 쉬엄쉬엄하세요… 응원합니다. 화이팅!