Translate

레이블이 nimf인 게시물을 표시합니다. 모든 게시물 표시
레이블이 nimf인 게시물을 표시합니다. 모든 게시물 표시

2018년 9월 3일 월요일

꿈의 입력기 nimf 이야기 23화 - 제가 오픈소스를 바라보는 시각

제가 원래 개발자가 아니라 원래가 일반 사용자였습니다.과거 MS윈도우 품질이 개떡같아서 유닉스 사용하다가 유닉스가 비싸고 망해서 리눅스를 사용하고 있는 거고 리눅스 품질이 지금은 우수하지만 예전에는 문제가 진짜 많았죠. 그렇게 리눅스를 지금까지 사용해오고 있습니다.

그런데 리눅스에서 hwp, 공인인증서, 한글 문제 참 개짜증납니다.
그래서 공인인증서, hwp 안티 활동 많이 했고,
공인인증서 플러그인에 대한 취약점을 오픈웹 쪽에 제공했고,
리눅스에 키보드 보안 프로그램 설치하는게, 정신나간 발상이라 생각하여
아마 2009년쯤 랜덤 스크린 키보드 아이디어를 오픈웹쪽에 제공하여
아마 2010년쯤 랜덤 스크린 키보드 방식이 인터넷 뱅킹에 먼저 적용되었고,
수년 전부터 현금 인출기에서도 널리 사용되고 있습니다.
랜덤 스크린 키보드 방식을 제가 제일 먼저 생각해냈는지 아닌지는 저도 모릅니다.

그러면서 항상 드는 생각이 개발자들은 뭐하고 이런 걸 내가 하냐는 피해 의식.
hwp 도 마찬가지입니다.
그 당시 C언어를 몰랐습니다. 믿으시겠습니까?
그래서 2010년에 ruby 언어로 ruby-hwp 로 만들다가
아마 2012년 쯤, C언어를 몰라서 vala 언어로 libhwp 를 개발하기 시작했습니다.
https://gitlab.com/hodong/libhwp/commit/50907b4a6e0678a2979f98af3c38f18ce3b4e021
구라 같죠? ㅋㅋㅋ C언어를 차츰 공부하면서 C언어로 만들어갔습니다.
그렇게 C언어를 공부하기 시작했습니다.

당시에도 한글 입력 문제가 있었습니다.
libhwp 개발 때문에 시간이 없어서 손을 못데고 있다가,
libhwp 개발을 중단하고 시간이 확보되어,
한글 타자 연습 프로그램이 있었으면 좋겠다는 생각에
새로 만들기보단 klavaro 프로젝트에 한국어 지원을 하였고,
2014년 끝글자 버그 문제 때문에 도저히 못참아 개짜증나서 리눅스 갖다버리고 MS 윈도 사용하려고 하다가 끝글자 문제를 해결하고자 dasom 을 개발하고 그걸 포크하여 nimf 에 이르고 있습니다. libhwp 그만둘 당시 두 번 다시 오픈소스 안 한다고 했었는데, 또 다시 나타난 이유가 그렇습니다.
아무도 해결해 주는 사람이 없습니다. 일반 사용자가 얼마나 빡쳤으면 컴퓨터 공부해서 개발하고 이러고 있을까요?


그동안 블로그, SNS, 저장소 생성 삭제, 아이디 생성 삭제 수십 번 한 거 같습니다.
오해하시는 분들이 많으신데 기분 나빠서 삭제하는 게 아니라, 저는 성격이 필요없으면 삭제하는 성격입니다.
지마켓 사용하다가 11번가로 갈아타면 지마켓 아이디 삭제하고,
인스타그램도 사용하다가 필요없으면 아이디 삭제하고 뭐 그런거에요.
제가 사람들에게 알려지기 전부터 프로젝트, 블로그 생성/삭제 엄청 많이 했습니다.
워드프레스 블로그, 구글 사이트 블로그, 블로거, geekforum, joomla, drupal, jekyll, hugo 등 수십 번 블로그를 생성, 삭제를 했지요.
트위터 계정도 수십 번 생성 삭제를 했고, 카카오톡, 페이스북도 마찬가지고..
SNS 등 온라인 활동에 큰 의미를 두지 않습니다. 원래 이런 걸 하지 않았습니다.
컴퓨터도 수개월 사용하다가 필요 없으면 팔고, 수개월에서 수년 후 다시 필요하면 다시 구입하는 등 원래 성격이 그렇습니다.
현재 블로그도 삭제하고 갈아업고 싶은데, 뉴스기사 링크되어 있어서 그거 삭제하면 욕 대박 얻어먹을거 같아서 그러지 못할 뿐이죠.
그리고 github 사용하다가 bitbucket 으로 갈아타면 github 계정을 삭제하고,
bitbucket 에서 gitlab 으로 갈아타면 bitbucket 계정 삭제하고..
은행 계좌도 마찬가지입니다. 갈아타면 기존에 있던거 모조리 삭제합니다.

신경 쓰는거 딱 질색이라 원래 성격이 그래요.

ruby-hwp, libhwp 이거는 개인 프로젝트입니다.
과거에 libhwp 가 널리 알려져서 이게 단체 프로젝트로 오해하고 계신 분들도 많으시던데,
개인 프로젝트입니다. 당시 기여자분이 1분 계셨던 것 같은데 컴파일 속도 개선에 대한 기여였고 비중이 낮았습니다.
메일링 리스트 삭제는 욕을 먹을 만한 부분이고 그거는 제 잘못이라 인정합니다.
개인 프로젝트가 그거 말고도 폰트, 사전, 형태소 분석기 이런 게 있었고 모두 삭제했습니다.

그러면 dasom 으로 넘어와서 볼 때, dasom 초기는 완전한 개인 프로젝트였습니다.
dasom 저장소를 삭제했다고 오해하시는 분들도 계시는 것 같은데,
맨 처음에 github.com/cogniti/dasom 이게 주소였습니다.
제 성격상 스스로가 다 망가뜨리고 파괴할 것 같아서
dasom-im 그룹을 만들고 거기로 옮겨놓은 후 github.com/cogniti/dasom 저장소를 삭제했지요. 은행 계좌도 안 쓰면 삭제합니다. 원래 성격이 그래요.

그리고 머리 아프고 피곤한거 딱 질색하는 사람이라 직업이 개발이 아닙니다.
프로젝트 하면서 개발 능력이 향상되는데 그게 본업에 도움이 전혀 되지 않습니다.
github.com/cogniti/nimf 저장소 삭제한 거는 nimf 가 오픈소스가 아니다는 것에 대한 항의 차원에서 그런 거에요.
nimf 저장소 삭제하고, 소스코드와 이슈 내용을 블로그에 다운 받을 수 있도록 했을 때,
이것도 오픈소스다. 폐쇄 소스라면 소스코드를 어떻게 다운받냐 이렇게 항의한 거죠.
기분 나뻐서 삭제한 게 아닙니다.
nimf 를 사용 못 하도록 할 목적이 아니였기 때문에 현재는 gitlab 에서 호스팅하고 있습니다.
그러다 나중에 gitlab 보다 더 좋은 호스팅 업체가 있다면 당연히 거기로 옮겨갈 거고,
옮긴 후 gitlab 을 삭제하겠죠. 만약 그럴 계획이 있다면 공지가 있을 겁니다.

그리고 이제 본론이 시작되는데,
2016년 nimf 이슈 게시판을 폐쇄한 적이 있습니다. 시간 손실이 커서 개발에 방해되었기 때문입니다. 대다수의 이슈는 저 좋으라고 하는게 아니라 자기들 좋으려고 하는거죠.
이렇게 얘기하면 싸가지 없다고 백만 안티 양성될 것 같은데...ㅎㅎ
어쨌든 저는 하고 싶은 말을 안 하면 속병이 생기기 때문에 합니다.
코드 기여는 얘기가 다른데 코드 검토하려면 시간이 또 소비되겠죠.
그래서 또 짜증나고. 왜냐면 그만큼 잠을 못 자게 되고 너무 피곤하면 회사 쉬어야 합니다.
당연히 벌 수 있는 돈을 못 벌면 그게 손실이 아니면 뭡니까.

저는 오픈소스를 할 형편이 안 됩니다.
오픈소스 관련 협회, 모임, 회사에서 참석해달라고 연락이 10여 건 온 적이 있는데,
밥 먹고 사냐고 바쁘고 남는 시간에 개발하냐고 시간 없어 모두 거부했습니다.
그랬더니 서운하시다고 하시더군요.
그런데 제 입장에서는

아니 어떻게 libhwp, nimf 를 무상으로 제공하는데
내 개인 시간까지 님들한테 제공해야 하냐. 내 개인 시간까지 오픈소스로 풀어야 하냐.
님들은 시간이 남아 돌아 모임도 개최하고 참석도 하는데 난 그럴 시간 자체가 아예 없다.
참 팔자 좋은 사람들아.


저는 딱 이 정도 밖에 생각하지 못하는 그릇입니다.
게다가 nimf 가 debian 저장소 이런 데 탑재되면 사용자수 늘어나서 피곤할텐데...
nimf PPA 만들면 사용자수 늘어나서 피곤할텐데...
잠깐이지만 제가 nimf 안티 활동을 하기도 했습니다.
지금은 nimf 안티 활동을 하지 않습니다.
제 성격상 불특정 다수를 상대해야 하는 오픈소스 프로젝트 이런 거 하면 진짜 스트레스 엄청 많이 받습니다. 본인 스스로 생각해봐도 오픈소스를 할 그릇이 못 되는 것 같습니다.

그러면 안 하면 되지 왜 하냐고 묻는 분들 계실 겁니다.
제가 아무 것도 안 하고 손 놓고 있었으면,
리눅스에 아직까지도 키보드 보안 프로그램 설치를 강요당하고 있었을지도 모르고,
libhwp 는 지금까지도 없었을 것이고,
klavaro 한글 타자 지원도 없었을 것이고,
끝글자 버그 없는 다국어 입력기 프레임워크도 없었을 것입니다.
이제 곧 리브레오피스, geany, 이클립스의 끝글자 버그를 해결하려고 하는데,
10여년간 지속된 끝글자 버그를 해결해주는 사람도 없었을 것입니다.
이쯤되면 제가 하고 싶은 말이 뭔지 아시겠습니까?
그래 니 잘났다.. 
열심히 욕해 주세요.

제가 libhwp 할 동안 님들 뭐하셨습니까?
제가 libhwp 할 동안 끝글자 버그 없는 다국어 프레임워크 좀 만들어주실 수 없었냐고요?
제가 dasom, nimf 할 동안 응용 어플 끝글자 버그 해결하지 않고 뭐하시고 계셨습니까?
C언어 몰라서요? 번역하냐고 바쁘셨다고요? 생업, 학업에 바쁘셨다고요?
그러면 저는 돈과 시간이 남아돌아 수년간 공부하여 개발하고 이러고 있습니까?
제가 libhwp 를 지금까지도 계속 해왔다면 nimf 는 없었을 것입니다.
2010년에 nimf 를 시작했다면 libhwp 는 없었겠죠.

제가 libhwp, dasom, nimf 할 동안 님들은 어디서 뭐하시다가 이제 나타나셔서 저를 탓하고 왈가불가하냐고요...
열폭하시는 분들 많으실텐데 저를 열심히 욕하세요. 욕먹을 만합니다.
기분 나뻐서 욕하시는거 법에 저촉도 안 되고, 먹고 살기 바뻐서 제가 법적으로 어떻게 하지 못해요. 그리고 온라인 생활, 오프라인 생활이 완전히 구분되어 있어서 온라인에서 열심히 욕먹어도,제 현실 생활에 영향을 끼치지 못합니다. 명예 때문에 오픈소스 하는 거 하는거 아니니 열심히 욕해 주세요. 저는 단지 욕먹는게 싫을 뿐, 이미지로 밥먹고 사는 사람이 아니니 명예 훼손되어도 상관없습니다.

제가 개발을 할 여건이 되지 않고, 오픈소스 프로젝트할 그릇도 못 되고 그럴 인격도 못되요.
스트레스 받아서 지인들한테 얘기하면 너 미쳤다고 지인들도 하지 말라고 말려요.
찌질하게 살지 말고 니 앞가림이나 잘 하라고 그런거 왜 하냐고.
내가 리눅스를 왜 사용해서 이 고생일까.. 그냥 MS윈도 사용했더라면 큰 불편없이 살아왔을텐데.. 이런 생각이 많이 든답니다. 리눅스 사용하면서 버린 시간에 일을 했으면 지금보다 먹고 살기 괜찮았을텐데..

오픈소스면 수정 배포 가능하지 않는가, 스스로 해결하면 될 걸, 아니 그걸 왜 나한테 해달라고 하냐고?
저는 딱 이 정도 밖에 생각하지 못하는 것 같아요.
오픈소스할 인간이 못 되는 거죠. 제 스스로도 알아요.

10여 년간 한글 문제 해결도 못하고 있는데
오픈소스 이 딴거 개나 줘버리라고 하세요.
누가 누구한테 왈가불가야!
오픈소스 개발자님, 관계자님들
니나 잘 하세요. 참 잘나셨습니다.

저는 오픈소스에 대해 이렇게 생각하는 사람입니다.

저를 믿고 따라와 주신 분들, 지지자 분들, 기여자분들께 참 죄송하다는 말씀을 드립니다.
제가 이런 인간입니다.
오해는 말아주세요. 프로젝트 포기, 방치, 중단, 저장소 삭제 이런 거 아닙니다.
저는 사실 욕먹어도 쌉니다. 많이 많이 욕해주세요.
그리고 사실 저는 오픈소스에 낚인 거 지금도 엄청 후회하고 있습니다.
여러분들은 제가 하는 프로젝트 이런 거에 낚이지 마시고 본업에 충실하세요.
말을 너무 막해서 죄송하고, 원래 성격이 그런데 연기하거나 참으면 병 되요.
너무 제 입장만 생각하는거 저도 알아요.
기분 많이 상하셨을텐데, 알고 보니 저 인간 개또라이네..
참으면 병 되요. 열심히 욕 해주세요.
긴 글 읽어주셔서 감사드리고, 별 내용도 없는 피해의식에 가득 찬 글인데, 시간을 빼앗아서 죄송합니다.
학생 분들은 학업에 열중해 주시고, 상처 받으신 젊으신 분들도 계실텐데,
거듭 죄송하다는 말씀을 드립니다.
스트레스 받아도 어디 말할데도 없고. 이렇게 스트레스를 풀어서 죄송하네요.
제가 일반 사용자 출신이다보니,
리눅스 사용하면서 소프트웨어 품질 때문에 개빡친 적 엄청 많아서
님들은 nimf 사용하시면서 빡치지 말라고 품질 관리는 열심히 하고 있습니다.
저는 그것으로 만족하렵니다.
감사합니다.

2018년 8월 31일 금요일

꿈의 입력기 nimf 이야기 22화 - GTK, Qt 끝글자 버그에 대한 무력화 옵션

마우스 클릭했을 때 im 이 리셋이 되지 않아 끝글자 버그가 있는 어플이 있습니다.
GTK, Qt 어플에서 마우스 클릭할 때 im 을 리셋하지 않아 생기는 끝글자 버그를 무력화 시킬 수 있는 Reset when clicking the mouse button 옵션이 있습니다.


그림에 보이는 옵션을 ON 해주면 마우스 클릭할 때 reset 해줍니다.
geany 에 있는 끝글자 버그는 이렇게 해결할 수 있습니다.

꿈의 입력기 nimf 이야기 21화 - 프로젝트 운영을 상식적으로 하겠습니다

안녕하세요.
현재의 nimf 프로젝트는 개인 프로젝트의 성격이 강하지만
그렇다고 해서 완전한 개인 프로젝트도 아닙니다.
그동안 제가 침소봉대, 경거망동했습니다.
자꾸 이랬다 저랬다해서 죄송합니다.
최근 커밋에 경고문으로 거북하게 해서 죄송합니다.
본인도 거북했는데 사용자분들도 당연히 거북하겠죠.
제 스스로가 nimf 에 대해 안티짓을 했는데 기여자분들은 갑자기 멘붕 왔겠죠.
변명은 아니고 참 바쁘게 살아와서 삶의 여유가 없어 피해의식에 사로잡혔던 같습니다.
경고 메시지 등을 없애 2018.08.22 버전의 내용으로 원상 복구 해놓겠습니다.
휴식을 취하며 제 자신을 돌아보겠습니다.

2018년 8월 29일 수요일

꿈의 입력기 nimf 이야기 20화 - 시간은 저를 기다려주지 않습니다

여유가 없는 삶


밥먹고 살기도 바쁜데 입력기까지 신경쓰냐고 사는게 정말 힘듭니다.
출근 때문에 아침 06시 40분 쯤 기상, 퇴근하고 집에 오면 밤 22시 정도.
이슈라도 올라오면 거기 답변해 드리느냐고 잠을 01시~03시쯤 잡니다.
허위 사실 유포로 인한 명예 훼손 문제 때문에 어떻게 대처를 할까 고민하며 최근 일주일 간 약 2~3시간 자면서 생활했습니다. 과장이 아니라 시간이 진짜 없기 때문에 개발 및 유지보수를 하려면 회사를 쉬어야 합니다.
당연히 벌 수 있는데 못 버는 돈. 손실은 그렇게 발생합니다.
그게 연간 500만원에서 1000만원 정도.
발생된 손실을 메우기 위해 쉬지 않고 일하는 악순환이 반복되고 있습니다.
2015년부터 지금까지 잠을 제대로 못자고 있습니다.
건강에 당연히 문제가 생기고 탈모도 생겼습니다.
벌써 노안이 왔는지 눈도 침침하고.

이슈에 대한 답변이 늦어지고 처리가 지연될 예정입니다


현재 열려있는 이슈들은 품질 향상 관련 이슈와 HiDPI, 멀티 모니터 관련 이슈입니다.
과장이 아니라 현재의 nimf 는 품질 및 완성도가 굉장히 높아서 마땅히 개발 및 유지보수할 것도 없습니다. 베트남 입력 엔진이며 그외 언어 입력 엔진 개발, 문서 작성을 제외하고는 말이죠.
이슈가 올라오거나 답변이 달리면 이메일로 알림이 오도록 설정해 놓았었는데 알림을 모두 껐습니다. 따라서 이슈가 올라오거나 답변이 달리더라도 바로 확인하지 못합니다. 언제까지 알림을 꺼둘지는 모르겠으나 저도 남들처럼 앞으로는 제가 시간날 때 확인하도록 하겠으며 가급적 손해가 발생하지 않는 시간에 처리하도록 하겠습니다.

이슈에 대한 답변이 늦고 처리가 지연되더라도
* 독촉 메일 보내지 마시고
* 프로젝트가 중단되었다고 허위 사실을 유포하지 마시고
* 개발 또는 유지보수가 중단되었다고 허위 사실을 유포하지 마시고
* 개발자를 욕하거나(비난하거나)
* 개발자를 욕보이거나(음해하거나)
* 개발자를 탓하며 원망하는 등
이런 일 없었으면 좋겠습니다.
좀 쉬다가 인터넷 봤을 때 허위사실, 음해, 비난, 원망글 보면 제 기분이 어떻겠습니까?
제가 로보트가 아니고 감정이 있고 밥먹고 사는 사람입니다.
타 프로젝트에는 안 그러시는 거 저도 압니다.
그만큼 저에게 기대가 커서 그러시겠죠.

법적 고지와 면책 조항을 넣었습니다


신경 끄고 푹 쉬고 싶어서 법적 고지와 면책 조항을 좀 강력하게 넣었습니다.
2018.08.28 버전부터 거의 모든 파일에

# 법적 고지

Nimf 소프트웨어는 대한민국 저작권법과 국제 조약의 보호를 받습니다.
Nimf 개발자는 대한민국 법률의 보호를 받습니다.
커뮤니티의 위력을 이용하여 개발자의 시간과 노동력을 약탈하려는 행위를 금하시기 바랍니다.

* 커뮤니티 게시판에 개발자를 욕(비난)하거나
* 욕보이는(음해하는) 글을 작성하거나
* 허위 사실을 공표하거나
* 명예를 훼손하는

등의 행위는 정보통신망 이용촉진 및 정보보호 등에 관한 법률의 제재를 받습니다.

# 면책 조항

Nimf 는 무료로 배포되는 오픈소스 소프트웨어입니다.
Nimf 개발자는 개발 및 유지보수에 대해 어떠한 의무도 없고 어떠한 책임도 없습니다.
어떠한 경우에도 보증하지 않습니다. 도덕적 보증 책임도 없고, 도의적 보증 책임도 없습니다.
Nimf 개발자는 리브레오피스, 이클립스 등 귀하가 사용하시는 소프트웨어의 버그를 해결해야 할 의무가 없습니다.
Nimf 개발자는 귀하가 사용하시는 배포판에 대해 기술 지원을 해드려야 할 의무가 없습니다.

이런 내용을 한글(한국어)로 넣었습니다.
사실 이런 내용이 간결하게 이미 영어로 들어가 있습니다.

Nimf is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Nimf is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

구글 번역기로 번역해 보면

Nimf는 자유 소프트웨어입니다. 자유 소프트웨어 재단 (Free Software Foundation)이 발행 한 GNU 약소 일반 공중 사용 허가서 (버전 3 라이센스 또는 귀하의 선택에 따라)를 기준으로 이후 버전을 재배포 및 / 또는 수정할 수 있습니다.

Nimf는 유용 할 것이라는 희망으로 배포되었지만 어떠한 보증도하지 않습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증조차하지 않습니다. 자세한 내용은 GNU 약소 일반 공중 사용 허가서 (GNU Lesser General Public License)를 참조하십시오.

nimf 가 자유 소프트웨어이며 오픈소스 소프트웨어인 이유


유/무상 서비스와는 무관하게 nimf 는 무료로 배포되는 오픈소스 소프트웨어입니다.
프로젝트 처음 2015년부터 2018년 지금까지 소스코드를 무료로 이용하실 수 있습니다.
LGPL 사용권에 따라 수정/배포하실 수 있습니다.
제가, 사람들이 소스코드를 다운받지 못하도록 방해한 적도 없고,
nimf 를 돈 받고 판 적도 없고,
수정/배포하시는 것을 방해한 적도 없고,
특정 배포판을 차별한 적도 없습니다.
다만, fedora 는 rime 버전 때문에 바이너리 배포 서비스를 못해드리고 있습니다. rime 최신 버전을 rpm 으로 만들면 되는 데 번거롭고 귀찮아서 하고 싶지 않습니다.
gentoo 의 경우는 emerge 파일을 작성해야 되는데 관련 문서가 GPL 입니다. emerge 파일을 nimf 프로젝트 저장소에 넣어서 관리하고 싶은데 nimf 는 LGPL 이기 때문에 호환이 안 됩니다. emerge 파일을 위한 별도의 저장소를 만들면 되는데 관리가 번거로워 그렇게 하고 싶지 않습니다. 그리고 바이너리 패지키 배포는 사실 제가 담당해야 하는 일이 아니죠. 바이너리 패지키 배포를 하지 않는 프로젝트도 수두룩합니다.
그리고 https://opensource.org/osd 여기서 말하는 오픈소스의 정의도 모두 지켜고 있습니다.
인종이나 국가, 국민을 차별하지도 않습니다.
그래서 nimf 가 오픈소스인 것입니다.

위의 내용에 동의하지 않거나 부정하시면 nimf 를 사용하시면 안 됩니다. 뿐만 아니라 리눅스 등 오픈소스를 사용하시면 안 됩니다. 오픈소스가 원래 이런 겁니다. 그래서 상호 존중하며 협력적인 관계로 사용자분들과 개발자간에 암묵적인 룰을 지켜야하는 것인데 nimf 프로젝트에서는 서로 그게 안 된 거죠. nimf 를 돈 받고 파는 것도 아닌데도, 처음부터 지금까지 무상으로 배포하는데도 고객과 개발자의 관계가 되어버린 거죠.

오픈소스가 무엇인지 확실하게 알리고자 nimf-settings 를 실행하자마자 위 내용이 나오도록 변경했습니다.

정보 대화창에도 내용을 넣었습니다.



사실 이렇게 프로그램을 수정하는게 상당히 거북합니다. 그래도 프로젝트 방치 또는 프로젝트 폐기보다는 나은 결정이라고 생각합니다. 저도 거북한데 사용자분들도 당연히 거북하겠죠.

nimf 는 자유 소프트웨어이고 오픈소스 소프트웨어이기 때문에 이번 업데이트로 인해 경고 메시지가 거북하신 분들은 2018.08.21 버전을 다운받아서 컴파일하여 사용하시면 됩니다. README 문서에 컴파일하는 방법이 나와 있습니다. 한국어 버전이 필요하시면 구글 번역기 돌리시면 됩니다. 한국어 버전 파일을 따로 만들면 마찬가지로 관리가 번거롭기 때문에 그렇게 하고 싶지 않을 뿐 한국 사람을 차별하는 것이 아닙니다.

https://gitlab.com/nimf-i18n/nimf/tree/9db1a7c4c31ee1a810216782f1b214bfd426d4f5

https://gitlab.com/nimf-i18n/nimf/-/archive/9db1a7c4c31ee1a810216782f1b214bfd426d4f5/nimf-9db1a7c4c31ee1a810216782f1b214bfd426d4f5.tar.bz2

제가 이런 것을 못하게 하거나 방해하지 않아요. 그래서 nimf 가 자유 소프트웨어이고 오픈소스 소프트웨어인 것입니다.

바라는 점


쉬고 싶습니다. 생계에 열중하고 싶습니다.
이번 업데이트로 라이선스 위반 및 위법 행위가 더 이상 발생되지 않았으면 좋겠습니다.
리눅스 애용하면서 입력 문제 때문에 짜증나는 거 제가 왜 모르겠습니까?
저도 말이죠.. 리눅스 20여년 간 쓰면서 2014년 말에 한글 문제 때문에 하도 짜증나서 리눅스 갖다 버리고 MS윈도 사용하려고 했었습니다.
자유 소프트웨어, 오픈소스의 장점이 뭘까요?
개발자가 어떠한 사유로 못 해주거나 안 해주면, 관련 소스코드 다운받아서 공부해서 수정하거나 직접 만들면 됩니다. 관련 오픈소스 라이브러리도 풍부합니다.
문서가 없다고요? 소스코드가 문서가 아니면 뭘까요? 문서보다 더 확실하고 좋은게 소스코드입니다.
그래서 끝글자 버그 때문에 고생하다가 만든 게 2015년 dasom 이고 2015년 말 dasom을 포크하여 이름을 nimf 로 변경하여 현재에 이르고 있습니다.(포크로 수정했습니다.)
저는 이제 휴식기에 접어들 것이고 1년 중 며칠이나 될 지 모르겠지만 시간이 남아돌아 심심할 때 이슈 확인하겠습니다.
이슈 관련 개인 메일, 독촉 메일 보내지 마세요. 이럴 때는 모르는게 약입니다.

2018년 8월 28일 화요일

꿈의 입력기 nimf 이야기 19화 - 법적 고지 및 면책 조항

커뮤니티의 위력을 이용하여 힘없는 개인 개발자의 시간과 노동력을 약탈하려는 행위가 프로젝트 초기부터 지금까지 지속되고 있습니다.
과거에는 단순히 음해하는 수준이었지만 현재는 허위 사실을 유포함으로써 명예를 훼손하는 수준에 이르렀습니다.
사람들이 이슈를 작성하면 제가 스트레스를 받는 이유가 이런 이유 때문입니다.
요구를 거부하거나 신속히 해결해 드리지 않으면 자신이 속한 커뮤니티에 저를 음해하고 허위 사실을 유포하는 일이 발생하기 때문에 앞으로 법적 고지와 면책 조항이 소스코드, 프로그램, 홈페이지 등에 한글(한국어)로 추가될 예정입니다.

아래 내용은 업데이트 됩니다.

# 법적 고지

Nimf 소프트웨어는 대한민국 저작권법과 국제 조약의 보호를 받습니다.
Nimf 개발자는 대한민국 법률의 보호를 받습니다.
커뮤니티의 위력을 이용하여 개발자의 시간과 노동력을 약탈하려는 행위를 금하시기 바랍니다.

* 커뮤니티 게시판에 개발자를 욕(비난)하거나
* 욕보이는(음해하는) 글을 작성하거나
* 허위 사실을 공표하거나
* 명예를 훼손하는

등의 행위는 정보통신망 이용촉진 및 정보보호 등에 관한 법률의 제재를 받습니다.

# 면책 조항

Nimf 는 무료로 배포되는 오픈소스 소프트웨어입니다.
Nimf 개발자는 개발 및 유지보수에 대해 어떠한 의무도 없고 어떠한 책임도 없습니다.
어떠한 경우에도 보증하지 않습니다. 도덕적 보증 책임도 없고, 도의적 보증 책임도 없습니다.
Nimf 개발자는 리브레오피스, 이클립스 등 귀하가 사용하시는 소프트웨어의 버그를 해결해야 할 의무가 없습니다.

2018년 8월 23일 목요일

꿈의 입력기 nimf 이야기 18화 - 리브레오피스 버그가 nimf랑 뭔 상관?

이 글을 이제서야 봤는데 이 사람들은 nimf 개발자인 제가 리브레오피스 버그를 해결해줘야 한다고 생각하는 모양입니다.
게다가 오픈소스 프로젝트는 무상 서비스를 제공해야 한다고 생각하는 것 같습니다.
유상 서비스를 제공하면 오픈소스가 아니라고 판단하시는 것 같습니다.
오픈소스에 대해 대단히 잘못 알고 계신 것 같은데 이런 분들은 오픈소스 소프트웨어를 사용하시면 안 됩니다. 오픈소스 소프트웨어는 별도의 유료 계약이 없는 한 보증 책임이 없기 때문입니다.

그럼에도 불구하고 무상 유지 보수, 무상 기술 지원을 원하고, 원하는 대로 되지 않는다고 공개된 게시판에 불만 늘어놓는데 그런 행위를 하지 마십시오. 오픈소스 라이선스 위반입니다.

제 시간은 님들을 위해 당연히 소비되어야할 시간이 아닙니다.
저는 님들의 노예가 아닙니다.
제가 님들에게 뭘 잘못했다고 이러시나요?
대한민국 현행법이 오픈소스 라이선스보다 아래 있는 개념입니까?
오픈소스는 헌법을 초월합니까?
오픈소스는 윤리, 도덕, 예의를 무시하나요?

오픈소스는 헌법, 현행법 테두리 내에서 존재하는 것입니다.

오픈소스는 종교가 아닙니다.


https://ask.libreoffice.org/ko/question/146416/ribeure-opiseu-ggeutgeulja-beogeu/#156347

참고로 한글 입력 문제에 대해선, 화면 렌더링 엔진에서 문제인지 입력기에서 문제인지 아님 LibreOffice의 문제인지는 커널 입력기, 렌더링 엔진등 모두 확인을 해봐야 알 수 있습니다

nimf는 "개발 및 유지 보수"에 대해 유료 제공원칙을 주장하다 issue에 대해 문을 닫아버렸습니다 https://github.com/cogniti/nimf/issue...

그리고 libreoffice의 issue에 대해서 spam 처리를 한걸 확인하였습니다.

입력기 이외에 화면 렌더링 부분쪽에서도 이슈가 있을텐데 이슈를 무시하셨기때문에 개선의 여지가 없다고 보여집니다.

당시 nimf 버그가 아닌 리브레오피스 버그를 nimf 프로젝트에 이슈로 올려서 리브레오피스 버그라 말씀해드렸고 얘기가 길어질 것 같아서 이슈를 잠갔습니다. 제가 리브레오피스 버그를 분석해드릴 의무가 없습니다. 님들께 돈받고 계약 맺은게 없거든요.
제가 이슈를 닫은 거랑 리브레오피스 렌더링이랑 뭔 상관이 있다고...
자기들이 직접 해결하던가... 왜 nimf 개발자 탓을 하나요?



https://bugs.documentfoundation.org/show_bug.cgi?id=117008



2018년 7월 28일 토요일

꿈의 입력기 nimf 이야기 17화 - 적은 양의 소스코드

여러분 그거 아십니까?
nimf 는 매우 정교하게 설계되어 있어서 적은 양의 코드로도 많은 일을 합니다.
타 입력기 대비하여 소스코드가 매우 적습니다.

현재 nimf 는 20,949줄입니다.
언어 엔진이 일본어 1개, 한국어 1개, 중국어 2개, 시스템 1개 총 5개의 언어 엔진을 탑재하고 있습니다.

hodong@debian:~/nimf$ cloc .
     163 text files.
     159 unique files.                                         
      47 files ignored.

github.com/AlDanial/cloc v 1.70  T=1.30 s (89.8 files/s, 21418.2 lines/s)
-----------------------------------------------------------------------------------
Language                         files          blank        comment           code
-----------------------------------------------------------------------------------
C                                   45           3529           1707          17107
C/C++ Header                        29            456            750           1970
C++                                  2            147             58            664
make                                28            171             11            621
XML                                  9              0              0            367
m4                                   1             57             50            170
Bourne Shell                         1              9              1             37
Windows Resource File                1              1              0             10
JSON                                 1              0              0              3
-----------------------------------------------------------------------------------
SUM:                               117           4370           2577          20949
-----------------------------------------------------------------------------------


타 입력기들은 언어 엔진이 많죠? 그래서 공정하지 않은 비교일 수도 있습니다.
그런데 !!!!!
텔레그램에 nimf 로 입력하기 위해서는 nimf 를 Qt 와 정적으로 컴파일해야 합니다.
그래서 입력기 소스코드를 텔레그램에 넣어서 컴파일하는 과정을 거쳐야 하는데,
타 입력기들은 수만줄의 소스코드를 텔레그램에 넣고 컴파일하는 반면,
nimf 는 약 2천2백줄의 소스코드를 텔레그램에 넣고 컴파일하면 된답니다.

hodong@debian:~/nimf/libnimf$ cloc client *.c *.h
      19 text files.
      19 unique files.                             
       0 files ignored.

github.com/AlDanial/cloc v 1.70  T=0.13 s (151.9 files/s, 24249.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                                9            335            189           1618
C/C++ Header                    10            133            180            578
-------------------------------------------------------------------------------
SUM:                            19            468            369           2196
-------------------------------------------------------------------------------


nimf 가 얼마나 정교하게 설계되었는지 짐작이 가시죠!

2018년 7월 24일 화요일

꿈의 입력기 nimf 이야기 16화 - spec files

fedora.spec, opensuse.spec 파일은 다른 분이 작업한 nimf spec 파일을 참고한 것이 아니라 nimf 원저자 본인이 2016년 8월 1일에 추가한 fedora.spec 파일을 토대로 작성하였습니다. 입증 완료!!

commit e47895086f8c78203bbeb851fa2318a3a96c2cde
Author: Hodong Kim <cogniti@gmail.com>
Date:   Tue Jul 24 23:18:10 2018 +0900

    fedora.spec 다시 추가합니다
  
    이 파일은 원래 2016년 8월 1일에 추가된 파일입니다.
    다른 분이 작업한 nimf spec 을 참조하여 작성한 것이 아니라
    nimf 원저자 본인 스스로 레드햇, 페도라 패키지 제작 관련 문서를 참조하여
    작성하였음을 알립니다.
  
    From 278264daa68e713d901dda3daf549193013f7d8e Mon Sep 17 00:00:00 2001
    From: Hodong Kim <cogniti@gmail.com>
    Date: Mon, 1 Aug 2016 10:19:22 +0900
    Subject: [PATCH] Added fedora-specific files
  
    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/rpm_packaging_guide/index
  
    https://fedoraproject.org/wiki/Packaging:Alternatives
  
    https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html#id366540

    https://fedoraproject.org/wiki/Packaging:SourceURL
  
    등의 레드햇 또는 페도라에서 제공하는 문서를 참조하여 작성하였습니다.
    페도라에 맞는 패키지를 만드는 것이기 때문에 페도라에서 요구하는 규격에
    맞추었습니다.

commit e5cd1b26c2541032e1d7222cfcf10df4b08a9462
Author: Hodong Kim <cogniti@gmail.com>
Date:   Tue Jul 24 23:31:26 2018 +0900

    opensuse.spec 다시 추가합니다.
   
    이 파일은 fedora.spec 에 있는 fedora 패키지를 opensuse 패키지로 변경하여
    nimf 원저자 본인이 작성한 것입니다.
   
    토대가 되는 fedora.spec 파일은 2016년 8월 1일 최초 커밋되었습니다.
   
    From 278264daa68e713d901dda3daf549193013f7d8e Mon Sep 17 00:00:00 2001
    From: Hodong Kim <cogniti@gmail.com>
    Date: Mon, 1 Aug 2016 10:19:22 +0900
    Subject: [PATCH] Added fedora-specific files

꿈의 입력기 nimf 이야기 15화 - PKGBUILD

dasom 원저자이자, nimf 원저자인 김호동 본인이 자신의 창작물을 토대로 PKGBUILD 파일을 작성하였음을 입증합니다.
어떻게 PKGBUILD 파일을 작성했는지에 대한 수정 내역을 잘게 쪼개서 commit 했습니다.
PKGBUILD 에 저작권 정보를 넣는다는게 참 웃긴 일이긴 한데,
그럴 만한 이유가 있으니 비웃지는 말아주세요.

2018.07.25 내용 추가
nimf 프로젝트의 다른 파일들과는 달리, 이제 PKGBUILD 파일은 저작권이 없습니다. 이제 PKGBUILD 는 퍼블릭 도메인에 있습니다.

commit c6fd358553d814a0f912d9454c896ba492e02633
Author: Hodong Kim <cogniti@gmail.com>
Date:   Wed Jul 25 23:20:57 2018 +0900

    Now this PKGBUILD file is in the public domain

커밋 내역은 아래 보시면 되겠습니다.
제가 잠도 못자고 너무 피곤해서 로그를 복사 / 붙여넣기 하면서 누락된게 있을지도 모르겠습니다.

자세한 내역은

https://gitlab.com/nimf-i18n/nimf/commits/master

에 있으니 확인하시기 바랍니다.

commit 90c68ab13b44ee8c46d281763f833654aed429b3
Author: Hodong Kim <cogniti@gmail.com>
Date:   Sun Jul 22 20:58:09 2018 +0900

    I wrote these files myself. But I delete these files because there is misunderstanding.

commit 49e4662d07645de9a5f7bca1a3452d461eaa5df8
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 00:19:37 2018 +0900

    아치리눅스 사이트에서 예제파일 PKGBUILD.proto 을 가져옵니다.
   
    예제 파일 주소는 다음과 같씁니다.
    https://git.archlinux.org/pacman.git/plain/proto/PKGBUILD.proto

commit e7f558cd30105d4819e10927aaf5e671d765eeb2
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 00:24:47 2018 +0900

    파일이름을 PKGBUILD.proto 에서 PKGBUILD 로 변경합니다.

commit 7c85452b67e22e894f60bff796b5221910233736
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:12:52 2018 +0900

    주석문 삭제, 저작권 정보 추가, pkgname, license 정보 추가합니다
   
    아치리눅스 nimf-git AUR 에 올릴 것이 아니기 때문에
   
    pkgname=nimf 로 합니다.
   
    Copyright (C) 2018 Hodong Kim <cogniti@gmail.com>
   
    김호동 본인이 작성한 파일이기 때문에 김호동이 저작권을 보유합니다.
    파일 진위 여부 및 미래에 발생될 수 있는 문제에 대비하기 위해 저작권 정보를
    넣습니다.
   
    license=('LGPL3')

commit 040f622ad3b29e2b04ef8e4be1f3db93f26b9bad
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:27:12 2018 +0900

    pkgver 을 master 로 변경합니다.
   
    pkgver 은 pkgver() 함수로부터 변경될 수 있습니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD
    makepkg can automatically update this variable by defining a pkgver()
    function in the PKGBUILD.

commit 1b26ceb61c56b69512c2dcb71a0be3dbf5f49b85
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:29:58 2018 +0900

    epoch= 삭제합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 설명에 따르면
   
    When a new version of the software is released, this value must be reset
    to 1. 신버전이 릴리즈될 때, 1 이어야 한다고 되어 있습니다.
    그래서 pkgrel=1 로 그대로 둡니다.
   
    epoch= 는
    설명에 따르면
    pkgver=5.13
    pkgrel=2
    epoch=1
   
    1:5.13-2
    이런식으로 되는 건데 epoch 는 사용할 일이 없으므로 삭제합니다.

commit 130c6198e9191f86a0ea90580e52aabc72165e0e
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:33:56 2018 +0900

    pkgdesc="Nimf is an input method framework."
   
    제가 nimf 원저자입니다. 저 문구를 제가 만들었습니다.

commit 241cce44d0a89b0906238d83e252f493d4b715ac
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:37:46 2018 +0900

    arch=('any') 로 합니다.
   
    nimf 는 x86_64, i686, arm 에서도 컴파일이 가능합니다.
    https://wiki.archlinux.org/index.php/PKGBUILD 에 따르면
   
    If a package is architecture-independent in its compiled state (shell
    scripts, fonts, themes, many types of extensions, etc.) then use
    arch=('any'). 이렇게 설명되어 있지만,
    arch 를 특정하기 애매하므로 any 로 합니다.

commit c94b9b0cc29f3cb70c39677fdbcef0db7dfa27dd
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:39:57 2018 +0900

    url="https://gitlab.com/nimf-i18n/nimf"

commit 3f63dd97f1555aa3b4d482c383ecda4ace5e1296
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:41:28 2018 +0900

    groups=() 삭제합니다.
   
    groups=() 항목이 없어도 작동하는데 지장이 없습니다.
    작성하기 귀찮으므로 삭제합니다.

commit 7151baa707ea0a54f796e8c79b46b66180434a4a
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:46:28 2018 +0900

    checkdepends=() 삭제합니다.
   
    사용할 일이 없습니다

commit bce5cabc547a7b63ce658b39f1d708d37f74cfe5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:49:55 2018 +0900

    순서를 변경합니다
   
    makedepends=()
    depends=()
    optdepends=()
   
    이런 순서가 되도록 변경합니다.
    변경하지 않아도 작동에는 상관이 없지만,
    저는 제가 작성한 debian/control 파일을 참고하여 만들 것이기 때문에
    debian/control 에 나오는 순서대로 변경합니다

commit 9624ecffe7c81d97009a2bdd7cb926075eacbba3
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:52:21 2018 +0900

    makedepends 를 작성합니다.
   
    debian/control 파일내에 Build-Depends 에 대응합니다.
   
    Source: nimf
    Section: utils
    Priority: optional
    Maintainer: Hodong Kim <cogniti@gmail.com>
    Build-Depends: debhelper (>= 9),
                   dh-autoreconf,
                   libglib2.0-dev,
                   pkg-config,
                   intltool (>= 0.50.1),
                   libgtk-3-dev,
                   libgtk-3-bin,
                   libgtk2.0-dev,
                   libqt4-dev,
                   qtbase5-dev,
                   qtbase5-private-dev,
                   libappindicator3-dev,
                   librsvg2-bin,
                   fonts-noto-cjk,
                   libhangul-dev,
                   libanthy-dev,
                   anthy,
                   libchewing3-dev,
                   librime-dev (>= 1.2.9),
                   libxkbcommon-dev (>= 0.5.0),
                   libwayland-dev,
                   wayland-protocols,
                   libaudit-dev
   
    대응되는 아치리눅스 패키지 이름은 https://www.archlinux.org/packages/ 에서 찾을
    수 있습니다.

commit 6ff7b42e07f41b3370d6a08a1c3347d81db84fc9
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:57:11 2018 +0900

    depends 를 작성합니다.
   
    여기에 들어갈 내용은
    제가 작성한 configure.ac 파일과
    제가 작성한 debian/control
    제가 지금 작성하고 있는 PKGBUILD 파일 내에 makedepends 내에 있습니다.
    작업의 편의상 makedepends 에 있는 내용 중에, 컴파일할 때만 필요한
    패키지를 없앱니다. 그렇게 하면 실행할 때 필요한 것만 남습니다.
    제가 nimf 원저자입니다.
    nimf 는 제가 만들었고 nimf 가 필요로 하는 라이브러리를
    원저자인 제가 당연히 알고 있습니다.  제가 최초로 작성한 것입니다.

commit 8998e4a7032d4c49527903a7029f079bbf701dfd
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:09:24 2018 +0900

    optdepends 내용 추가합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 문서에 따르면
   
    optdepends=('cups: printing support'
                'sane: scanners support'
                'libgphoto2: digital cameras support'
                'alsa-lib: sound support'
                'giflib: GIF images support'
                'libjpeg: JPEG images support'
                'libpng: PNG images support')
   
    이런 식으로 작성하라고 나와 있습니다.
   
    debian/control 에서 Recommends, Suggests 항목에 대응합니다.
    없어도 nimf 가 작동하는데, 있으면 좋은 패키지입니다.
   
    optdepends=('brise: Rime schema repository'
                'noto-fonts-cjk: Google Noto CJK fonts'
                'xorg-setxkbmap: Set the keyboard using the X Keyboard
    Extension')
    그래서 이렇게 작성을 했습니다.
    brise 패키지는 GPL 라이선스이기 때문에 depends 에 넣으면 안 됩니다.
    nimf 는 LGPL 라이선스이며 brise 없어도 작동합니다.
    gnome-tweaks (gnome-tweak-tool) 가 debian/control 에 있지만,
    nimf-libhangul 에 xkb 옵션을 설정할 수 있는 기능이 있으므로,
    gnome-tweaks 는 필요하지 않습니다.
    제가 깜박하고 debian/control 에서 gnome-tweak-tool 을 삭제하지 않았네요.

commit b5a35acabea66fbfe7071d1d16952928c31b4709
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:31:01 2018 +0900

    provides=() conflicts=() replaces=() backup=() options=() install= changelog= 삭제합니다.
   
    provides=()
    conflicts=()
    replaces=()
    backup=()
    options=()
    install=
    changelog=
    없어도 작동합니다. 있으면 업데이트할 때 번거롭기 때문에 삭제합니다.

commit 81d7cabffff25f8e4c6345da4b526079d469e35f
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:33:32 2018 +0900

    source 주소를 설정합니다.
   
    source=("https://gitlab.com/nimf-i18n/nimf/-/archive/master/nimf-master.tar.bz2")

commit 1658804af98fcce5dfd313ed376a33336346ede5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:35:25 2018 +0900

    extract=() 삭제합니다.

commit d107d97c3714cad7ac03eb0c8738de3efa89ba27
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:37:09 2018 +0900

    md5sums=('SKIP') 체크하지 않습니다.
   
    https://gitlab.com/nimf-i18n/nimf/-/archive/master/nimf-master.tar.bz2
    이 파일은 최신 파일입니다. commit 할 때마다 변경됩니다.
    저는 pkgver 의 버전을 특정하지 않았습니다.
    pkgver 을 특정하면 nimf 를 업데이트할 때마다 PKGBUILD 업데이트해야
    하는데 매우 번거롭기 때문에 pkgver 을 특정하지 않습니다.
    그래서 다이제스트를 스킵합니다.

commit db7494507a1621d05be9fa7b9fa5992bccbd18dc
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:40:16 2018 +0900

    validpgpkeys=() 불필요하여 삭제합니다.

commit 6eca529bb7613fbc849470f7c056a9ae40cdf692
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:42:21 2018 +0900

    pkgver() 추가합니다. 패키지 버전을 동적으로 업데이트 합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 에 따르면
   
    makepkg can automatically update this variable by defining a pkgver()
    function in the PKGBUILD.
    pkgver() 으로 자동으로 pkgver 변수를 업데이트할 수 있다고 나와 있습니다.
   
    grep AC_INIT configure.ac | grep -Po '\d{4}.\d{2}.\d{2}'
   
    정규표현식으로 패키지 버전을 grep 합니다.
    2018.07.20 이런 형식이 grep 됩니다.

commit b49e9ea08fea192b4329c86d5b0579a0fc9897ba
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:47:01 2018 +0900

    prepare() 불필요하여 삭제합니다.

commit feb20a6dd2dc11a8284613e39c440752d7f42264
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:50:20 2018 +0900

    build() 를 작성합니다.
   
    제가 nimf 원저자이고 제가 작성한 nimf/README 파일에 나와 있습니다.

commit aa2d29b63b5cca4d488bf65c33051ada076bd7c2
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:52:33 2018 +0900

    check() 불필요하여 삭제합니다.

commit 5055bc706728252fb6aff7af7d9b90c680c84a9f
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:54:21 2018 +0900

    package() 작성합니다.
   
    제가 nimf 원저자이며 제가 작성한 nimf/README, Makefile.am 에 나와
    있습니다.

commit 15291a7174e416f6a05e6b83bf11919b25c095b5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Tue Jul 24 00:02:50 2018 +0900

    저작권, 라이선스 정보 추가합니다.
   
    본 PKGBUILD 파일은
    dasom 의 원저자이자 nimf 의 원저자인 김호동이 자신의 창작물을 토대로
    https://wiki.archlinux.org/index.php/PKGBUILD 형식에 맞추어
    작성한 파일입니다.
    본 PKGBUILD 파일에 대한 저작권이 김호동에게 있습니다.

2018년 7월 23일 월요일

꿈의 입력기 nimf 이야기 14화 - 리눅스 배포판을 차별하지 않습니다

제 불찰로 인하여 불미스런 일이 발생하였습니다.
각 커뮤니티 분들에게 죄송하다는 말씀을 드립니다.
기존에 아치리눅스, 페도라 커뮤니티에 패키징을 담당하는 분이 계셨습니다.
저는 그분들이 작성한 파일을 토대로 작성한 것이 아니고,
본인 스스로 PKGBUILD, fedora.spec, opensuse.spec 파일을 작성하였습니다.
그 파일을 작성할 당시 오해의 소지가 있을 거란 예상은 하지 못했습니다.
아무튼 변명이고요, 기분을 상하게 하여 대단히 죄송합니다.
오해의 소지가 있는 PKGBUILD, fedora.spec, opensuse.spec 파일을 모두 삭제하였습니다.
그로 인하여 아치리눅스 AUR, 페도라, 오픈수세 패키지를 다운받으실 수 없게 되었습니다.
사용 못하게 하려고 일부러 그런 것이 아니니 오해 없으시기 바랍니다.

다만, 데비안/우분투 debian/* 파일들은 프로젝트 초기부터 제가 제공해왔던 것이라
오해의 소지가 없다고 판단하여 그냥 두었고 우분투 PPA 도 삭제하지 않았습니다.

제가 특정 리눅스 배포판을 차별하는 것이 아닙니다.
그리고 nimf 는 리눅스용 입력기이기 때문에 배포판 패키지가 없다고 하여도
일반적인 방법으로 nimf 를 컴파일하여 사용하실 수 있습니다.

im-config 을 사용하는 배포판의 경우,

  ./autogen.sh --with-im-config-data

im-config 을 사용하지 않는 배포판의 경우,

  ./autogen.sh

아래는 모든 배포판 동일합니다.

  make
  sudo make install
  sudo ldconfig
  sudo make update-gtk-im-cache
  sudo make update-gtk-icon-cache


빠른 시일 내에 본인 스스로 작성하고 있다는 것을 검증하는 과정과 함께

PKGBUILD, fedora.spec, opensuse.spec

파일들을 다시 제공해 드리겠습니다.

이용에 불편을 끼쳐드려 대단히 죄송합니다.

2018년 7월 22일 일요일

꿈의 입력기 nimf 이야기 13화 - 파업

내가 무슨 연예인도 아니고..
안티에.. 악플에..
연예인은 돈이라도 벌지..
이건 뭐... 시간 손실, 금전 손실에...
정신적인 고통까지 감내해야 하나..
이제와서 그만둘 수도 없고.. 참..
기분 상하는 일이라도 없어야 하는데..
최근 한 달 간 손해본 금액이 200만원쯤 되는데..
아니 돈을 모아야 4k 용 컴퓨터를 구입해서
HiDPI 버그를 해결할 수 있는데,
손실이 꾸준히 생기니 돈을 모을 틈도 없고..
매일 잠도 제대로 못 자서 피곤하고..
오늘은 출근해서 졸면서 일해야겠네..
나도 남들처럼 퇴근 후에 쉬고,
주말엔 잠 좀 푹자고 싶은데...
그러지 못한지가 벌써 4년째...
이건 직장 스트레스보다 더 심해!!
최근 한 달 간 200만원의 손해를 보면서
업데이트를 해온 건데...
게다가 수년간 무상으로 배포하고 있잖아!!
고마운 줄 알아야지...
어휴 내 팔자야...
파업해야지 ㅋㅋㅋㅋㅋㅋㅋㅋ

꿈의 입력기 nimf 이야기 12화 - nimf 의 역사

과거에 홈페이지를 드루팔로 만들었었는데, 관리를 잘못해서 데이터를 모두 날려먹었습니다.
그 후 다시 blogger 를 사용하고 있습니다.
세월이 몇 년 지나니 기억이 가물가물하여 웹 어카이브를 찾아보았습니다.
제가 작성한 글이 약간 남아 있더군요.
nimf 입력기의 역사에 대해 말씀드리고자 합니다.
리눅스에 악명 높은 끝글자 버그로 아주 고통받던 중 끝글자 버그를 잡아보려고 시도했습니다.
처음에 gtk 를 의심하여 gtk 소스를 확인해보았는데, 문제가 ibus 더군요.
ibus 끝글자 버그 잡다가 ibus 구조상 입력기를 새로 만드는게 낫다고 판단하여

https://github.com/ibus/ibus/issues/1282#issuecomment-104839603
https://code.google.com/archive/p/ibus/issues/1264

2015-01 모듈 방식으로 설계 착수
2015-02-02  모두(Modu) 입력기 개발 착수
클라이언트-서버 모듈 방식으로 재설계하여
2015-05-23 다솜(dasom) 으로 개명
2015-10-09 다솜 릴리즈
2015-12-29 다솜에서 님프(nimf)로 갈라짐
2016-04-26 님프 릴리즈
(...중략...)
2018.07.20 버전까지 나온 상태입니다.

그 결과 끝글자 문제 없이 아주 쾌적하게 입력할 수 있으며
처절한 테스트를 거쳐 버그가 거의 없습니다.
dasom 때부터 지금까지 LGPL 라이선스이고,
필요한 비용과 시간을 본인 스스로 부담하여(자비로) 개발하였습니다.
처음부터 현재까지 소스코드, 패키지를 무상으로 제공하고 있습니다.
nimf 프로젝트는 현재 수익이 없는 프로젝트이고,
개발자가 nimf 개발하여 밥먹고 사는 사람이 아닙니다.
따라서 개인 사정에 따라 개발/유지보수가 지연될 수 있으며,
사용자분의 요청/요구 사항을 거부할 수 있습니다.
그런데, 사실상 거부하기 어려운 이유가 있는데,
만약 거부하면 커뮤니티 게시판이나 공개된 웹사이트에 저를 원망하거나 비난하거나 음해를 한다는 것입니다. 이러한 일 꾸준히 있어 왔습니다. 제가 트라우마가 생겼습니다.

아마 다솜이라는 이름을 지금도 사용했더라면

개발자가 한국인이고 다솜(dasom)을 한국 사람이 가장 많이 사용할텐데 설명이 영어로 되어 있습니다. 아... 그래요? 빨리 시정되어야 할텐데 큰일이네요.
제가 인지하지 못하는 곳에서 지금까지도 욕먹고 있겠죠.

개발자에게 스토커짓을 하거나 군대처럼... 어쩌구 저쩌구...

저런 내용의 글을 커뮤니티 게시판에 떡하니 써놓질 않나...
그 글은 삭제되어 현재 찾을 수가 없습니다.

그래서 많은 고민 끝에 다솜(dasom)에서 님프(nimf)로 이름을 2015년 12월 개명했습니다.

nimf 로 개명한 후에는 페도라를 지원해달라는 이슈가 있었는데...
nimf 는 리눅스 입력기이기 때문에 이미 페도라를 지원합니다.
그래서 뭔가 안되나 싶어서 가상머신에 페도라를 설치해서 테스트해보니 잘 됩니다.
나중엔 오픈수세에서 안 된다고 해서 해보니 잘 됩니다.
안 되는 이유가 뭐였냐면, debian 계열과 fedora 계열에 입력기 설정하는 부분이 달라서 안 되었던 것입니다. 간단히 말해서 fedora 패키지를 만들어 달라는 얘기죠.
테스트에 시간 소비가 너무 많아서 이슈를 잠가버렸습니다.
그 일 없었으면 특근해서 약 20만원을 벌 수 있었을텐데, 손실이 생겨버린 겁니다.
좀 이상한 느낌이 들어서 커뮤니티 게시판에 가보니 불만을 써놓으셨더군요.
왜 이런 일이 발생할까요? 제가 잘못한건가요?
부적절한 이슈로 인하여 20만원의 직접적인 금전 손실이 발생했는데 기분 나쁘고 화내야 할 사람은 저이고, 패키지 제공은 의무사항이 아닙니다.
무상 개발, 무상 유지보수, 무상 서비스를 당연하다고 생각하기 때문에 이러한 일이 발생하는 것입니다.

올해 올라온 일본어 관련 이슈를 보면 참 어이가 없는게,
타 프로그램을 nimf 에 넣어서 패키지 해달라는 것도 있었습니다.

여러분들의 경우 이런 상황이면 어떤 선택을 하시겠습니까?
개발 및 유지보수를 계속 하실 수 있겠어요?

제 돈과 시간을 들여서 개발했는데 제가 정신적인 고통까지 겪어야 되겠습니까?

여러분들 외국인 개발자한테는 안 그러시잖아요.
그냥 제가 만만하니까 저한테 이러시는거 저도 알아요.

그래서 저는 제 자신을 보호할 장치를 찾아보았고,
그것은 면책 조항과 서비스 유료화임을 깨달았습니다.
그래서 서비스 유료화를 선언했더니,
아치리눅스 위키에 nimf 프로젝트가 완전히 중단되었다고 허위사실을 써놓지 않나,
공개된 게시판에 제 욕을 하고 AUR nimf-git 를 버리셨더군요.
그래서 그걸 제가 주서다가 파일을 새로 작성하여 올렸습니다.
기존 파일을 참고하여 업데이트하는 수준이 아니라, 아치리눅스 설명 따라서 그냥 새로 작성했습니다. 그 결과 당연히 파일 안에 있던 Contributor 항목이 삭제되었습니다.
그거 삭제되었다고 넣어달라고 이메일 오고 블로그에 악플 달리고 그러네요.
그런데, PKGBUILD 파일은 Makefile 같은 성격의 파일이에요.
파일 내부에 Contributor 를 넣는게 일반적이지 않답니다.
그걸 넣기 시작하면 파일이 Contributor 로 도배된답 말입니다.
제가 작성한 PKGBUILD 파일은 기존에 있던 걸 베끼거나 참고한게 아닙니다.
그래서 원칙적으로 따지자면 넣지 않는게 맞답니다.
그 내용이 이미 여기에 있답니다.

https://gitlab.com/nimf-i18n/nimf/blob/master/debian/control

제가 작성한 파일을 보고 만든게 PKGBUILD 입니다.
애초부터 PKGBUILD 파일은 제가 작성한 파일을 토대로 만들어진 겁니다.

https://github.com/dasom-im/dasom/issues/1

이건 뭐... 주객이 전도되어 오히려 저한테... 뭐라하는데 참.. 어이가 없습니다.

그리고 PKGBUILD 파일을 1년 이상 업데이트 안 하다가 공개된 게시판에 제 욕하고 버렸는데... 그걸 제가 살려놓은 거에요. 기분도 많이 상하고 아무말도 안 하고 참고 있었는데...
블로그에 악플까지 달리니 원..

3년 이상을 제 시간, 제 돈을 투입하여 개발해오고 있고,
소스코드, 패키지를 무상으로 제공해왔는데
제가 무슨 죄가 있다고 욕을 먹고 정신적으로 고통을 겪어야 하나요?
님들 외국인 개발자들에게는 안 그러시잖아요.

도대체 저한테 왜 그러는 거에요?

그래서 저를 보호할 수 있는 장치를 만들었습니다.
그것은 바로 면책 조항과 서비스 유료화입니다.
이렇게 하면 nimf 가 오픈소스가 아니다고 허위 사실 유포하는 사람들이 생겨나겠죠.
그러지 맙시다. 왜 자꾸 저와 싸우려고 하십니까?
저는 지금까지 제 시간과 제 돈을 투입하여 개발해왔고 무상으로 제공하고 있습니다.
오픈소스는 개발 및 유지보수의 의무가 없으며, 요청을 거부할 수 있습니다.
돈받아서 개발하여 오픈소스로 푸는 것도 오픈소스가 맞습니다.
GNOME, 파이어폭스는 돈받아서 개발하여 오픈소스로 풀고 있습니다.
그리고 nimf 에 대한 서비스 유료화는 제가 돈을 벌고 싶어서 그러는것이 아니라,

불특정 다수로부터 제 자신을 보호하기 위한 목적으로
서비스 유료화를 하는 것입니다.

그리고 입력기라는게 상업적인 가치가 없어서 돈을 벌 수 없다는 것도 알고 있습니다.
서비스를 유료화해도 아무도 서비스를 구입하지 않는다는 걸 알아요!!!!
그러면 어떤 이득이 있느냐?
사용자분들이 저에게 말도 안 되는 요구를 할 수 없게 되는거죠.

말도 안 되는 요구를 하면,
"그래요? 그럼, 돈 내세요."

딱 이렇게 되는거거든요.


# 면책 조항

nimf 는 오픈소스 소프트웨어입니다. 
nimf 개발자는 개발 및 유지보수에 대해 어떠한 의무도 없고 어떠한 책임도 없습니다. 
어떠한 경우에도 보증하지 않습니다. 도덕적, 도의적 보증 책임 또한 없습니다. 
nimf 프로젝트는 여러분들의 고객 센터가 아닙니다. 
자신의 뜻대로 되지 않는다 하여 

* 사람들이 많이 방문하는 커뮤니티 게시판에 개발자를 욕(비난)하거나
* 욕보이는(음해하는) 글을 작성하거나
* 허위 사실을 공표하는

등의 행위를 삼가시기 바랍니다. 
자신의 뜻대로 하고 싶은 분들은 nimf 개발 및 유지보수 계약을 체결하시기 바랍니다. 
nimf 개발 및 유지보수 계약에 대한 기본 조건은 다음과 같습니다. 

* 유상으로 작성한 코드에 대한 저작권은 협의에 따라 개발자 또는 돈 주신 분이 소유합니다. 
* 그리고 그 코드는 nimf 가 현재 채택하고 있는 오픈소스 라이선스로 공개됩니다.

nimf 프로젝트를 고객센터라고 여기지 말고, 
nimf 를 함께 가꾸어간다는 생각으로 접근해 주시길 바랍니다. 


아래는 nimf 역사에 대한 참고 자료
---------------------------------------------------------

악명 높은 끝글자 버그를 고칩시다-1


글쓴이: hodong / 작성시간: 일, 2014-12-28 23:17

지인들과 리눅스에 대해 이야기하는 일이 종종 있었는데, 지인들이 리눅스 사용에 대해 큰 호감을 가지고 있었습니다.
사무실 컴퓨터를 리눅스 컴퓨터로 교체하는 것에 대해 제게 문의를 하곤 했었는데,
제가 말렸습니다.
왜냐고요?
리눅스를 사용할 때 겪게 되는 아주 악명높은 끝글자 버그 때문입니다.

자세한 내용은 이곳 참고
https://kldp.org/node/93540
https://kldp.org/node/141357
(..중략..)

악명 높은 끝글자 버그를 고칩시다-2


글쓴이: hodong / 작성시간: 월, 2014-12-29 21:07

gedit에 한글을 쓰다가 마우스를 클릭하면 조합 중인 글자(pre-edit text)가 마우스를 따라가서 엉뚱한 곳에 달라붙는 끝글자 버그가 있는데 gedit는 gtktextview를 사용합니다.
그래서 gtktextview.c 소스를 살펴보았습니다.

키를 누를 때 실행되는 함수
(...중략...)

ibus 끝글자 버그를 고칩시다-3

글쓴이: hodong / 작성시간: 토, 2015-01-24 22:54

오늘 ibus, ibus-hangul 프로젝트에 보낼 패치 작성을 완료했고 ibus 프로젝트에는 패치를 보냈습니다. https://github.com/ibus/ibus/pull/15
이 패치가 수용된다면 ibus에 추가된 속성을 이용하는 패치를 ibus-hangul 프로젝트에 또 보내야 합니다. 벌써 다 만들어놓았죠. 끝글자 버그 잡기를 2014년 12월 28일부터 시작해서 2015년 1월 24일 완료되었네요. 총 28일 걸렸군요. 그동안 잘 쉬지도 못하고 잠도 제대로 못자서 참 힘들었었습니다. 이제 푹 잘 수 있겠군요. 끝글자 버그 잡으면서 주말 알바 못 나가서 발생한 손실액이 17만원 정도 되는군요. 그래도 이렇게 웹 브라우저에 글쓰면서 습관처럼 누르던 컨트롤키를 이제는 안 눌러도 되니 마음이 한결 편안해지는군요.
(...중략...)

다국어 입력기 프레임워크 모두Modu를 시작합니다.

글쓴이: hodong / 작성시간: 월, 2015-02-02 06:36

    2015.6.11 내용 추가
    프로젝트 이름을 '모두'에서 '다솜'으로 변경하였습니다.
    다솜 프로젝트 주소 https://github.com/cogniti/dasom

그동안 끝글자 버그에 시달리다가 ibus 소스를 보게 되었습니다.
코드를 보아하니 구조가 좀 ... 거시기 하더군요.
ibus는 클라이언트 --- 서버 --- 엔진 사이의 IPC 때문에 아래처럼 어쩔 수 없이 비동기적으로 작동합니다.
(...중략...)

모두 입력기의 이름을 다솜으로 개명하였습니다

글쓴이: hodong / 작성시간: 토, 2015-05-23 00:06

입력기를 개발할 때에 모듈러 구조로 만들면서 "모두"라는 이름을 붙였었습니다.
모듈러 구조로 개발하면서 자원을 중복 소비하는 문제점과 모듈에 문제가 있을 경우, 응용 프로그램이 죽어버리는 치명적인 단점 때문에 서버 모듈 구조로 변경하면서 "모두"라는 이름이 칙칙하게 느껴져서 우분투 포럼에 "입력기 프레임워크 이름을 공모합니다." http://www.ubuntu-kr.org/forum/viewtopic.php?f=4&t=27999 라는 글을 올렸고,

입력기 프레임워크 이름을 공모합니다.

글올린이: hodong » 2015/03/30 월 11:35 pm
옛날에 유닉스를 사용할 때 한글 입력이 불편하지는 않았습니다.
그런데 이상하게도 세월이 흐르고 환경이 변화되면서 한글 입력이 점차 불편해지게 되었습니다.

현재 ibus가 리눅스용 입력기로 대세인데,,
여러 불편한 점들이 있습니다.
(...중략...)


다솜 입력기 개발 진행 상황

글쓴이: hodong / 작성시간: 토, 2015-05-23 00:29

다솜 입력기는
클라이언트용 im 라이브러리, 서버, 서버 모듈 등으로
구성되어 있습니다.

클라이언트와 서버는 완전 동기적으로 작동하여, 클라이언트에서 im 라이브러리를 호출하면 그에 대응하는 서버 모듈이 동기적으로 작동하므로 예측이 쉽고, 부작용이 없습니다.
한글 입출력이 잘 되고 있습니다.

dasom 서버가 xim 서버의 역할도 수행합니다. 하나의 프로세스에 두 가지 서버가 작동하는 하이브리드 서버입니다.

앞으로 할 일은
후보창, 상태창
입니다.
후보창과 상태창은 서버측에서 작동하게 만들 것입니다.

상태창은 사용자 편의를 위해 데스크탑 환경에 통합될 수 있도록 각각의 환경에 대해 애플릿 형태로 만드는 것이 좋을 듯합니다.
이렇게 되면 상태창은 다솜 서버와는 별개의 프로세스로 작동하므로 다솜 서버와 통신해야 합니다.

후보창은... 고려해 볼 것이 있습니다.

1. 다솜 서버 프로세스에서 작동하는 방식
(...중략...)

다솜 입력기 구조 (초안)

글쓴이: hodong / 작성시간: 일, 2015-05-31 20:37

Architecture for Dasom Input Method Framework (draft)
-----------------------------------------------------

      +- a process ---+    +----- a process -------+  +- a process --+
      | gtk im module |    | gnome-shell-extension |  |   X server   |
      +---------------+    +-----------------------+  +--------------+
              |                        |                     ^ |
              | calls                  | calls               | |
              |                        |                     | |
    +------------------+    +---------------------+          | |

(...중략...)

다솜 입력기 소스를 조기에 공개할까 합니다.

글쓴이: hodong / 작성시간: 수, 2015-06-03 00:41

어휴 답답한 정부...
메르스 발생 지역, 발생 병원을 공개해야 사람들이 피하고 주의하지...
그래야 확산이 줄어들지...
정부가 병원 수익을 왜 걱정하냐. 탄저균에 메르스에 우리들은 언제 죽을지 모르는 파리 목숨입니다.
일이 손에 잡히지도 않습니다.
입력기 소스를 미완성 상태로 공개하면 창피해서 자존심 상하고, 이거 해주셈, 저거 해주셈, 세벌식은 왜 지원 안 함? 각종 요구로 피곤해지고,
소프트웨어 출품 대회나 전시회 있으면 호시탐탐 노리는 사람들이 있을텐데...
그래서 완성된 상태로, 공개와 동시에 각종 사이트에 알림글을 올려야 하는데...
현 정권, 현 정부가 취하는 대응을 보면 무정부 상태에 있는 듯한 느낌이라... 어느날 갑자기 죽을 수도 있다는 생각이 많이 듭니다.
그래서 소스코드 조기 공개 여부를 고려하고 있습니다.

우분투 포럼에 글을 남겼습니다.
(...중략...)

다솜 입력기 테스트 버전을 준비하고 있습니다.

글쓴이: hodong / 작성시간: 토, 2015-07-04 16:24

안녕하세요...
다솜 입력기를 만들기 시작한지가 벌써 5개월 정도 지났습니다.
최근 입력기 서버 및 im 클라이언트에 있던 굵직한 버그(race condition)를 잡았습니다.
그걸 잡고 나니 focus out / focus in 이 싱크가 안 맞더군요.
자세히 살펴보니...
창이 2개가 있고, 창1에 포커스가 있을 때, 창2번을 찍으면
창1번은 focus out 신호를 발생시키고 focus out 신호에 대한 처리(reset, commit 등)가 완료되지 않아도
창2번은 바로 focus in 신호를 발생시킵니다.
아마도 윈도 관리자가 창관리를 thread로 처리할 것으로 추정됩니다. 그래서 이러한 현상이 나타나는 것 같습니다.
그래서 focus in / out 싱크 맞추기 위해 아래처럼 작성하였습니다.
(...중략...)

다솜 입력기 개발 일정 순서

글쓴이: hodong / 작성시간: 목, 2015-07-23 23:38

제가 오늘 다솜 입력기가 먹통되는 현상을 겪었습니다.ㅠㅠ

0. 오늘 발견한 먹통 현상(race condition) 해결할 것.

1. 우분투 유니티 한/영 표시기

2. 정음(한글) 엔진 설정기 --- 키 설정, 두벌식,세벌식 선택 기능.

이렇게 만들 예정입니다. 다음은 순서는 미정.
열심히 사용해 주세요.
감사합니다.
(...중략...)

다솜 입력기 개발 일정 순서2

글쓴이: hodong / 작성시간: 일, 2015-08-09 02:40

앞으로 qt4, qt5를 지원하기 위한 작업을 할 것입니다.
qt4, qt5를 지원하기 위해서는 제가 C++과 QT를 공부해야 하므로 시간이 좀 걸리겠습니다.
그 다음 작업은 미정입니다.
(...중략...)

다솜 입력기 개발 일정 순서3

글쓴이: hodong / 작성시간: 일, 2015-08-23 22:44

1. qt 환경 테스트

qt4, qt5를 지원합니다. 다만, 테스트 과정에서 다솜 서버 및 qt 어플이 정지되는 경우가 발생하여,
중복적인 set cursor location 함수 호출을 줄이고,
dasom_message_new_full() 함수에서 ref_count = 1 이 없는 것을 확인하여 이를 추가하였습니다.
다솜 서버 및 qt 어플이 정지되는지 좀 더 테스트를 해야 합니다.
제가 KDE, qt 사용자가 아니다보니 테스트를 수행하지를 못하고 있습니다.
KDE, qt 사용자 분들이 다솜 입력기를 설치하셔서 테스트를 수행해주시면 고맙겠습니다.
KDE, qt 테스트라고 해서 특별한 것은 없고 그냥 KDE, QT 환경에서 열심히 사용하시는 것이 테스트입니다.

여기까지 해결한 후에 앞으로 할 일들 --- 언제 시작할지 예정없음.

설정창, 상태창, 중국어 입력기
(...중략...)

다솜 입력기 릴리즈 준비 중입니다.

글쓴이: hodong / 작성시간: 월, 2015-09-21 01:22

안녕하세요.
그동안 다솜 입력기를 충분히 테스트하였고, 알고 있는 모든 버그를 잡았습니다.
그런데, daemonize 코드를 적용하는 중 2015년 9월 13일, gnome-terminal 사용 중 gnome-terminal 정지한 적이 있습니다.
이것은 그후 지금까지도 재현된 적이 없습니다. 그래서 다솜 버그인지 아닌지 확인조차 못했습니다.
다솜 입력기는 현재 반드시 필요한 최소한의 기능을 모두 갖추었으며 매우 안정적으로 작동하므로 이제 릴리즈를 준비하고자 합니다.
최종적으로 FIXME, TODO 를 확인하여 수정할 부분을 수정하고, 버전을 붙이고 deb 패키지를 위한 debian 파일들을 작성한 후 릴리즈를 할 것입니다.
약 1개월 전후하여 정식 출시 예정입니다.
(...중략...)

dasom (1.0) stable; urgency=medium


  * Initial Release

  * Dasom is an input method framework, which provides
    - Input Method Server including XIM
    - Language Engines for Korean, English
    - IM Modules for GTK+2, GTK+3, Qt4, Qt5
    - Indicators for GNOME Shell, Unity, KDE, GNOME panel

 -- Hodong Kim <cogniti@gmail.com>  Fri, 09 Oct 2015 01:21:10 +0900


Changed the name of project to Nimf


Author: Hodong Kim <cogniti@gmail.com>
Date:   Tue Dec 29 23:25:54 2015 +0900

nimf (2016.04.26) stable; urgency=medium


  * Initial Release

  * Nimf is an input method framework, it has a module-based client-server
    architecture where applications act as clients and communicate with the
    Nimf server via toolkit-specific input context modules and one socket per
    process.

  * Nimf provides
    + Input Method Server
      - nimf-daemon including XIM
    + Language Engines
      - Chinese:  nimf-sunpinyin (based on sunpinyin, under the development)
      - Japanese: nimf-anthy     (based on anthy, under the development)
      - Korean:   nimf-libhangul (based on libhangul)
    + Client Modules
      - GTK+2, GTK+3, Qt4, Qt5
    + Indicator
      - nimf-indicator (based on libappindicator3) for Unity, GNOME Panel, KDE
    + Development files

 -- Hodong Kim <cogniti@gmail.com>  Tue, 26 Apr 2016 06:31:55 +0900

2018년 7월 16일 월요일

꿈의 입력기 nimf 이야기 11화 - 홈페이지

nimf 홈페이지를 만들었습니다.
https://github.com/sylvaindurand/jekyll-multilingual 를 참고하여
다국어로 작동되도록 만들었습니다.

주소는 https://nimf-i18n.gitlab.io 입니다.

홈페이지 소스코드는

https://gitlab.com/nimf-i18n/nimf-i18n.gitlab.io

에 있습니다.

아직 내용이 많이 부족한데 함께 가꾸어간다는 관점으로 접근하셨으면 좋겠습니다.

2018년 7월 13일 금요일

꿈의 입력기 nimf 이야기 10화 - 희망찬 미래를 향하여

그룹 프로젝트로 이행하는데 프로젝트를 알리는 홈페이지 하나쯤은 있어야겠죠?
그래서 홈페이지를 제작 중입니다.
예전에 nimf 홈페이지를 만들어봤었는데, 다국어로 만들었더니 업데이트에 어려운 점이 많았습니다. 그래서 시간이 없기 때문에 이번에는 다국어로 제작하지 않고 jekyll 공식 홈페이지를 수정하여 사용하기로 했습니다.

안 좋은 일을 계속 겪다보니 제가 트라우마가 생겼습니다.
일부 사람들의 문제이긴 한데, 예전보다 많이 나아지긴 했습니다. 자신의 뜻대로 되지 않는다 하여 사람들이 많이 방문하는 공개된 게시판에 개발자를 욕(비난)하거나 욕보이는 글(음해)은 삼가시기 바랍니다.
자신의 뜻대로 하고 싶은 분들은 nimf 개발 및 유지보수 계약을 체결하시기 바랍니다.
nimf 개발 및 유지보수 계약에 대한 기본 조건은 다음과 같습니다.
유상으로 작성한 코드에 대한 저작권은 협의에 따라 개발자 또는 돈 주신 분이 소유합니다. 그리고 그 코드는 nimf 가 현재 채택하고 있는 오픈소스 라이선스로 공개됩니다.
귤이 회수를 건너면 탱자가 된다?

오픈소스는 자선 사업이나 종교가 아닙니다.
nimf 프로젝트는 현재 수익이 없는 프로젝트이며 사용자분들의 고객 센터가 아닙니다.

저도 표현의 자유가 있습니다.
과거에는 소극적으로 대응했는데 앞으로는 적극적으로 대응하겠습니다.

nimf 는 https://gitlab.com/nimf-i18n/nimf 에 자리를 잡았습니다.
github 와는 다르게 다양한 기능이 있으며 이 기능들을 활용할 것입니다.
언젠가 시간날 때 nimf 프로젝트 관련 규칙도 제정할 것입니다.

nimf 는 2018.07.09 부터 매우 견고해졌습니다.
이렇게 계속 유지 보수해간다고 할 때, 5년, 10년 후의 모습이 어떨지 궁금합니다.
여러분들,
nimf 프로젝트를 고객센터라고 여기지 말고,
nimf 를 함께 가꾸어간다는 생각으로 접근해주셨으면 좋겠습니다.
그리고 nimf 오류에 대한 버그 리포트는 언제든지 대환영입니다.

2018년 7월 12일 목요일

꿈의 입력기 nimf 이야기 9화 - 그룹 프로젝트로의 이행

개인 프로젝트 https://gitlab.com/hodong/nimf 에서
그룹(단체, 집단, 조직, 공동) 프로젝트로 이행하기 위해
이른 감이 있지만 https://gitlab.com/nimf-i18n 이라는 그룹을 만들고
저장소를 https://gitlab.com/nimf-i18n/nimf 으로 옮겼습니다.

nimf 프로젝트의 새 주소는

https://gitlab.com/nimf-i18n/nimf

입니다.

nimf 를 함께 가꾸어간다는 관점으로 접근하셨으면 좋겠습니다.

꿈의 입력기 nimf 이야기 8화 - 이슈 복구

github --> bitbucket --> gitlab 으로 호스팅을 바꾸면서 이슈 답글이 많이 날아갔는데, 모두 수작업으로 복구했습니다.

아래와 같은 루비 스크립트를 이용했습니다.

require 'json'
require 'pp'

file = open("db-1.0.json")
json = file.read

parsed = JSON.parse(json)

parsed["comments"].each do |comment|
  if(comment["issue"].eql? ARGV[0])
    puts "### "         + comment["user"] + "  "
    puts "created on " + comment["created_on"] + "  "
    puts "updated on " + comment["updated_on"] + "  "
    puts
    puts comment["content"].gsub(/\n/, "  \n")
    puts
    puts "---"
    puts
  end
end


그리고, github 이슈 백업 파일을 올려놓았으니 필요하신 분들은 아래 주소에서 다운받으시기 바랍니다.

https://gitlab.com/nimf-i18n/nimf/issues/114

2018년 7월 9일 월요일

꿈의 입력기 nimf 이야기 7화 - 오픈소스에 대한 착각

오픈소스 개발자라고 해서 상황이 다 같지는 않습니다.
어떤 사람은 레드햇, 구글, 인텔, 우분투, IBM 등의 회사로부터 돈(월급)받고 개발하여 오픈소스로 무상 배포합니다.
어떤 사람/단체는 기업으로부터 거액의 후원금 및 기부금을 받아서 개발하여 오픈소스로 무상 배포합니다.
우리가 흔히 접하는 유명한 오픈소스 프로젝트들이 사용자 개인들로부터 돈을 받지는 않지만,
개발자가 실제로는 유상 개발, 유상 유지보수를 하고 있는 것입니다.
기업, 개발자, 사용자간의 이익이 맞아 떨어져서 오픈소스가 유행하고 있는 것입니다.
기업 입장에서 개발자 고용해서 개발시키고 오픈소스로 무상으로 뿌리면 점유율 증가, 이미지 개선, 광고 효과, 광고 수익 증대, 자사 상품 매출 증대, 우수 개발자 고용 기회 증가, 자원 봉사자로 인한 인건비 감소 등으로 인하여 자사 수익이 증대되고 비용이 감소되는 효과가 있습니다.
그래서 오픈소스가 유행하는 것입니다.
오픈소스는 자선 사업이나 종교가 아닙니다.
저도 nimf 개발하면서 생활에 지장 없도록 월급이나 후원금이나 기부금 받으면 짜증이나 신경질 안 내고 즐겁고 행복한 마음으로 개발하고 유지보수할 수 있습니다.
사용자분들이 이거 해주세요, 저거 해주세요.. 그러면 그게 다 돈이니까 무척 행복하겠죠.
그러나 제 상황은 nimf를 개발하면 할수록, 사용자분들 요구 사항을 처리하면 할수록 누적 손실이 커집니다. 그래서 건당 수 만원에서 수십 만원의 손실 때문에 민감하게 반응하고 신경질을 내고 그랬던거죠.
여러분들 이슈 올리면 제가 그걸 처리하기 위해 잠을 안 잔다던가 주말 특근 근무를 빠집니다.
그러면 한 20만원 정도 손실 생기는거죠. 그렇게 하지 않으면 개발/유지 보수 시간 자체가 나오질 않습니다. 여러분들이 제 상황이라면 어떻게 하시겠습니까?
제가 이 얘기를 하는 이유는 돈 달라는 얘기도 아니고 이슈 올리지 말라는 얘기도 아닙니다.
간혹 제촉하시는 분도 있고 실망하시는 분도 있고 원망하시는 분도 계시는데 제 사정을 이해해 달라는 말씀입니다.
nimf 프로젝트는 타 프로젝트와는 다르게 생활비나 개발비 지원없이 개인 손실로 개발해왔고 그럼에도 불구하고 다른 입력기와 비교했을 때 버그가 거의 없고 가볍고 빠르고 정확하게 작동한다는 것입니다.
이 자체만으로 정말 대단한 겁니다. (또 자화자찬 ㅋㅋㅋ)
그리고 버그 리포트는 품질 개선에 매우 큰 도움이 되므로 대환영입니다.

꿈의 입력기 nimf 이야기 6화 - 현안

이슈 복구 중

프로젝트 주소를 두번 옮기면서 댓글이 많이 소실되었습니다.
다행히 백업본이 있어서 이슈를 수작업으로 복구 중입니다.

한글 xkb 오작동 문제

이 문제는 MappingNotify 받아서 처리해야 하는 코드를 작성해야 합니다.
이 버그는 nimf 의 안정성과는 무관하고 xkb 에 대한 공부가 필요하기 때문에 천천히 해결할 생각입니다. 그리고 최악의 경우 해당 기능을 삭제했다가 코드 재작성 후 정밀 테스트 후에 다시 올리는 방법도 있기 때문에 이 문제에 대한 우선 순위는 매우 낮습니다. 느긋하게 기다리시라는 말씀입니다. 잘 동작하지 않는 경우 할당하지 않음을 선택 후에 원하시는 메뉴를 선택하시면 작동할 것입니다.

HiDPI 환경 문제

제가 nimf 개발 외에 딱히 켬퓨터를 쓸 일이 없습니다.
제 컴퓨터를 바꿔야 테스트를 해볼 수 있는데 자금 사정이 안 좋아 내년 쯤 예상하고 있습니다.

일본어 ん 입력 방법 옵션 예정

현재 nn 을 눌러서 입력하는 방법을 제공합니다. 이게 정확한 방법이고, 타 입력기의 입력 방법은 추후 옵션으로 제공하겠습니다.

teleglam, rstudio 에서 입력이 안 되는 문제

이 문제는 teleglam, rstudio 에서 Qt 를 정적(static)으로 링크하여 발생하는 문제입니다.
나중에 여건이 되면 nimf 를 정적으로 컴파일해서 Qt에 붙여보겠습니다.
이 문제는 nimf 버그가 아니고, Qt 컴파일에 많은 시간이 소모되기 때문에 현재 우선 순위가 가장 낮습니다.

nimf-xim 을 xcb 로 포팅 예정

x11 라이브러리는 xcb 라이브러리에 비해서 성능이 현저히 떨어집니다.
nimf 는 이미 충분히 빠르지만 nimf-xim 을 xcb 라이브러리를 이용하도록 포팅하면 더 빨라질 수 있습니다. 그러나 nimf-xim 은 현재 잘 작동하고 있고, 이 작업에 6개월 정도의 시간이 소요될 것으로 예상되므로 투입 시간 대비하여 이득이 적어 우선 순위가 매우 낮습니다. 이거 작업할 시간에 라이브러리 매뉴얼 작업을 하는게 더 이익이겠습니다.

그룹 프로젝트로의 이행 준비

nimf 가 개인 프로젝트라 한계가 있다는 얘기가 있습니다.
그래서 형식만이라도 그룹 프로젝트로 이행할 준비를 하고 있습니다.
커밋 수로 볼 때 저의 기여분은 98% 입니다. 아직까진 독재 권력 개발자. ㅋㅋㅋ
형태가 그룹 프로젝트로 변경되더라도 기여가 적으면 실질적으로 개인 프로젝트랑 다를 바 없습니다.
실질적인 그룹 프로젝트가 되려면 코드 기여가 많아야 됩니다.
코드 기여하신 만큼 권리 주장 및 정책 결정에 참여하실 수 있습니다.

꿈의 입력기 nimf 이야기 5화 - 견고한 nimf

대박 사건 2018.07.09 버전이 나왔습니다.
어제 오늘 작업을 통하여 nimf 가 더욱 강력해졌습니다.

예전에는(2018.06.28 이전 버전) nimf 사용 중에 killall nimf 명령으로 강제로 nimf 를 죽이고 nimf 를 재실행시켜도 응용 프로그램을 다시 실행하기 전까지 한글을 입력할 수 없었습니다.

2018.06.28 버전부터 nimf 를 죽이고 다시 실행해도 응용 프로그램 재시작 없이 한글을 입력할 수 있는 기능이 추가되었습니다.
https://cogniti-works.blogspot.com/2018/06/nimf-20180628.html
그런데 버그가 좀 있었습니다.

deadlock 걸리는 현상
https://gitlab.com/hodong/nimf/issues/112

nimf 죽이고 재실행하면 gnome-shell 간헐적으로 죽습니다.
https://gitlab.com/hodong/nimf/issues/113

위 버그는 예전부터 있었던건데 2018.06.28 버전부터 마법 같은 기능을 도입하면서 드러났습니다.
이틀 동안 정밀 분석해본 결과, 그냥 단순한 프로그래밍 에러였습니다.
위 버그를 다 고친 후에, nimf 를 수백번 죽였다가 재시작해봤는데 아무 문제도 발생하지 않았습니다.
nimf 를 강제로 죽인 후 nimf 를 재시작하면 응용 프로그램이 nimf 에 자동으로 재접속하는 코드가 안정적으로 잘 작동하는 것 같습니다.
동기화 방식임에도 불구하고 컴퓨터가 먹통되지 않고 안정적으로 잘 작동하는 것 같습니다.
nimf 아키텍처의 우수성이 또다시 입증되는 순간입니다.
그래서 nimf 가 꿈의 입력기라는 것입니다.
여러분은 지금 현존하는 최고의 입력기를 사용하고 계십니다.
많은 애용 바랍니다.

2018년 7월 7일 토요일

꿈의 입력기 nimf 이야기 4화 - 엔진 전환

여기서 끝이 아닙니다.
nimf의 장점은 또 있습니다.
엔진 전환이 매우 편리하다는 것입니다.
한국어, 중국어, 일본어 패키지를 설치하지 않아도 일단 영어는 기본으로 내장되어 있습니다.
그래서 엔진을 모두 설치했을 때,
한국어, 중국어, 일본어, 영어, 이렇게 4종이 됩니다.

엔진 전환할 때 사용되는 키는 두 종류입니다.

엔진을 순환하며 전환하는 키와
엔진으로 바로 전환되는 키 이렇게 두 종류입니다.

설정에 님프 메뉴에 있는 키가 엔진을 순환하면서 전환하는 키이고,
각 엔진별로 트리거 키가 있는데 그 키를 누르면 해당 엔진으로 바로 전환됩니다.
한국어 쓰다가 중국어 단축키 누르면 바로 중국어로 전환되고
다시 한국어 단축키 누르면 한국어로 바로 전환됩니다.
한국어 상태에서 한국어 단축키를 누르면 영어로 전환되고,
한국어 단축키를 또 누르면 한국어로 전환됩니다.
각 언어 엔진 메뉴에 있는 키는 해당 언어 엔진, 영어 엔진(시스템 키보드)로 상호 전환되는 토글키입니다.
영어 엔진이라고 말씀드렸는데, 사실은 영어 엔진이 아니고 시스템 키보드입니다.
시스템에서 독일어로 설정해놓았다면 독일어와 한국어 이렇게 상호 전환되겠죠.
그래서 nimf 입력기가 꿈의 입력기라는 것입니다.

응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다

그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...