Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
В сообществе разработчиков на языке JavaScript, использующих пакетный менеджер NPM, произошёл инцидент с необоснованным захватом прав на один из модулей, размещённых в репозитории NPM. В последующем, реакция автора захваченного модуля привела к нарушению работы ряда крупных проектов, в том числе Node и Babel.
Конфликт развернулся вокруг размещённого в репозитории NPM модуля kik, предоставляющего инструменты для быстрого создания новых проектов на языке JavaScript. С автором модуля связался юрист компании Kik Interactive Inc, развивающей программу для мгновенного обмена сообщениями Kik и потребовал удалить или переименовать модуль, так как его имя пересекается с зарегистрированной торговой маркой. Автор модуля (Azer Koçulu) отказался, так как имя модуля основано на термине "Kickstart", функциональность не имеет ничего общего с обменом сообщениями, а сервис Kik.com запущен уже после создания модуля kik.
После отказа юрист обратился к администраторам репозитория NPM, которые не стали вступать в конфликт и передали права на модуль компании Kik Interactive Inc, которая намерена заменить kik на одноимённый собственный модуль с реализацией API для доступа к её системе обмена сообщениями. Автор оригинального модуля потерял веру в открытость проекта NPM и, после продемонстрированного пренебрежения к нему, как к участнику проекта, удалилвсе свои разработки из NPM. Проблема в том, что Azer Koçulu является достаточно известным разработчиком, подготовившим 273 модуля для NPM. Так как многие модули используются в различных проектах, из-за потери зависимостей возможность сборки этих проектов при помощи NPM была блокирована.
Особенно существенные проблемы возникли из-за удаления модуля left-pad, который выполняет простейшую функцию добавления лидирующих пробелов для доведения строки до заданного размера и содержит всего 11 строк кода. В феврале было загружено около 2.5 млн копий left-pad, а среди зависимых от него разработок оказались тысячи проектов, в том числе Node, React и Babel. Неработоспособность многих крупных проектов подтолкнула администраторов NPM совершить второе злоупотребление - они восстановили left-pad в репозитории, вопреки решению автора модуля.
Удалением известных модулей также воспользовались предприимчивые деятели, которые разместили в NPM собственные подставные модули с именами, совпадающими с удалёнными модулями. Не исключено, что эти модули совершают скрытую вредоносную активность.
Итогами инцидента стали размышления о степени независимости NPM и необходимости создания действительно свободной альтернативы. Кроме того, привлечено внимание к порочности практики необдуманного использования модулей, в условия продемонстрированной простоты захвата контроля над разработкой и зависимости от решений автора модуля, который может удалить свой модуль и нарушить необходимую для сборки цепочку зависимостей. Вопросы также вызывает целесообразность использования простейших модулей, написание функциональности которых занимает несколько минут. Например, модуль isArray содержит всего одну строчку кода, но используется в 72 других пакетах и бешено популярен, например, только в течение февраля он загружен более 18 млн. раз.