CJ Silverio, che ha lasciato il suo incarico di Chief Technology Officer di NPM Inc. alla fine dello scorso anno, un nuovo repository di pacchetti , che si sviluppa come alternativa distribuita a NPM, non controllata da un'azienda specifica. Il codice di Entropic è scritto in JavaScript e distribuito sotto la licenza Apache 2.0. Il progetto è in fase di sviluppo da un mese ed è ancora in uno stadio di prototipo iniziale, ma supporta già operazioni di base come collegamenti, pubblicazione e installazione di pacchetti.
La creazione di Entropic è motivata dalla completa dipendenza dell'ecosistema JavaScript/Node.js da NPM Inc., che controlla lo sviluppo del gestore di pacchetti e il mantenimento del repository di NPM. Si è creata una situazione in cui un'azienda a scopo di lucro controlla da sola un sistema di cui dipendono milioni di sviluppatori e applicazioni JavaScript, gestendo miliardi di download di pacchetti ogni settimana.
Una recente serie di licenziamenti, il cambio di leadership e i riguardi di NPM Inc. verso gli investitori hanno creato un senso di incertezza riguardo al futuro di NPM e di sfiducia sul fatto che l'azienda difenderà gli interessi della comunità piuttosto che quelli degli investitori. Secondo Silverio, non ci si può fidare di NPM Inc. poiché la comunità non ha mezzi per chiamarla a rispondere delle proprie azioni. Inoltre, l'orientamento al profitto ostacola l'attuazione delle opportunità che sono primarie per la comunità, ma che non generano ricavi e richiedono risorse aggiuntive, come il supporto per la verifica tramite firma digitale.
Silverio dubita inoltre che NPM Inc. sia interessata a ottimizzare l'interazione con il proprio backend, poiché ciò porterebbe a una diminuzione dei flussi di dati, potenzialmente interessanti dal punto di vista della monetizzazione. Ogni volta che viene eseguito il comando «» si invia esternamente il contenuto del file , che include molte informazioni interessanti su ciò che sta facendo lo sviluppatore. In risposta, diversi membri di spicco della comunità JavaScript/Node.js hanno iniziato a sviluppare un'alternativa che non sia controllata da singole aziende.
Il sistema Entropic utilizza il principio della rete federativa, in cui uno sviluppatore può implementare un server con un repository dei pacchetti che utilizza e collegarlo a una rete distribuita comune, unendo vari repository privati. Entropic prevede la coesistenza di molti repository, interagendo con i quali si svolgono le normali attività lavorative.
Tutti i pacchetti sono suddivisi utilizzando spazi dei nomi e includono informazioni sull'host in cui si trova il loro repository primario.
Lo spazio dei nomi rappresenta di fatto il nome del proprietario del pacchetto o del gruppo di manutentori autorizzati a rilasciare aggiornamenti. In forma generale, l'indirizzo di un pacchetto appare come «namespace@repohost.com/pkg-name».
I metadati e le informazioni sulle dipendenze sono definiti nel formato .
Nel caso in cui si effettui il caricamento in un repository locale di un pacchetto con dipendenze da altri repository, tali pacchetti vengono replicati nel repository locale. In questo modo, il repository locale diventa autosufficiente e include copie di tutte le dipendenze necessarie. È presente un'interfaccia per interagire con il classico repository NPM, trattato come un archivio accessibile in sola lettura. È anche possibile installare pacchetti da NPM utilizzando ambienti Entropic distribuiti localmente.
Per la gestione, è fornita una serie di strumenti a riga di comando che semplificano il dispiegamento di repository nella propria rete locale. Entropic propone un e un sistema di archiviazione che minimizza il volume di dati scaricati attraverso la rete. Entropic è presentata come un sistema universale, applicabile per creare repository di pacchetti in qualsiasi linguaggio di programmazione, ma è sviluppata con un occhio di riguardo a JavaScript e si adatta meglio ai progetti in questo linguaggio.

Fonte: opennet.ru
