Анонсирован проект Neovim, в рамках которого планируется провести работу по рефакторингу и модернизации кодовой базы текстового редактора Vim. В текущем виде код Vim развивается более 20 лет и состоит из более чем 300 тысяч строк на языке Си (C89), а вовсех нюансах кодовой базы Vim разбирается всего несколько человек, что затрудняет сопровождение и работу над усовершенствованием редактора.
Проблему также представляет метод сопровождения кодовой базы Vim. У проекта сейчас один мэйнтейнер, который достаточно скрупулезно подходит к процессу проверки и принятия патчей, что затрудняет продвижение изменений в Vim. В итоге, ядро Vim заметно отстаёт по темпу разработки от потребностей экосистемы разработчиков плагинов. Среди целей проекта Neovim называется упрощение процесса сопровождение кодовой базы, разделение полномочий между несколькими мэйнтейнерами и ускорение продвижения исправлений и новых возможностей. При этом проект не предусматривает переработку Vim с нуля, изменение модели редактирования Vim. Также будет сохранена поддержка vimscript и большинство плагинов на vimscript продолжат работу без изменений.
Для ведения разработки предлагается использовать GitHub. Для финансирвоания разработки была запущена кроудфандинг-кампания, в рамках которой за первый день было собрано 12 тысяч евро. Из практических изменений намечен перевод Vim на новую архитектуру плагинов, позволяющую разрабатывать расширения на любых языках программирования. Плагины будут выполняться в форме отдельных процессов, взаимодействующих с ядром vim при помощи механизма RPC.
После этого планируется создание нового современной пользовательского интерфейса, разработка которого будет вестись в качестве надстройки, не требующей изменения базовой части Vim, что избавляет от необходимости продвигать патчи в ядро Vim. Базовый код для поддержки GUI предлагается удалить из ядра Vim и использовать более универсальную прослойку, позволяющую создавать интерфейсы с использованием различных тулкитов. GUI-надстройки во многом напоминают плагины, а отличие от плагинов состоит в том, что плагины вызываются из Neovim, а GUI-надстройки выступают первичным процессом и вызывают функции Neovim.
На первом этапе работа сосредоточена на переводе кодовой базы на систему сборки cmake и проведения чистки кода от привязки к устаревшим системам и компиляторам. Вместо специфичного для платформ кода для организации ввода/вывода планируется задействовать библиотеку libuv.
Bram Moolenaar, текущий мэйнтейнер проекта Vim, скептически отнёсся к проекту Neovim, выразив опасение, что в результате чистки будет потеряна поддержка некоторых платформ и будут внесены новые ошибки. По его мнению, полный рефакторинг не является выходом. Вместо этого лучше потратить силы на улучшение того, что уже есть или на проведение небольших переработок, нацеленных на улучшение работы Vim для пользователей.