На этой неделе сообщество Node.js подверглось могучим потрясениям.
Если вы старый пират, далёкий от всех этих новомодных штук, я накоротко перескажу.
Есть такая Node.js, для странных людей, которые почему-то решили что на Javascript можно писать программы.
Ну, бог им судья: в конце концов, есть языки и похуже.
Я, например, на этой неделе написал два батника и не жужжу.
У Node.js есть свой пакетный менеджер и репозитарий пакетов, npm.
Потому что у всех нынче есть, чем нода хуже.
В репозитарии был пакет с именем kik за авторством какого-то Азера (имя, не обзывалка).
А ещё с таким именем есть какой-то мутный instant messenger, про который никто не знал.
И вот юристы этого мессенджера почему-то внезапно озаботились таким пересечением, и
написали Азеру — переименуй, мол, а то у нас торговая марка и могут быть проблемы.
Сами юристы считают что это не угроза, а попытка устаканить всё по-хорошему, но как-то нет.
Азер ответил в духе "я вас нибаюс", и юристы пошли со своими пожеланиями к администраторам npm.
Администраторы оказались более сговорчивыми, и спорный пакет распубликовали / удалили.
Видя такое свинство, Азер решил убрать все свои пакеты с npm — мол, не оправдали доверия.
Этих пакетов оказалось ~270 штук (кто-то напрягся уже на этом месте, и правильно — чуть дальше дойдём до этой мякотки).
Среди них оказался пакет left-pad, который популярный, и его пропажа вызвала много боли у всех, у кого сломался билд.
Было много суеты, пакет возвращали, докладывали недостающие версии и всё такое - в общем, буря негодования и всякая активность.
Теперь обещаная мякотка. Как же так вышло-то, что Азер в одно лицо наколбасил три сотни модулей?
Ведь модуль — это серьёзная работа, много кода, поддержка, стандарты, API?
Ответ прост: на ноде "модуль" запросто может оказаться размером в пять строк содержательного кода, а то и вовсе в одну.
Вроде кусочков кода из perlfaq, которые старые пираты тупо копипастили себе в программы.
Реально, у них есть модуль для проверки "является ли аргумент массивом",
модуль для "является ли аргумент положительным числом",
а у этого последнего есть особливое примечание: мол, 0 мы тут положительным не считаем, а если вам надо чтоб считали - вот
рядом модуль с нужной характеристикой.
Пропавший left-pad, кстати, тоже был не сильно тяжеловесом: 11 строчек, а занимался выравниванием аргумента нулями/пробелами слева.
И чо, спросите вы, на весь модуль одиннадцать строчек?
Нет, что вы!
Там тесты, документация, комментарии, зависимости, версии!
Со всей шелухой, да помноженное на количество скачиваний - один только left-pad за месяц сделал npm-у 100Gb трафика.
Это до чего же надо было людей напугать копипастой кода, чтобы до такого дошло.
Или, я не знаю, разработчики уже забыли, что из интернета может что-то пропадать?
И что и сам-то интернет может быть недоступен?
Такие дела.