클래식 맥 OS를 현대에 부활시키다
요즘은 macOS Sequoia가 나오는 시대지만, 1984년에 처음 세상에 나온 오리지널 매킨토시 운영체제를 기억하시나요? 흑백 화면에 깜빡이는 커서, 최초의 대중적인 GUI 운영체제였던 그 시절의 Mac OS를 API 레벨에서 다시 구현하는 프로젝트가 있어요. 이름은 Advanced Mac Substitute이고, 68k 매킨토시의 Toolbox API를 현대 환경에서 다시 만들고 있는 프로젝트예요.
"에뮬레이터랑 뭐가 다른 거야?"라고 생각할 수 있는데, 여기서 중요한 차이가 있어요. 일반적인 에뮬레이터는 하드웨어 자체를 소프트웨어로 흉내내는 거잖아요. Motorola 68000 CPU의 명령어를 하나하나 시뮬레이션하고, 메모리 맵을 재현하고, 입출력 장치까지 가상으로 만드는 식이죠. 하지만 Advanced Mac Substitute는 접근이 달라요. 원래 Mac OS가 애플리케이션에게 제공하던 API(Application Programming Interface)를 다시 구현하는 거예요. 마치 Wine이 Windows API를 리눅스에서 다시 구현해서 Windows 프로그램을 돌리는 것과 비슷한 방식이에요.
어떻게 동작하는 건가요
좀 더 구체적으로 들어가볼게요. 1980년대 매킨토시 애플리케이션들은 Toolbox라고 불리는 API 세트를 통해 운영체제와 소통했어요. 윈도우를 그리고, 메뉴를 만들고, 파일을 읽고, 이벤트를 처리하는 모든 작업이 Toolbox 호출을 통해 이루어졌죠. 대표적으로 QuickDraw(그래픽), Window Manager(윈도우 관리), Menu Manager(메뉴), File Manager(파일 시스템) 같은 것들이 있었어요.
Advanced Mac Substitute는 이 Toolbox API들을 하나하나 다시 구현해요. 원래의 68k 바이너리가 Toolbox 함수를 호출하면, 원본 ROM에 있던 코드 대신 이 프로젝트가 만든 새로운 구현체가 응답하는 거예요. 그래픽 출력은 현대 운영체제의 그래픽 시스템으로 매핑되고, 파일 접근은 호스트 운영체제의 파일 시스템을 통하게 되죠.
이 프로젝트에서 특히 흥미로운 부분은 v68k라는 자체 68k 프로세서 에뮬레이터를 포함하고 있다는 거예요. CPU 에뮬레이션은 필요하지만(당연히 현대 컴퓨터에 68000 CPU가 없으니까요), 운영체제 레벨의 동작은 에뮬레이션이 아니라 재구현이라는 점이 핵심이에요. 이 조합 덕분에 원본 Mac OS ROM 없이도 클래식 맥 소프트웨어를 실행할 수 있어요. 이건 법적으로도 의미 있는 차이인데, 원본 ROM은 여전히 Apple의 저작권 아래에 있거든요.
왜 이런 프로젝트가 의미 있을까
"그냥 Mini vMac이나 Basilisk II 같은 에뮬레이터 쓰면 되지 않나?"라고 생각할 수 있어요. 맞아요, 클래식 맥 소프트웨어를 돌리는 게 목적이라면 기존 에뮬레이터가 더 실용적이에요. 하지만 Advanced Mac Substitute의 가치는 다른 데 있어요.
첫째, ROM 의존성을 제거한다는 점이에요. 기존 에뮬레이터는 대부분 원본 Mac ROM 이미지가 필요한데, 이걸 합법적으로 구하기가 점점 어려워지고 있거든요. API 수준의 재구현은 이 문제를 우회할 수 있어요.
둘째, 소프트웨어 보존(software preservation) 관점에서 큰 의미가 있어요. 1980-90년대에 만들어진 수많은 매킨토시 소프트웨어들이 있는데, 이걸 미래에도 실행할 수 있으려면 원본 하드웨어에 의존하지 않는 방법이 필요하잖아요. API 재구현은 원본 코드의 동작을 가장 정확하게 보존할 수 있는 방법 중 하나예요.
셋째, 시스템 프로그래밍의 교육적 가치가 엄청나요. 운영체제가 애플리케이션에게 어떤 추상화를 제공하는지, API 설계가 어떻게 변화해왔는지를 이 프로젝트를 통해 직접 볼 수 있거든요. 1980년대의 API와 현재의 API를 비교해보면, 40년간 운영체제 설계가 어떻게 발전했는지를 한눈에 느낄 수 있어요.
Wine과의 비교
앞에서 Wine을 잠깐 언급했는데, 좀 더 비교해볼게요. Wine은 Windows API를 리눅스(및 macOS)에서 재구현해서 Windows 프로그램을 네이티브에 가깝게 돌려주잖아요. Advanced Mac Substitute도 같은 철학이에요. 다만 Wine은 수십 년간 수백 명이 개발해온 거대한 프로젝트인 반면, Advanced Mac Substitute는 훨씬 소규모라는 차이가 있죠.
비슷한 프로젝트로 Darling이라는 것도 있어요. 이건 macOS의 Darwin/Cocoa API를 리눅스에서 재구현하는 프로젝트인데요, Advanced Mac Substitute가 클래식 Mac을 대상으로 한다면 Darling은 현대 macOS를 대상으로 하는 셈이에요. 또 레트로 컴퓨팅 쪽에서는 AROS(AmigaOS 재구현)나 ReactOS(Windows NT 재구현) 같은 프로젝트도 같은 맥락에 있어요.
한국 개발자에게 주는 시사점
당장 실무에 쓸 일은 없을 거예요. 하지만 이 프로젝트에서 배울 점은 꽤 많아요.
시스템 프로그래밍에 관심 있는 분들에게는 보물 같은 학습 자료예요. 운영체제의 API가 어떻게 구성되는지, 그래픽 시스템이 어떻게 동작하는지, 이벤트 루프가 어떻게 설계되는지를 실제 코드로 볼 수 있거든요. 특히 요즘 "로우 레벨을 공부하고 싶은데 어디서부터 시작하지?"라는 질문이 많잖아요. 1980년대의 시스템은 현대 운영체제보다 훨씬 단순하기 때문에 전체 구조를 파악하기가 수월해요.
또한 API 호환성 레이어를 만드는 경험은 실무에서도 가치가 있어요. 레거시 시스템을 마이그레이션할 때 "기존 API는 유지하면서 내부 구현만 교체한다"는 전략을 쓰는 경우가 많은데, 이게 바로 Advanced Mac Substitute가 하는 일이거든요. 규모는 다르지만 원리는 같아요.
마무리
Advanced Mac Substitute는 단순한 향수 프로젝트가 아니라, "소프트웨어는 하드웨어보다 오래 살아남아야 한다"는 신념을 코드로 실천하는 프로젝트예요. 오래된 기술을 보존하는 것이 새로운 기술을 만드는 것만큼이나 중요한 일이라는 걸 보여주고 있죠.
여러분이 만약 40년 뒤에도 돌아갈 소프트웨어를 만든다면, 어떤 점을 신경 써서 설계하실 건가요?
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공