Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM

В сообществе разработчиков на языке JavaScript, использующих пакетный менеджер NPM, произошёл инцидент с необоснованным захватом прав на один из модулей, размещённых в репозитории NPM. В последующем, реакция автора захваченного модуля привела к нарушению работы ряда крупных проектов, в том числе Node и Babel.

Конфликт развернулся вокруг размещённого в репозитории NPM модуля kik, предоставляющего инструменты для быстрого создания новых проектов на языке JavaScript. С автором модуля связался юрист компании, развивающей программу для мгновенного обмена сообщениями Kik и потребовал удалить или переименовать модуль, так как его имя пересекается с зарегистрированной торговой маркой. Автор модуля (Azer Koçulu) отказался, так как имя модуля основано на термине «Kickstart», функциональность не имеет ничего общего с обменом сообщениями, а сервис Kik.com запущен уже после создания модуля kik.

После отказа юрист обратился к администраторам репозитория NPM, которые не стали вступать в конфликт и передали права на модуль компании Kik Interactive Inc. Автор модуля потерял веру в открытость проекта NPM и удалил все свои разработки из NPM. Проблема в том, что Azer Koçulu является достаточно известным разработчиком, подготовившим более 250 модулей для NPM. Так как многие модули используются в различных проектах, из-за потери зависимостей возможность сборки этих проектов при помощи NPM была блокирована.

Особенно существенные проблемы возникли из-за удаления модуля left-pad, который выполняет простейшую функцию добавления лидирующих пробелов для доведения строки до заданного размера и содержит всего 11 строк кода. Среди зависимых от left-pad проектов оказались Node, React и Babel.

Удалением ряда известных модулей воспользовались предприимчивые деятели, которые разместили в NPM собственные подставные модули с именами, совпадающими с удалёнными модулями. Не исключено, что эти модули совершают скрытую вредоносную активность. Неработоспособность многих крупных проектов подтолкнула администраторов NPM совершить второе злоупотребление — они восстановили left-pad в репозитории, вопреки решению автора модуля.

Итогами инцидента стали размышления о степени независимости NPM и необходимости создания действительно свободной альтернативы. Кроме того, привлечено внимание к порочности практики необдуманного использования модулей, в условия продемонстрированной простоты захвата контроля над разработкой и вхождения в зависимость от решений автора модуля, который может удалить свой модуль и нарушить необходимую для сборки цепочку зависимостей. Вопросы также вызывает целесообразность использования простейших модулей, написание функциональности которых занимает несколько минут. Например, модуль isArray содержим всего одру строчку кода, но используется в 72 других пакетах и бешено популярен, например, только в течение февраля он загружен более 18 млн. раз.

©  OpenNet