СиДжей Сильверио (CJ Silverio), в конце прошлого года покинувшая пост технического директора компании NPM Inc, представила (https://www.theregister.co.uk/2019/06/04/npm_cj_silverio_jav.../) новый репозиторий пакетов Entropic (https://www.entropic.dev), который развивается как распределённая альтернатива NPM, не подконтрольная конкретной компании. Код Entropic написан на JavaScript и распространяется (https://github.com/entropic-dev/entropic) под лицензией Apache 2.0. Проект развивается всего месяц и находится на стадии начального прототипа, но уже поддерживает базовые операции, такие как подключение, публикация и установка пакетов.
В качестве причины создания Entropic называется полная зависимость экосистемы NPM от компании NPM Inc, которая контролирует разработку пакетного менедежера и поддержание репозитория. Сложилась ситуация когда нацеленная на получение прибыли компания единолично контролирует систему от которой зависят миллионы разработчиков и приложений на JavaScript, и которая обрабатывает миллиарды загрузок пакетов в неделю.
Недавняя череда увольнений сотрудников, смена руководства и заигрывание NPM Inc с инвесторами создали ощущение неопределённости в отношении дальнейшем судьбы NPM и недоверия в том, что компания будет отстаивать интересы сообщества, а не инвесторов. По мнению Сильверио бизнесу NPM Inc нельзя доверять так как у сообщества нет рычагов для привлечения его к ответственности за совершаемые действия. Более того, ориентация на получение прибыли мешает реализации первичных с точки зрения сообщества, но не приносящих денег и требующих дополнительных ресурсов возможностей, таких как поддержка верификации по цифровой подписи.
Сильверио также сомневается, что NPM Inc заинтересована в оптимизации взаимодействия со своим бэкендом, так как это приведёт к снижению потоков данных, потенциально интересных с точки зрения монетизации. При каждом запуске команды "npm audit (https://docs.npmjs.com/cli/audit)" во вне отдаётся содержимое файла package-lock (https://docs.npmjs.com/files/package-lock.json), включающего много интересных сведений о том, чем занимается разработчик. В качестве реакции несколько видных разработчиков из сообщества JavaScript/Node.js начали разработку альтернативы, не подконтрольной отдельным компаниям.Система Entropic использует принцип федеративной сети, в которой разработчик на своих мощностях может развернуть сервер c репозиторием применяемых им пакетов и подключить его к общей распределённой сети, объединяющей в единое целое разрозненные частные репозитории. Entropic подразумевает сосуществование многих репозиториев, взаимодействие с которыми осуществляется в рамках обычного рабочего процесса.
Все пакеты разделяются с использованием пространств имён и включают информацию о хосте, на котором размещается их первичный репозиторий.
Пространство имён по сути представляет собой имя владельца пакета или группы мэйнтейнеров, имеющих право на выпуск обновлений. В общем виде спецификация на пакет выглядит как "namespace@repohost.com/pkg-name".
Меатаданные и сведения о зависимостях определяются в формате TOML (https://github.com/toml-lang/toml).Для управления предоставляется инструментарий командной стоки, упрощающий развёртывания репозиториев в своей локальной сети. Entropic предлагает принципиально новые файлово-ориентированный API (https://github.com/entropic-dev/entropic/tree/master/docs#apis) и систему хранения, которые минимизируют объём загружаемых по сети данных. Entropic преподносится как универсальная система, которую можно применять для создания репозиториев для пакетов на любых языках программирования, но, тем не менее, Entropic разрабатывается с оглядкой на JavaScript и наилучшим образом подходит для проектов на данном языке.
В случае размещения в локальном репозитории пакета, связанного зависимостями из других репозиториев, данные пакеты зеркалируются в локальном репозитории. Таким образом локальный репозиторий становится самодостаточный и включает копии всех необходимых зависимостей. Имеется прослойка для взаимодействия с классическим репозиторием NPM, который обрабатывается как доступный в режиме только для чтения архив. В том числе можно устанавливать пакеты из NPM, используя локально развёрнутые окружения Entropic.URL: https://www.theregister.co.uk/2019/06/04/npm_cj_silverio_jav.../
Новость: https://www.opennet.me/opennews/art.shtml?num=50830
Эм, npm имеет киллер фичу в том, что он хотя бы пытается искать пакеты с вирусней и дырами и хоть как-то на них реагировать, для того npm audit и создан. Если у каждого васи будет свой репозиторий, то подобные вещи перестанут работать.Вообще, основная проблема ноды перед другими языками в том, что, выражаясь лозунгами питона, она «не носит батарейки с собой» — её стандартная библиотека годится только для хелло ворлда, а на каждый чих приходится добавлять в зависимости сотни пакетов. Что стоит, вместо того, чтобы изобретать очередной нескучный пакетный менеджер, зайти на нпм, отсортировать пакеты по популярности и первые пару сотен из них, немного причесав, засунуть в стандартную библиотеку.
> Если у каждого васи будет свой репозиторий, то подобные вещи перестанут работать.Почему? Просто нужен отдельный открытый источник уязвимостей, в который ходит пакетный менеджер. К слову для npm audit можно свой источник проверок реализовать.
Тем, что не будет одного централизованного источника и тебе придется каждый раз думать, стоит ли доверять конкретному ресурсу. Хотя и сейчас приходится думать. Но сейчас хотя бы понятно куда стучать в случае откровенного палева, а с исходниками хостящимися непонятно где, добится их удаления намного сложнее
>её стандартная библиотека годится только для хелло ворлда, а на каждый чих приходится добавлять в зависимости сотни пакетовЭто точно.
Вчера на горизонте замаячила задача накидать интерфейс для сетевой тулзы.
Дай, думаю, поизучаю React.
Выполнил npx create-react-app, сгенерил он мне реактовский HelloWorld. Начинаю в нём копаться, зашёл в директорию с пакетами зависимостей, а там их 1000 штук.
1000 штук, Карл!
https://i.redd.it/tfugj4n3l6ez.png
>Вообще, основная проблема ноды перед другими языками в том, что, выражаясь лозунгами питона, она «не носит батарейки с собой» — её стандартная библиотека годится только для хелло ворлда, а на каждый чих приходится добавлять в зависимости сотни пакетовЭто проблема не ноды, а яваскрипта. Точнее полным отсутствием std в нём. Да и в целом это последствие повторного использования кода.
JS — язык. Стандартная либа, это отдельная сущность. Те же самые C/C++ могут существовать без стандартных либ (ну, с C++ вообще без пространства std не обойтись, тот же std::initializer_list или туплы это часть синтаксиса, но по большей части без нее можно обойтись). Весь вопрос, кто будет разрабатывать эту стандартную либу — разработчик языка или комьюнити. Разрозненное комьюнити эту задачу выполняет плохо, достигая результатов в основном за счет естественного отбора в виде популярности либ. Лет через 20, возможно, станет получше, но, в любом случае, основные разработчики языка это сделали бы быстрее, лучше и надежнее.
Это вообще не проблема, это атомарная архитектура, так задумано
> она «не носит батарейки с собой»Какая здесь может быть проблема? Есть отличный пакетный менеджер же. А теперь и не один.Основная проблема помойки была и будет: "как найти что-то стоящее на помойке". Да рейтинги помогают, но только в топе. А все специализированное приходится самому на вкус пробовать.
Хорошее начинание
Миру нужны качественные альтернативы помойке нмп
Можно entropic вместо ,ail ru arenta запихнуть в каждый экзшник и у нас на каждой винде будет свой сервак развернутый xD
Или миру нужно больше помоек
Может просто добавить сообщество и фильтровать пакеты по каким-то критериям?
Название, как бы, намекает, что это будет ещё более хаотичная помойка.
так блэд. А в npm свои репы добавлять разве нельзя?
А что с yarn-ом - та же фигня?
Ярн работает с пакетами из того же npm.
Так Microsoft уже спас от зависимости от NPM Inc, не?
Жээсо проблемы как всегда поражают воображение.
при чём тут ЖЭС, гражданин? объяснитесь
> во вне отдаётся содержимое файла package-lock, включающего много интересных сведений о том, чем занимается разработчик.И что ценного они надеются найти у рядового нодиста?
тонны нефти, пати на хате, корованы под кроватью, путану настю, страпон, к несчастью, двойку по матчасти, ума палату и розовую халату
> розовую халатус перламутровыме поговицаме!
Денег они там хотят найти. Любой разработчик для корпорастов лишь кормовая база. Капитализм, сэр.
>>Код Entropic написан на JavaScript и.....и дальше уже и не важно.
Они ничего кроме жаваскрипта не умеют с тех пор, как дропдаун менюшки в html научились разворачивать. Вот и приходится.
Каждый час рождается новый js-фреймворк
Каждый день рождается новый пакетный менеджер для них
да нет, это было пять-десять лет назад актуально. а сейчас они начали решать проблемы, которые это породило.