Neovim 0.1.0 릴리즈
어제 Neovim 0.1.0 이 릴리즈 됨
어제 Neovim 0.1.0 이 릴리즈되었습니다. 관련 토론은 Hacker News, r/vim, r/neovim 에서 볼 수 있습니다.
Neovim 을 만든 이유
20년 이상의 시간 동안, vim은 소수의 사람들만 이해할 수 있는 무시무시한 C89 코드를 조금씩 수정하여 30만 줄의 코드가 되었습니다. 문제는 이 거대한 vim 코드 베이스가 오직 한 사람 Bram Moolenaar 님의 책임으로 유지된다는 점입니다. 이것은 새로운 기능과 버그 수정을 어렵게 하고, vim 은 더 이상 plugin 생태계의 개발속도를 따라갈 수 없습니다.
그래서 우리는 다음의 목표를 위해 vim 의 코드를 공격적으로 refactor 하기로 했습니다. 버그 수정과 기능 추가를 빠르게 개선하기 위해 maintenance 를 단순화하고, 여러 개발자들과 분담하여 개발하며, core source 수정 없이 새롭고 현대적인 UI 구현이 가능하게 하고, 플러그인은 어떤 프로그래밍 언어로도 쓸 수 있게 만든다는 것입니다. 이러한 목표를 달성해서 새로운 개발자가 커뮤니티에 참여하게 만들고, 그러면 에디터는 개선된다는 흐름입니다.
무엇보다 중요한 것은 Neovim 은 vim 을 처음부터 다시 쓰는 프로젝트가 아니라는 점입니다. 기존 vim 의 편집 모델과 Vimscript 에 거의 영향을 주지 않습니다. 기존 Vimscript 플러그인은 Neovim 에서도 정상 작동합니다.
플러그인은 msgpack-rpc API, TCP 통신으로 플러그인과 UI 를 구현하는 구조네요 (github).
vim 을 만든 Bram Moolenaar 의 인터뷰
Neovim 에 대해 어떻게 생각하느냐는 질문에 Bram Moolenaar 님은 이렇게 답합니다. 하위호환을 무시하거나 특정 시스템 지원을 안 하는 것 등의 선택은 동의하지 않는다고 합니다. vim 코드가 오래되고 싫어서 “올바로(right)” 구현하기 위한 것 같은데, 오래된 코드는 ugly 하다는 것에는 동의한다고 합니다. 하지만 새로 구현하는 것은 아주 많은 노력이 필요할 것이라고 봅니다. Elvis 텍스트 에디터도 새로운 코드로 다시 구현을 시도했는데, vim 이 기능 확장을 하는 동안 Elvis 는 사용자를 잃었습니다. Elivs 가 좋은 코드로 작성되었는지는 모르지만 사용자는 모르는 일입니다.
neovim 의 좋은 기능들이 다시 vim 에 돌아오길 바란다고도 합니다. 누구나 좀 더 좋은 플러그인 지원, 좀 더 좋은 GUI 와 embedding 을 원하지만, 더 큰 질문은 그것을 어떻게 누가 적절하게 구현할 것이냐 라는 점입니다.