[프로그래밍 이야기 4] 리눅스 데스크탑 잔혹사: PPA와 한글 입력기, 그리고 실용주의의 승리
필자가 2009년 운영체제를 바꾸기로 결심한 이유는 명확했습니다. 게임에 빠진 삶을 끊어내고 싶었고, 하드웨어를 교체할 때마다 발목을 잡는 윈도우 라이선스 문제에서 자유로워지고 싶었기 때문입니다. 게임이 돌아가지 않는 환경으로 스스로를 고립시키겠다는 절박한 마음으로 도서관에서 페도라 리눅스 책을 집어 들었던 것이 이 긴 여정의 시작이었습니다.
1. 리눅스 정착기와 윈도우 프로그래밍의 방황
처음 접한 페도라의 그놈 인터페이스는 맥을 어설프게 흉내 낸 듯해 정이 가지 않았습니다. 하지만 우연히 마주한 KDE 4.0은 필자에게 진정한 신문물이었습니다. 화려한 위젯과 플라즈마 데스크탑은 미래지향적이었고, 무언가 대단한 것을 다루고 있다는 만족감을 주었습니다.
이와는 별개로 필자의 프로그래밍 공부는 윈도우 환경에서 계속되고 있었습니다. 학교에서 배운 C 언어의 연장선에서 WinAPI 책을 먼저 펼쳤습니다. 하지만 운영체제의 뼈대를 만지는 그 경험은 생각보다 즐겁지 않았습니다. 특히 MoveTo, LineTo 같은 함수로 화면에 그림을 그리는 방식은 너무나 투박했고, 필자가 기대했던 현대적인 프로그래밍과는 거리가 멀어 보였습니다.
좀 더 세련된 무언가를 찾던 필자의 눈에 들어온 것이 C++이었습니다. 단순히 C에 ++가 붙었다는 이유만으로 훨씬 우월하고 강력한 언어라는 환상을 가졌고, 그 기세로 MFC 책까지 섭렵했습니다. 하지만 실습 없는 이론 공부는 모래성 같았습니다. 언어의 문법은 머리에 남았지만 정작 무엇을 만들지는 막막했습니다. 이후 Effective C++ 같은 명저들을 읽으며 갈증을 채우려 했지만, 실전 경험이 결여된 지식은 그저 높고 어려운 벽으로만 다가왔습니다.
2. Qt 프레임워크: 두 세계의 만남
평행선처럼 달렸던 리눅스 생활과 윈도우 프로그래밍 공부는 KDE의 기반인 Qt 프레임워크를 만나면서 하나로 합쳐졌습니다. WinAPI와 MFC에서 느꼈던 답답함이 비로소 해소되는 기분이었습니다. Qt는 우아하고 직관적이었으며, 무엇보다 필자가 매일 사용하는 리눅스 데스크탑 환경 자체가 거대한 실습장이 되어주었습니다. 우월해 보이는 언어를 찾아 헤매던 필자는 비로소 리눅스라는 토양 위에서 Qt라는 실용적인 도구를 통해 프로그래밍의 진짜 재미를 찾았습니다.
3. 한글 입력기라는 영원한 사투: iBus에서 fcitx까지
리눅스 사용자에게 가장 가혹한 형벌은 한글 입력이었습니다. 특히 세벌식을 사용하는 필자에게 입력기 셋업은 매일 반복되는 전쟁이었습니다. iBus나 SCIM은 틈만 나면 Firefox나 Chrome과 충돌하며 브라우저를 뻗게 만들었습니다.
개인이 직접 src.rpm을 수정하고 LaTeX 환경을 구축하며 버텼지만 결국 한계를 느꼈습니다. 그때 눈에 들어온 것이 한국어 사용자 커뮤니티가 활발했던 우분투였고, 자연스럽게 쿠분투에 정착하게 되었습니다. PPA라는 시스템은 개인이 관리하는 레포지토리가 어떻게 배포판 전체의 생산성을 높일 수 있는지를 여실히 보여주었습니다. 이는 오픈소스의 성공이 기술적 우위보다 사용자 커뮤니티의 두께에 있음을 증명하는 사례였습니다.
4. Rust의 태동과 딥러닝이라는 종결자
모질라의 행보를 지켜보던 필자는 Firefox가 플래시 플러그인을 불러오는 로더의 소스코드를 분석해본 적이 있습니다. extern "C"를 사용해 메모리에 단 하나만 존재하는 싱글톤 객체를 생성하고 플러그인을 로드하는 방식이었는데, 이 경계에서 발생하는 메모리 누수는 고질적인 문제였습니다. 이러한 절실함이 결국 Rust라는 언어를 태동시켰고, 필자는 기술이 어떤 필연성에서 탄생하는지를 목격했습니다.
오픈소스 내부에서는 늘 치열한 전쟁이 있었습니다. Python 2와 3의 갈등, Perl 커뮤니티의 내분은 마치 세상의 전부인 양 뜨거웠습니다. 하지만 이 전쟁을 끝낸 것은 커뮤니티 내부의 결론이 아니었습니다. 뒤늦게 몰려온 딥러닝이라는 거대한 물결이었습니다. 파이썬이 대세를 쥔 것은 언어적 순수성 때문이 아니라 시대적 요구를 가장 잘 수용했기 때문입니다. 내부의 항쟁은 의미가 없어졌고, 나중에 유입된 거대한 대중이 승자를 결정해버리는 모습을 보며 필자는 실용주의의 무서움을 느꼈습니다.
맺으며: 유산은 사용자의 경험 속에 흐른다
게임을 끊으려 시작했던 리눅스 생활은 필자에게 기술을 바라보는 완전히 새로운 시각을 선물했습니다. WinAPI와 MFC를 거쳐 Qt에 정착하고, 입력기 충돌로 고생하며 코드를 들여다보던 그 시절의 고뇌는 오늘날 fcitx의 안정성을 만들었습니다. PPA를 찾아 헤매던 열정은 현대 배포 시스템의 근간이 되었습니다. 기술의 유산은 이름 높은 개발자의 업적뿐만 아니라, 필자처럼 매일의 불편함을 코드로 고쳐나갔던 수많은 사용자들의 역사 속에 깊이 새겨져 있습니다.
댓글
댓글 쓰기