Pull to refresh

Как npm стал самым популярным пакетным менеджером в мире

Reading time4 min
Views11K


Со вступительной речью на конференции Node.js Interactive выступила Эшли Уильямс (Ashley Williams, она же @ag_dubs), менеджер сообщества разработчиков и контента в npm. Она рассказала о текущем состоянии дел в компании и рассказала, как фирма зарабатывает деньги. На самом деле npm — это коммерческая компания, которая получает прибыль от предоставления корпоративных услуг. Этого дохода достаточно, чтобы поддерживать деятельность в качестве нормальной компании, платить зарплату персоналу (сейчас в компании 23 сотрудника), и ещё остаётся на поддержку бесплатного репозитория пакетов npm.

Немного статистики. За последние 28 дней пользователи npm установили 18 млрд пакетов. Для установки этих пакетов им потребовалось скачать 6 млрд пакетов из репозитория. Примерно две трети установок обошлись без скачивания пакетов, а были выполнены из кэша. Вот как выглядит график количества скачиваний за 28 дней, с 2013 года.



На бурный рост npm указывает и количество опубликованных в репозитории пакетов в неделю. На графике — статистика за последние два года. Если в начале 2015 года в репозитории публиковалось менее 12 500 пакетов в неделю, то самая последняя статистика в январе 2017 года — 39 692 пакета.



Почти 40 000 пакетов всего за одну неделю.

Далее — статистика по новым пакетам (тоже еженедельная) за два года. Из неё исключены обновления старых пакетов.



На графике обращают на себя четыре потрясающих пика в первой половине 2016 года и один провал в декабре 2015 года. Эшли Уильямс затруднилась объяснить, чем объясняются эти аномалии: «Наверное, многие разработчики были взбудоражены в то время», — предположила она с улыбкой.

Всего за одну последнюю неделю в репозиторий загрузили 4685 новых пакетов.

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

Всего в репозитории npm сейчас насчитывается 102 460 активных «издателей» (авторов пакетов). Это тоже немалое количество.

Ниже статистика по количеству новых регистраций пользователей.



На сегодняшний день в npm зарегистрировано 314 582 пользователя. Как понятно из предыдущих цифр, примерно каждый третий зарегистрированный пользователь является активным издателем и автором пакета или нескольких пакетов.

Сотрудница npm не обошла вниманием скандальную историю с пакетом left-pad — 11 строками кода, «которые поломали интернет».

Напомним, в марте 2016 года Веб-разработчик Азер Кочулу (Azer Koçulu), автор более 250 модулей для Node.js, попал в неприятную ситуацию. Он получил письмо от юриста компании Kik (мессенджер) с требованием отозвать модуль с аналогичным названием kik из npm. Программист отказался, тогда юрист обратился напрямую в компанию npm, и она сменила владельца kik без разрешения автора. Разработчик со злости решил отозвать все свои модули — более 250 штук. К сожалению, среди них оказался и left-pad — маленький модуль из 11 строк кода на JavaScript. Несмотря на простоту модуля, в тысячах приложений менеджер npm теперь не мог установить зависимости между пакетами.

Эшли Уильямс сказала, что компания осознала всю серьёзность проблемы и принесла свои глубочайшие извинения, а буквально через неделю после той истории подготовила новые правила снятия пакетов из репозитория. По новым правилам, вы имеете право снять пакет только в течение 24 часов. После этого времени отзыв допускается только с разрешения администрации. Служба поддержки проверит, не ломает ли этот модуль какие-нибудь зависимости в других пакетах. Если ломает, то отзыв запрещают. В этом случае управление или отдадут другому разработчику, или постараются связаться с автором того пакета, где есть лишняя зависимость.

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

В ответ компания внедрила новую политику отказа от прав на пакеты (dissociate and deprecate), чтобы авторы могли оставить пакет, просто убрав своё имя из реестра для пакета, который больше не хотят поддерживать.

Таким образом была решена проблема с ломкой зависимостей между тысячами пакетами во всей экосистеме npm в случае удаления какого-то одного модуля. «Теперь реестр неуязвим», — подвела итог Эшли Уильямс. Катастрофы по примеру left-pad больше не произойдёт. Компания также подчёркивает высокий процент аптайма реестра (статистика в реальном времени показывается на ping.npmjs.com) и высокую производительность npm, которая в несколько раз превосходит производительность, например, git.



При пустом кэше npm примерно на 75% быстрее git.

Популярность JavaScript объясняет быстрый рост реестра npm и тот факт, что к настоящему времени npm ещё в 2014 году стал самым популярным пакетным менеджером в мире. Сейчас по количеству пакетов он более чем вдвое превосходит ближайший пакетный менеджер Maven Central (Java).



Несмотря на статус крупнейшего пакетного менеджера в мире, npm ещё видит перспективы для роста. В конце концов, в мире примерно 18 миллионов программистов, а 85% из них пишут на JavaScript (в каком-то смысле хотя бы частично). Это означает, что в мире примерно 15 миллионов разработчиков на JavaScript. Сейчас не более 50% из них используют npm (около 5,7 млн пользователей), так что перспективы для роста есть.

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

Tags:
Hubs:
+17
Comments26

Articles

Change theme settings