
개발자로 일한 지 10년이 훌쩍 넘어가면서, 저도 모르게 무거워진 도구들에 익숙해져 버린 것 같습니다. 최신형 맥북 프로를 사고 램을 64GB로 맞춰도, IDE 하나 띄우고 도커 컨테이너 몇 개 돌리다 보면 팬이 요란하게 돌아가는 상황이 이제는 너무나 자연스러운 일상이 되었으니까요. "하드웨어가 좋아졌으니 소프트웨어는 좀 무거워도 된다"라는 안일한 생각에 젖어 살던 차에, 우연히 깃허브에서 발견한 Gershwin-desktop 프로젝트는 제게 신선한 충격이자 잊고 있던 엔지니어링의 본질을 일깨워 주는 계기가 되었습니다. 마치 2000년대 초반, 리소스 하나하나를 아껴가며 코딩하던 시절의 그 치열함과 낭만을 다시 마주한 기분이었달까요.
Gershwin-desktop은 이름에서 풍기는 예술적인 느낌처럼, 초기 Mac OS X의 사용자 경험을 오픈소스 세상에 구현해 내려는 야심 찬 프로젝트입니다. 흥미로운 점은 이 프로젝트가 단순히 겉모습만 흉내 낸 테마 팩이 아니라는 사실입니다. 맥 OS의 뿌리라고 할 수 있는 NeXTSTEP의 오픈소스 구현체인 GNUstep을 기반으로 설계되었습니다. 우리가 흔히 쓰는 Cocoa 프레임워크의 사촌 격인 기술을 사용하여, Workspace, 터미널, 텍스트 편집기 같은 필수 유틸리티부터 X11 앱을 위한 윈도우 매니저까지 직접 구현하고 있습니다. 단순히 레트로 감성을 자극하는 것을 넘어, 운영체제의 근본적인 구조에 대한 깊이 있는 고민이 담겨 있다는 점이 시니어 개발자인 제 눈길을 사로잡았습니다.
가장 놀라웠던 것은 바로 경량화에 대한 그들의 집착에 가까운 성과였습니다. 요즘은 "Hello World" 하나만 띄우는 데에도 수백 메가바이트가 필요한 Electron 기반 앱들이 넘쳐나는 세상입니다. 그런데 Gershwin은 윈도우 매니저를 포함한 전체 시스템이 사용하는 저장 공간이 50MB 미만이라고 명시하고 있습니다. 처음 이 수치를 봤을 때 저는 제 눈을 의심했습니다. Clang/LLVM 툴체인을 활용해 소스 코드에서 몇 분 만에 전체 빌드가 가능하다는 설명까지 읽고 나니, 우리가 그동안 편의성이라는 이름 아래 얼마나 많은 리소스를 낭비하고 있었는지 뼈저리게 반성하게 되더군요. 최적화란 단순히 코드를 줄이는 것이 아니라, 시스템 전체의 아키텍처를 얼마나 효율적으로 설계하느냐에 달려 있다는 기본 원칙을 다시금 확인하는 순간이었습니다.
시스템 아키텍처 관점에서도 배울 점이 많습니다. Gershwin은 기본 운영체제와 완전히 독립적으로 구성되는 구조를 택했습니다. 이게 무슨 의미냐면, 리눅스나 BSD 위에서 돌아가지만 시스템의 핵심 파일들을 건드리지 않고도 작동한다는 뜻입니다. 루트 권한(Root privileges) 없이도 사용자 폴더(Users)에 애플리케이션 번들을 설치할 수 있고, 로컬 사용자와 네트워크 사용자를 명확히 분리하여 관리합니다. 제가 주니어 시절 의존성 문제(Dependency Hell)로 며칠 밤을 새우며 고생했던 기억을 떠올려보면, 이런 샌드박스 형태의 접근 방식은 운영체제 레벨에서 골치 아픈 충돌 문제를 얼마나 우아하게 해결할 수 있는지를 보여주는 훌륭한 사례입니다.
물론 이 프로젝트가 당장 여러분의 맥북이나 리눅스 머신을 대체할 수 있는 상용 제품 수준이라는 말은 아닙니다. 주로 GhostBSD나 데비안(Debian) 같은 환경에서 테스트 되고 있고, 일반 사용자가 쓰기에는 여전히 거친 부분이 많을 겁니다. 하지만 개발자로서 이 프로젝트를 들여다보는 것은 꽤 의미 있는 '지적 유희'이자 공부가 됩니다. 핵심 라이브러리의 버전이 공존하며 장기적인 ABI(Application Binary Interface) 안정성을 보장하려는 노력이나, 윈도우를 포함한 크로스 플랫폼 지원 가능성을 열어두고 있다는 점은 우리가 만드는 서비스가 지향해야 할 확장성과 안정성에 대해 많은 시사점을 던져줍니다.
오늘 커피 한 잔을 마시며 문득 든 생각은, 우리가 너무 '당연한 무거움'에 길들여져 있지 않나 하는 것입니다. Gershwin-desktop은 우리에게 "정말 그 많은 리소스가 필요한가?"라고 묻고 있습니다. 후배 개발자분들에게 꼭 전하고 싶은 이야기는, 화려한 최신 프레임워크를 익히는 것도 좋지만 가끔은 이렇게 기본에 충실하고 극도로 효율을 추구하는 프로젝트들의 코드를 뜯어보라는 것입니다. 그 안에는 유행을 타지 않는 엔지니어링의 정수가 숨어 있습니다. 50MB라는 작은 용량 속에 담긴 거대한 철학을 마주하며, 저 또한 내일 작성할 코드 한 줄에 조금 더 무게감을 실어야겠다고 다짐해 봅니다.


