Бывший техдиректор NPM представила распределённый репозиторий пакетов Entropic
СиДжей Сильверио (CJ Silverio), в конце прошлого года покинувшая пост технического директора компании NPM Inc представила новый репозиторий пакетов Entropic, который развивается как распределённая альтернатива NPM, не подконтрольная конкретной компании. Код Entropic написан на JavaScript и распространяется под лицензией Apache 2.0. Проект развивается всего месяц и находится на стадии начального прототипа, но уже поддерживает базовые операции, такие как подключение, публикация и установка пакетов.
В качестве причины создания Entropic называется полная зависимость экосистемы NPM от компании NPM Inc, которая контролирует разработку пакетного менедежера и поддержание репозитория. Сложилась ситуация когда нацеленная на получение прибыли компания единолично контролирует систему от которой зависят миллионы разработчиков и приложений на JavaScript, и которая обрабатывает миллиарды загрузок пакетов в неделю.
Недавняя череда увольнений сотрудников, смена руководства и заигрывание NPM Inc с инвесторами создали ощущение неопределённости в отношении дальнейшем судьбы NPM и недоверия в том, что компания будет отстаивать интересы сообщества, а не инвесторов. По мнению Сильверио бизнесу NPM Inc нельзя доверять так как у сообщества нет рычагов для привлечения его к ответственности за совершаемые действия. Более того, ориентация на получение прибыли мешает реализации первичных с точки зрения сообщества, но не приносящих денег и требующих дополнительных ресурсов возможностей, таких как поддержка верификации по цифровой подписи.
Сильверио также сомневается, что NPM Inc заинтересована в оптимизации взаимодействия со своим бэкендом, так как это приведёт к снижению потоков данных, потенциально интересных с точки зрения монетизации. При каждом запуске команды «npm audit» во вне отдаётся содержимое файла package-lock, включающего много интересных сведений о том, чем занимается разработчик. В качестве реакации несколько видных разработчиков из сообщества JavaScript/Node.js начали разработку альтернативы, не подконтрольной отдельным компаниям.
Система Entropic использует принцип федеративной сети, в которой разработчик на своих мощностях может развернуть сервер c репозиторием применяемых им пакетов и подключить его к общей распределённой сети, объединяющей в единое целое разрозненные частные репозитории. Entropic подразумевает сосуществование многих репозиториев, взаимодействие с которыми осуществляется в рамках обычного рабочего процесса.
Все пакеты разделяются с использованием пространств имён и включают информацию о хосте, на котором размещается их первичный репозиторий. Пространство имён по сути представляет собой имя владельца пакета или группы мэйнтейнеров, имеющих право на выпуск обновлений. В общем виде спецификация на пакет выглядит как «namespace@repohost.com/pkg-name». Меатаданные и сведения о зависимостях определяютсяв формате TOML.
Для управления предоставляется инструментарий командной стоки, упрощающий развёртывания репозиториев в своей локальной сети. Entropic предлагает принципиально новые файлово-ориентированный API и систему хранения, которые минимизируют объём загружаемых по сети данных. Entropic преподносится как универсальная система, которую можно применять для создания репозиториев для пакетов на любых языках программирования, но, тем не менее, Entropic разрабатывается с оглядкой на JavaScript и наилучшим образом подходит для проектов на данном языке.
В случае размещения в локальном репозитории пакета, связанного зависимостями из других репозиториев, данные пакеты зеркалируются в локальном репозитории. Таким образом локальный репозиторий становится самодостаточный и включает копии всех необходимых зависимостей. Имеется прослойка для взаимодействия с классическим репозиторием NPM, который обрабатывается как доступный в режиме только для чтения архив. В том числе можно устанавливать пакеты из NPM, используя локально развёрнутые окружения Entropic.
© OpenNet