기타 Lobsters · 2일 전

"이맥스에는 플러그인 따위 없다"… 개발자가 밝힌 이유

핵심 요약
  • 한 이맥스 개발자가 이맥스의 확장 기능을 '플러그인'이라고 부르는 것에 반대하며 그 근거를 밝혔습니다.
  • 일반 에디터의 플러그인은 정해진 API 안에서만 작동하지만, Elisp는 이맥스 본체 코드와 동일한 런타임 환경을 공유해 핵심 동작까지 자유롭게 개조할 수 있기 때문입니다.
  • 결국 이맥스는 런타임에 직접 수정 가능한 리스프 머신이므로 제한된 형태의 플러그인 개념 자체가 필요 없다고 결론지었습니다.
요약 전설적인 텍스트 에디터 이맥스(Emacs) 진영에서는 '플러그인(Plugin)'이라는 단어를 둘러싼 독특한 자부심 섞인 논쟁이 종종 벌어집니다. 해외 기술 블로그 Irreal의 운영자는 과거 이맥스 확장 기능을 두고 '플러그인'이라 부르는 세태에 불만을 제기했다가 일부 반발을 샀던 일화를 회상하며, 왜 이맥스에는 플러그인이 없다고 보아야 하는지 그 구조적 본질을 짚었습니다. 글쓴이에 따르면, 일반적인 프로그램에서 '플러그인'이란 호스트 프로그램이 사전에 정의해 둔 제한적인 API 규격 내에서만 동작하며 일부 기능을 덧붙이는 코드를 뜻합니다. 루아(Lua)나 자바스크립트(JavaScript) 등으로 확장 기능을 작성하는 타 에디터들이 대표적인 예로, 이런 환경에서는 API가 허용하지 않는 기본 동작 방식을 바꾸거나 엔진 자체의 핵심 알고리즘을 개선할 수 없습니다. 하지만 이맥스는 태생부터 전혀 다릅니다. 이맥스에서 사용하는 Elisp(Emacs Lisp)는 나중에 덧붙여진 스크립트 언어가 아니라, 에디터 본체 자체가 만들어진 기반 언어입니다. 사용자가 직접 작성한 Elisp 코드는 이맥스 내장 기본 코드와 완전히 동일한 환경에서 실행되며, 시스템 내부적으로 기본 코드와 사용자 코드를 아예 구분하지 않습니다. 심지어 사용자가 만든 패키지가 거의 수정 없이 이맥스 코어(기본 내장 시스템)로 그대로 편입되는 일도 흔합니다. 결국 C 언어로 작성된 극히 일부 기반부를 제외하면, 이맥스는 실행 중에 사용자가 거의 모든 내부 시스템에 접근하고 수정할 수 있는 일종의 '리스프 머신(Lisp Machine)'입니다. 코드를 고치기 위해 프로그램을 종료하고 다시 컴파일할 필요도 없이, 실행 중인 이미지 자체를 실시간으로 직접 조작할 수 있습니다. 작성자는 이맥스가 플러그인 체계를 도입하지 않은 것은 '필요가 없기 때문'이라며, 이맥스의 확장 기능은 플러그인이 아니라 에디터 그 자체라고 강조했습니다.
Sponsored · 광고