<날개셋> 한글 입력기는 2000년에 1.0이 첫 개발된 이래로 지금까지 윈도우 플랫폼만을 고수해 왔다.
윈도우 안에서는 윈도우 95/NT4부터 시작해 64비트 비스타/7까지 운영체제가 제공하는 모든 문자 입력 프로토콜을 정복하는 경지에 도달했지만, 윈도우 이외의 운영체제 지원은 개발자의 지식과 여유 부족으로 인해 전무한 실정이다.
사실 여러 통계들만 보면 개인용 PC 시장 운영체제의 점유율이 윈도우가 이미 90%대에 달해 있고, 맥/리눅스가 각각 7, 2% 정도를 차지하고 있으니 어떤 소프트웨어에서 맥/리눅스의 지원은, 마치 윈도우 시장 내부에서 XP/비스타를 제외하고 인제 와서 NT/2000이나 심지어 9x 계열을 지원하려 애쓰는 것처럼 아주 사소한 일일 수도 있다.
하지만 문제는 <날개셋> 한글 입력기의 사용자 집단은, 일반 PC 사용자 집단과는 그 비중이 같지 않다는 것이다.
비록 내 프로그램의 용도가 세벌식 자판에 국한된 것은 아니지만, 주 목적이 세벌식 관련 지원 기능이고 그쪽으로 실제로 기능이 풍부하기도 하기 때문에 프로그램 사용자 중에는 세벌식 사용자가 많다.
그런데 본인이 파악하고 있기로는, 세벌식을 쓸 정도의 매니아급 파워 유저 중에는 리눅/맥 사용자가 상대적으로 굉장히 많다. 전체 PC 사용자 중에는 리눅/맥 사용자가 10%도 채 안 될지 몰라도, <날개셋> 사용자 중에는 리눅/맥 사용자의 비율이 30%대에 달할 수도 있다는 뜻이다.
마치 본인이 글자판도 극소수 글자판을 쓰는 데다 성경까지 극소수만이 진가를 아는 성경을 읽는 것처럼, 소수 집단은 뭔가 소수 집단끼리 통하는 게 있기라도 한 것 같다.
이런 시대 흐름에 부합하여 본인 역시, 최근에는 평생 안 들여다볼 것 같던 맥 OS와 리눅스 쪽 자료를 틈틈이 살펴보고 있다. 물론 여기에는 회사에서 내 개인용 컴퓨터보다 더 다양한 플랫폼을 접할 기회를 얻은 것도 한몫 작용했다.
(사실 본인이 회사가 아니라 전산학과 대학원에 갔다면 맥은 몰라도 리눅스 지원은 확실히 빨라졌을지도 모른다.)
새로운 운영체제에 완전히 적응하고, 더구나 단순 응용 프로그램이 아니라 운영체제 쉘과 밀접한 관련이 있는 저수준 프로그램인 IME를 포팅하는 것은 쉬운 일이 아닐 것이다.
해당 운영체제의 프로세스/스레드/DLL 구조부터 시작해 GUI API, 도움말 및 배포 패키지를 만드는 요령, known directory 구조부터 당장 알아야 한다. 제아무리 크로스 플랫폼 GUI 툴킷의 도움을 받는다고 하더라도, 일단 그 툴킷 자체도 공부해야 하고 해당 운영체제에 맞는 개발툴 내지 에디터, 그리고 심지어 프로젝트(메이크파일) 세팅 요령도 익혀야 할 것이다. 헤쳐 나가야 할 건 아직 참으로 많다.
다음은 현재 본인이 생각하고 있는 프로그램 개발 및 포팅의 원칙이다.
1. 타자연습보다는 입력기가 우선순위가 더 높다.
적어도 본인에게는 입력기는 main이고 타자연습은 sub이다. 지금까지도 그래 왔고 앞으로도 그럴 것이다.
타자연습은 MFC를 사용했지만, 입력기는 WinMain함수부터 뼈대부터 완전히 100% 윈도우 API만 써서 내 손으로 만든 프로그램이다. 애착도 더 높다.
타자연습을 한동안 소스를 공개해 오다가 현재는 다시 닫았는데, 사실, 책임감 있고 믿음직한 후임이 나타난다면 그 사람에게 타자연습 소스 코드를 인계하고(단순한 코드뿐만 아니라 구조 설명까지) 개발을 전적으로 위임할 생각도 있다.
타자연습은 지금까지 버그 수정이나 입력기에서 먼저 개발된 신기능/기술의 동반 적용 같은 걸 빼면, 이렇다할 기능 추가나 구조적인 변화는 거의 없이 정체 상태였다. 타자연습도 만들고 싶은 게 많다. 연습글 관리 방식 개선이라든가 게임 리모델링, 네트워크 지원만 해도 굵직한 주제가 벌써 여러 개 나온다. 하지만 내가 도저히 그것까지 신경쓸 시간이 없다.
2. 윈도우용이 여전히 우선순위가 더 높다.
분배보다는 성장이라고 해야 할까? 타 운영체제를 살펴보기에는, 아직 당장 윈도우용 오리지널 프로그램에도 더 넣고 싶은 기능과 보강해야 할 것들이 훨씬 더 많다. 현실적으로 여기에 시간 할애 가중치가 더 실릴 수밖에 없다.
3. 리눅스보다는 맥이 선호도가 더 높다.
본인의 개인적인 바람은, 리눅스보다 점유율이 더 높고 여러 배포판 혼잡 같은 게 없이 일관성도 있는 맥 OS 쪽 포팅을 리눅스보다 먼저 해 보고 싶다.
하지만 현실적으로는 본인에게는 일단 맥북이 없으며, 오로지 이 포팅 작업만을 위해서 맥북을 구입하고 관리할 만한 여건도 못 된다. 현실적으로는 당장 VMware로 손쉽게 띄울 수 있고 한글 IME를 돌려 볼 수도 있는 리눅스를 먼저 살펴보게 되겠다.
4. 외부 모듈보다는 편집기가 우선순위가 더 높다.
윈도우용이 그랬던 것처럼 프로그램 개발 내지 포팅은 입력기 커널(플랫폼 독립적인) -> 제어판 GUI -> 편집기 -> 외부 모듈 -> 플러그 인의 순으로 진행될 것이다. 전용 에디터인 편집기부터 먼저 포팅한 후 외부 모듈은 나중에 등장할 것이다. 쉬운 것부터 진행하겠다는 원칙은 두말할 나위가 없다.
5. 소스 코드와 버전 관리
<날개셋> 한글 입력기의 코드는 크게 윈도우용과 리눅/맥용으로 나뉜다. 이미 윈도우 API만으로 지극히 가볍고 잘 튜닝되어 있는 기존 윈도우용 소스를 건드릴 필요는 없겠고 리눅스와 맥은 가능한 크로스 플랫폼 GUI 툴킷을 이용하여 한 코드 베이스로 관리할 것이다. 그 이유는 물론 본인이 각 OS의 native API를 익힐 시간이 없기 때문이다. 현재로는 그 툴킷으로 Qt를 고려하고 있는 중이다.
버전은 처음엔 1.0부터 시작해서(비록, 윈도우용 기준으로는 최소 미래의 5.x~6.x 엔진을 사용하더라도)
나중에 리눅/맥용도 윈도우용과 완전히 대등하게 포팅이 완료됐고 세 에디션 개발을 동시에 할 수 있게 됐을 때 윈도우용 버전으로 번호를 일괄 상향 조정할 생각이다.
전부 생각만 이렇게 해 놓은 것이다. 실제로 이게 실현되는 건 한참 먼 미래가 될 수도 있다. -_-
Posted by 사무엘