Category Archives: 일거리

KDE 한글화의 역사

그놈과 KDE는 리눅스 데스크탑 계의 양대산맥이다. 사용자들의 선호도를 비교해 보면 비슷비슷하지만, 대한민국으로 들어가 보면 달라진다. 그놈이 압도적으로 많은 것이다. 이런 일이 왜 일어났는지는 KDE에는 쓸만한 한국어 번역이 기본으로 들어가 있지 않다는 것에서 시작된다. 그 비극의 역사를 따라가 보자.

과거의 Qt 라이브러리는 세계화에 잘 대비하고 있지 않았다. 그래서 한국에서 패치를 만들어 보내도 반영이 제대로 되지 않기 일쑤였다. 그래서 미지 리눅스와 같은 과거 국산 배포판들은 엄청난 패치가 가미된 자체적인 KDE를 쓰고 있었다. 이것을 위해서 증거 자료를 찾다 보니깐 이런 것이 있었다. KDE 2.x 시절에는 이런 일도 있었음을 보여 주는 것이다.

그러나 이 시기의 한국어 번역은 완벽하지 않았다. 당장 대부분 배포판에서 KDE 한국어 언어 팩을 긁어 와 보면 순한국어 때문에 의미 전달이 안 되는 부분도 있고, 번역 정도도 상당히 적었다. 지금 당장 아무런 패치도 하지 않고 KDE 3.x 한국어 언어 팩을 긁어 오면 이 정도의 번역 상태를 보여 준다. 13%라는 것이 놀라울 수도 있지만, 이 13% 안에서도 품질을 따져 보면 난감하다. po 파일을 보면 마지막 개정 일자가 대부분 한참 과거의 것이다. 놀라운 것은 이 다음에 이어진다.

한소프트에서 고용한 번역 팀을 욕하고 싶은 생각은 없지만, 한소프트는 번역을 할 생각만 했지 KDE 업스트림에 반영하려는 생각을 잘 하지 않았다. 실제로 한소프트의 kde-i18n-ko 패키지를 가져와 보면 번역은 다 되어 있지만, 업스트림에는 하나도 반영되지 않았다. 한 때 본인이 참여했던 우분투의 Rosetta 시스템에서도 번역 작업을 해 두었기 때문에 우분투 사용자라면 상대적으로 번역의 품질은 좋을 것이다. 그런데 내 기대와는 달리 업스트림에는 예상만큼 잘 올라가지도 않았다.

이런 폐단을 막기 위해서 이번에 나올 KDE 4에는 저품질의 번역이 들어가지 않도록 노력하고 있다. KDE 4 번역 통계를 관찰하다 보면 꽤 빠른 속도로 올라가는 것을 볼 수 있다. 과거에 들어가 있었던 순 한국어 번역을 걷어내고 적당한 외래어나 한자어를 사용해서 의미 전달이 잘 되도록 하고 있다. 새로운 KDE에 들어가는 프로그램들의 번역도 빠른 시일 내로 작업해서 KDE 4 때부터는 그놈만큼은 아니라고 해도 충분한 번역이 제공되도록 하는 것이 나를 포함한 KDE 한국어 팀의 목표이다.

KDE 4 번역 작업

KDE 3을 써 보았다면 알 것이다. 전직 메인테이너 욕 좀 하고 가자면, 순우리말을 고집했던 덕분에 사용자들이 어색하다는 느낌을 주게 만든 장본인이었는데다가, 한소프트 리눅스는 KDE 번역을 새로 하면서 KDE 업스트림에 피드백도 안 보내 준 탓에 KDE 한글화를 위해서는 한소리의 RPM 파일을 받아 와 줘야 했다. 설상가상으로 한 때 본인이 꽤 기대했던 launchpad의 번역 시스템도 결국 또 하나의 번역물 fork만 만들어 주었다. 즉 업스트림과 연락 자체가 안 되었다. 이 와중에 국내 자유 소프트웨어 데스크탑은 어느새 그놈이 점령해 버렸다.

만약 KDE 4까지 이 번역물이 이어진다면 악몽일 것이다. 보다보다 못 해서 최근 KDE 번역에 다시 참가했다. launchpad에 있던 po 파일들을 받아와서 일일이 합쳐 주고, 알아 들을 수 없는 순우리말은 외래어나 적당한 한자어로 대체하고, 미번역 부분은 일일이 새로 번역하고 있다. 최근에 KDE 커미터에 등극한 것도 이번에는 launchpad나 한소리의 실수를 방지하기 위해서 계정을 신청했던 것이다.

서론은 이 정도로 줄이고 본론으로 들어가자. 최근 KDE 4 번역 통계를 살펴보면 한국어의 발전 속도가 꽤 빠를 것이다. 몇 주 전까지만 해도 9%대였던 것이 지금은 15%를 눈앞에 두고 있다. KDE 4 번역 통계 페이지를 매일같이 지켜 보면서 뿌듯함을 안 느낄래야 느낄 수 없다. 이런 것이 자유 소프트웨어에 참여하는 거다 라는 생각도 같이 들고 있다.

부디 이번에는 KDE 3에서 탄생했던 KDE 한국어 번역의 수많은 fork가 탄생하지 않기를 빌고 있으며, 좋은 upstream에서의 번역 작업이 더 많은 사람들을 KDE의 세계로 초대했으면 하는 바램이다.

qperiki – periki의 GUI 껍데기

qperiki

작년에 잠깐 sqlite 기반으로 짜다가 내팽겨친 periki의 GUI 버전 qperiki이다. 한 때 데스크탑에 웹 서버를 깔아서 위키를 썼다가 그게 귀찮아서 데스크탑 전용 위키로 탄생하고 있는 periki이다. 크게 libperiki와 이것들의 GUI 프론트엔드로 이루어진다. 이 qperiki는 libperiki를 위해서 처음으로 탄생한 프론트엔드이다.

하는 일은 아직 없다. 만들어진 문서를 읽어만 올 수 있는 정도이다. 멋지게 만들기 위한 CSS나 다양한 삽질은 차차 해야지 뭐…

libw2100 – 어이없는 오류

이 글 이후로 중단되었던 libw2100 소스 코드를 뒤져보다가, 왜 안 되는지 알아냈다. HSP 프로토콜의 문자열을 디코드하는 부분에서, 배열의 길이를 구하는 문제가 있었다. char * 형태의 배열 포인터만 하나 던져 두었는데, 문제는 이것만 가지고 배열의 길이를 알 수 없다는 데 있었다. 그래서 황급하게 배열 인자로 길이를 받도록 했더니, 이제는 HSP 문자열 디코딩 루틴이 잘 작동한다.

그리고 왜 USB 패킷을 가져오지 못하나 했더니… 입력 버퍼가 너무 짧았다. 길이 6만 주고 6 이상의 데이터가 들어오니깐 libusb가 폭주하는 것 같았다. 그래서인지, 입력 데이터를 제대로 읽어오지 못하고 헛물만 켜고 있었다. 입력 버퍼의 길이를 다시 1000으로 잡아 주니깐 이제서야 데이터를 읽어 왔다. 휴우.

이 어이없는 실수 때문에 프로젝트가 사실상 중단되어 있었는데, 이제서야 뭔가 다시 볼 여유가 생기는 것 같다. 자 이제 전화번호부 가져오기로 궈궈.

W2100 Hacks – Part 3

libw2100의 소스 코드 중 극히 일부인 전화번호부 빼내오기 소스입니다. 그런데, 지금부터는 XML 라이브러리를 사용해서 SyncML을 다루어야 합니다. 그렇지만 지금 제 목적에 적합한 XML 파서가 없기 때문에 별 수 없이 조그마한 XML 파서를 사용해야겠네요. 삼성의 엔지니어들이 과연 어떤 XML 파서를 사용했는지는 strings, objdump 명령으로도 알 듯 말 듯한 일입니다.
libw2100 소스의 일부분
ps. 경희누나 생일 축하.