[Перевод] Я готов платить деньги тем, кто удалит свой модуль npm

Культура npm создает серьезную опасность для защиты программного обеспечения в мировых масштабах. Это крайне безответственно — позволять деревьям зависимостей разрастаться до таких размеров, что в них входят тысячи зависимостей, связывающих вас с производителями, о которых вы никогда не слышали и которых едва ли могли критически оценить. И всё это служит для разрешения простых задач, с которыми и без этого можно было бы справиться в два счета, или, если всё как следует обдумать, вообще обойтись без них.

Нужно что-то придумать, чтобы остановить это безумие, но что? У меня есть идея. Помните историю с left-pad? Неплохо бы устраивать такое почаще.

image-loader.svg


Предлагаю вознаграждение настоящими деньгами всем, кто удалит свой модуль npm. Точная сумма будет рассчитываться по приведенной формуле; она предполагает, что модули с большим количеством скачиваний и малым числом строк кода будут оцениваться выше. Есть еще одно условие: модуль вы должны удалить без предупреждения, чтобы все, кто от него зависят, просто проснулись и обнаружили поломанный билд.

Давайте рассмотрим isArray в качестве примера. Там всего четыре строки кода.

var toString = {}.toString;

module.exports = Array.isArray || function (arr) {
return toString.call (arr) === '[object Array]';
};

Если учесть, что число скачиваний составляет 51 миллион, получается итоговая сумма в 710 $.
Чтобы избежать мошенничества, согласовывать каждое удаление мы должны заранее. Я ознакомлюсь с вашим модулем, чтобы убедиться, что он соответствует требованиям и проверить, нет ли там чего подозрительного — например, накрутки в скачиваниях или минификации в коде. Удалять модуль можно только после того, как мы обо всем договоримся, иначе я уже не смогу узнать число скачиваний и строк.

Возможно, я попрошу вас немного подождать с удалением, чтобы между исчезновениями модулей и сопутствующими вспышками хаоса проходило по несколько недель — это нужно, чтобы добиться максимального эффекта. И наконец, сумма выплат в каждом случае будет составлять не более 1000 $, а то жить мне тоже на что-то надо.

Ну что, по рукам? Подать заявку можно здесь.

Ну ладно, шутки в сторону — это несерьезный пост. Я не собираюсь платить вам деньги за удаление модулей npm и погружать экосистему Node в мрачную эпоху смуты тоже не планирую. Тем более что это все равно не сработало бы.

Но я надеюсь, что сама мысль породила страх в сердцах многих разработчиков на Node, которые читали этот текст, а также представителей тех сообществ, которые последовали их примеру. Что вы будете делать, если одна из зависимостей исчезнет? Что если кто-нибудь изучит минифицированный код у вас на сайте, откопает какую-нибудь богом забытую зависимость и подкупит людей, которые занимаются поддержкой?

Большинство разработчиков на Node не имеют представления, что творится у них в зависимостях. Многие из этих деревьев содержат тысячи элементов и никогда не проходили ревизию. Это безответственный подход и с этим нужно что-то делать.

В большей части моих проектов менее ста зависимостей; немало и таких, где их меньше десяти. В некоторых зависимостей нет вообще. Это не случайность. Как ни печально, платить приходится за всё, поэтому введение зависимости — это серьезное решение, которое обсуждается всей командой. Новая зависимость подвергается проверке, ее здоровье и прогнозы на будущее получают оценку, и в дальнейшем разработчики не жалеют времени на то, чтобы повторять этот процесс и при необходимости менять курс.

© Habrahabr.ru