Translate

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

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

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