GNU Emacs(출처=GNU.org)
| |

자유 소프트웨어 운동의 구현체 ‘EMACS’ 50주년

유닉스의 오픈소스 텍스트 에디터 ‘이맥스(EMACS)’가 탄생 50주년을 맞았다. 기술전문가 심슨 가핀켈은 지난달 20일 MIT테크놀로지리뷰에 게재한 글을 통해 EMACS의 역사적 의미를 자유 소프트웨어 운동의 탄생이라고 평가했다.

심슨 가핀켈은 ‘EMACS 창립 50주년: MIT 인공지능연구소의 텍스트 편집기가 어떻게 자유 소프트웨어 운동을 탄생시켰나’란 글에서 “EMACS는 1976년 MIT 인공지능 연구소의 초기 비디오 단말기에서 처음 실행됐지만, 그 핵심 개념이 워낙 강력해서 이후 수십년 동안 여러 운영체제용으로 재작성됐다”며 “애플은 맥 OS X에 EMACS를 포함하여 배포하기도 했고, 나아가 EMACS를 중심으로 시작된 소프트웨어 공유 커뮤니티는 현대 자유 소프트웨어 운동과 GNU/리눅스 운영 체제의 탄생에 기여했다”고 적었다.

EMACS는 자유 소프트웨어 운동이란 철학을 실제로 작동하는 소프트웨어로 구현한 첫 성공 사례다. 리처드 스톨먼이 주창한 자유 소프트웨어의 가치를 개발자가 일상적으로 경험하게 만든 도구란 역사적 의의를 갖는다.

EMACS의 탄생에 여러 설이 있지만 가핀켈의 글에 의하면, EMACS의 시초는 1963년 MIT의 댄 머피가 개발한 TECO(Text Editor and Corrector)다. TECO는 PDP-1 컴퓨터용도로 개발된 텍스트 편집기였다. 명령어는 대문자로 이뤄졌으며, ‘I’ 키를 입력해 텍스트를 삽입하고, ‘D’ 키를 입력해 문자를 삭제하는 식이었다. TECO는 코드 편집을 위한 새 매크로를 만드는 언어로 발전했다.

1971년 MIT 76학번 칼 미켈슨은 TECO를 위해 비디오 디스플레이를 갖춘 유리 텔레타이프 단말기 용도의 추가 프로그램으로 ‘Control-R’을 개발했다. Control-R은 편집중 파일의 변경 사항을 화면에 바로 표시해 변경 사항을 확인하려 각 줄을 다시 인쇄하지 않게 했다.

1976년 MIT 인공지능 연구소 연구원 리처드 M. 스톨먼은 스탠포드 인공지능 연구소를 방문해 ‘E’란 이름의 전체화면 편집기를 보게 된다. 그는 이에 영감을 받아 MIT에서 Control-R 개선 작업에 나섰다. 특히 모든 키에 자체 매크로를 입혀 키를 누르면 매크로를 실행하도록 했다. Control-R은 더 쉽게 사용자 정의를 할 수 있게 돼 이후 새 명령어 추가가 활발히 이뤄졌다.

1977년 연구실 대학원생이었던 가이 스틸 주니어는 다른 연구원의 프로그램 디버깅을 자주 도와야했는데, 사람마다 다른 Control-R 명령어 세트를 표준화하자는 아이디어를 떠올리게 된다. 데이비드 문이 가이 스틸 주니어의 프로젝트에 도움을 줬고, 리처드 스톨먼이 여기 합류해 이후 프로젝트를 주도하게 됐다. 이들은 연구실 키보드의 메타 키를 활용하는 표준 명령어 세트를 만들었다. 메타 키(Meta key)는 현재 사라진 키보드 키 중 하나로 Ctrl과 Alt 같은 특수 키의 하나다. EMACS 초기 개발진은 메타 키와 알파벳 키 조합을 눌러 명령어를 실행하게 했다. 메타 키는 현재 윈도우나 리눅스에서 Alt, 맥OS에서 Option 키로 대체됐다.

리처드 스톨먼과 초기 개발진은 이를 편집기 매크로(Editor Macros), 편집 매크로(Editing Macros) 등을 줄여 EMACS라 불렀다고 한다.

◈ 스테이블코인 이슈 브리핑 2026

일시 : 2026년 11월 19일 오후1시 ~ 오후 5시
장소 : 서울시 서초구 강남대로 499, 동일빌딩 3층 스페이스쉐어 주피터홀

가이 스틸 주니어는 리처드 스톨먼이 E와 EMACS란 이름을 만든 장본인이고, TECO 매크로 패키지를 가져다 지구상 가장 강력한 편집기로 탈바꿈시킨 공로의 99%, 99.9%, 99.99%, 99.999%는 리처트 스톨먼에게 있다고 밝혔다.

지금이야 EMACS가 초심자에게 다루기 까다로운 편집기로 여겨지지만, 만들어졌을 당시만 해도 쓰기 쉬운 편집 도구였다. EMACS의 상용 컴퓨터 확산을 이끈 버나드 그린버그는 EMACS가 기술적 경험 없는 사용자도 몇분에서 한시간 안에 편집 방법을 배울 수 있었다고 평했다.

리처드 스톨먼은 EMACS를 적극적으로 주변에 배포했다. 자기 테이프와 우편 봉투만 보내주면 무료로 나눠줬다. 그는 1981년 매뉴얼에서 “EMACS는 무료이며, 오히려 여러분은 EMACS 소프트웨어 공유 공동체에 가입하는 것”이라며 “회원 자격 조건은 EMACS 개선 내용을 다시 보내주는 것”이라고 썼다. 자유 소프트웨어 운동의 태동을 보여주는 대목이다.

버나드 그린버그는 1978년 허니웰의 케임브리지 정보시스템 연구소에 근무하고 있었는데, 이때 허니웰 자체 OS인 멀틱스용으로 ‘멀틱스 EMACS(Multics Emacs)’를 개발했다. 이 EMACS 버전은 1980년 허니웰 국제 소프트웨어 컨퍼런스에서 1등을 차지했고, 그린버그는 이를 판매하기 시작했다. 자바의 창시자 제임스 고슬링도 이 당시 자신만의 EMACS 버전을 만들어 상용 판매했다.

EMACS의 상용화 추세는 리처드 스톨먼이 자유 소프트웨어 운동에 나서게 된 시점과 비슷하다. 리처드 스톨먼은 폐쇄적인 상용 OS에 반발하며 누구나 자유롭게 공유하고 개선할 수 있는 OS를 만드는 프로젝트를 시작했다. 리처드 스톨먼은 벨 연구소의 유닉스 OS를 모델로 GNU 프로젝트를 구상했다. GNU는 ‘GNU는 유닉스가 아니다(GNU’s Not Unix)’의 줄임말이다. 유닉스와 달리 무료란 의미를 담았다.

스톨먼은 GNU의 첫 주요 응용 프로그램으로 GNU Emacs를 만들어 탑재했다. GNU Emacs는 그후 유닉스에서 파생된 리눅스를 통해 더 널리 쓰이게 된다. 애플은 2001년 유닉스를 기반으로 하는 맥OS X를 선보였는데, 이때 GNU Emacs를 포함시켰다.

버나드 그린버그의 멀틱스 EMACS는 리스프(Lisp) 언어로 구현됐다는 점에서 의미 있다. 리처드 스톨먼은 2002년 강연에서 멀틱스 EMACS가 Lisp을 편집기 확장 언어로 사용하는 방식의 효과를 입증했으며, 사무직 직원도 새로운 편집 명령을 직접 작성하게 했다고 평가했다. 리처드 스톨먼은 Lisp을 GNU Emacs의 핵심 확장 언어로 채택했다.

GNU Emacs는 Lisp으로 작성됐을 뿐 아니라, 사용자가 Lisp 언어로 편집기의 확장을 만들 수 있게 했다. 개발자는 자신에게 필요한 명령을 Lisp으로 직접 만들어 추가할 수 있다. Lisp은 EMACS가 거대한 확장성을 갖게 된 요인이다. 오늘날 VS코드 같은 IDE가 타입스크립트로 확장 기능을 붙이듯 EMACS는 확장형 소프트웨어 플랫폼의 기원으로 볼 만하다.

탄생 후 50년 간 EMACS는 수많은 변종 버전으로 뻗어나갔다. 너무 많아 목록화하기 힘들 정도인데, GNU Emacs는 지금도 개발되고 있다. 최신 버전은 8월 출시된 GNU Emacs 31.1이다.

80년대와 90년대를 지나 지금에 이르기까지 EMACS는 VI와 함께 개발자용 편집기 분야에서 양대 축을 형성했다. VI와 EMACS는 충성도 높은 사용자 사이에 첨예한 대립 구도를 형성했고, 이는 ‘에디터 전쟁’이란 개발자 문화 현상으로 발전했다.

유닉스 OS의 편집기에서 시작된 VI는 터미널에서 간결하고 효율적으로 텍스트를 조작하는데 초점을 맞췄다. 반면, EMACS는 사용자 스스로 작업 환경을 프로그래밍할 수 있다는 특징을 갖는다. VI는 여러 모드와 도구를 오가면서 편집하는 방식이지만, EMACS는 한 창 안에서 모든 기능을 이용하는 방식이다.

현재의 텍스트 편집기 시장은 VS코드로 사실상 천하통일됐다고 볼 수 있다. 때문에 VI와 EMACS 간 논쟁의 거의 의미없어졌다. VI는 후속제품 Vim으로 넘어가며 확장의 개념을 받아들여 발전하고, EMACS는 모드 개념을 받아들였다.

EMACS는 텍스트 편집기면서 일종의 OS로 여겨졌다. EMACS 안에서 거의 모든 소프트웨어 기능을 구현해 처리할 수 있기 때문이다. 다양한 언어의 코드를 작성하고 편집하는 것은 물론, 디버깅, 깃 버전 관리, 터미널 실행 등이 가능하고, 문서 작업과 일정 관리도 가능하다. 반복적인 편집 작업이나 개발 과정을 스크립트로 자동화할 수도 있다. EMACS를 사용하면 마우스를 거의 쓸 일이 없다.

오래된 소프트웨어지만 EMACS는 오늘날 AI 코딩 도구와 결합되며 그 철학적 가치를 다시 드러내고 있다. EMACS 안에서 LLM을 호출해 코드를 작성하거나 수정하고, AI 에이전트와 상호작용하는 방식이 발전하고 있다. gptel이란 LLM 클라이언트는 EMACS에서 오픈AI, 앤트로픽, 올라마, 제미나이 등의 모델을 호출할 수 있다. 문서 요약, 코드 생성, 질의응답, 도구호출, MCP 연동 등을 지원한다. Ellama란 도구는 텍스트 번역, 문서 요약, 코드 리뷰, 문장 교정 등 LLM 작업을 EMACS 내부에서 수행하게 한다. EMACS에서 AI 에이전트를 사용하는 경우 에이전트가 Lisp 함수를 호출해 편집기 자체를 조작할 수 있다. EMACS가 AI 에이전트의 실행 환경인 것이다.

글. 바이라인네트워크
<김우용 기자>yong2@byline.network

일간 바이라인 구독하기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


The reCAPTCHA verification period has expired. Please reload the page.