CJ Silverio, que deixou o cargo de diretora técnica da NPM Inc no final do ano passado, um novo repositório de pacotes , que se desenvolve como uma alternativa distribuída ao NPM, não controlada por uma empresa específica. O código Entropic é escrito em JavaScript e licenciado sob a Apache 2.0. O projeto está em desenvolvimento há apenas um mês e está na fase inicial de protótipo, mas já suporta operações básicas, como conexão, publicação e instalação de pacotes.
A razão dada para a criação do Entropic é a completa dependência do ecossistema JavaScript/Node.js da NPM Inc, que controla o desenvolvimento do gerenciador de pacotes e a manutenção do repositório NPM. Formou-se uma situação em que uma empresa voltada para o lucro controla unilateralmente um sistema do qual dependem milhões de desenvolvedores e aplicativos em JavaScript, e que processa bilhões de downloads de pacotes por semana.
Uma recente onda de demissões, mudanças na liderança e a interação da NPM Inc com investidores geraram uma sensação de incerteza sobre o futuro da NPM e desconfiança de que a empresa defenderá os interesses da comunidade, e não dos investidores. Segundo Silverio, o negócio da NPM Inc não é confiável, pois a comunidade não tem meios de responsabilizá-la por suas ações. Além disso, a orientação para obter lucro dificulta a implementação de possibilidades que são primordiais do ponto de vista da comunidade, mas que não geram dinheiro e exigem recursos adicionais, como suporte à verificação via assinatura digital.
Silverio também duvida que a NPM Inc esteja interessada em otimizar a interação com seu backend, pois isso resultaria em uma redução nos fluxos de dados que podem ser considerados interessantes do ponto de vista da monetização. A cada execução do comando "" é enviado o conteúdo do arquivo , que inclui muitas informações interessantes sobre o que o desenvolvedor está fazendo. Como resposta, alguns membros proeminentes da comunidade JavaScript/Node.js começaram a desenvolver uma alternativa que não está sob o controle de empresas específicas.
O sistema Entropic utiliza o princípio de uma rede federativa, onde o desenvolvedor pode implantar um servidor com um repositório de pacotes utilizados em suas próprias instalações e conectá-lo a uma rede distribuída comum, unindo repositórios privados dispersos em um todo. O Entropic pressupõe a convivência de muitos repositórios, com os quais a interação ocorre no âmbito do fluxo de trabalho habitual.
Todos os pacotes são separados usando namespaces e incluem informações sobre o host no qual seu repositório primário está hospedado.
Um namespace é essencialmente o nome do proprietário do pacote ou de um grupo de mantenedores que têm o direito de fazer atualizações. Em termos gerais, o endereço do pacote se apresenta como "namespace@repohost.com/pkg-name".
Os metadados e as informações sobre dependências são definidos no formato .
No caso de um pacote hospedado em um repositório local com dependências de outros repositórios, esses pacotes são espelhados no repositório local. Assim, o repositório local torna-se autossuficiente e inclui cópias de todas as dependências necessárias. Há uma camada para a interação com o repositório NPM clássico, que é tratado como um arquivo disponível apenas para leitura. Além disso, é possível instalar pacotes do NPM usando ambientes Entropic implantados localmente.
Uma ferramenta de linha de comando é fornecida para facilitar a implantação de repositórios em sua rede local. O Entropic oferece um e um sistema de armazenamento que minimiza a quantidade de dados transferidos pela rede. O Entropic é apresentado como um sistema universal que pode ser aplicado para criar repositórios de pacotes em quaisquer linguagens de programação, mas, ainda assim, o Entropic é desenvolvido com foco em JavaScript e se adapta melhor a projetos nessa linguagem.

Fonte: opennet.ru
