CJ Silverio, che alla fine dell'anno scorso ha lasciato la carica di direttore tecnico di NPM Inc, nuovo repository di pacchetti , che si sviluppa come un'alternativa distribuita a NPM, non controllata da alcuna azienda specifica. Il codice di Entropic è scritto in JavaScript e sotto licenza Apache 2.0. Il progetto è in sviluppo da solo un mese e si trova in fase di prototipo iniziale, ma già supporta operazioni di base, come collegamento, pubblicazione e installazione di pacchetti.
La creazione di Entropic è motivata dalla totale dipendenza dell'ecosistema JavaScript/Node.js da NPM Inc, che controlla lo sviluppo del gestore di pacchetti e la manutenzione del repository NPM. Si è creata una situazione in cui un'azienda orientata al profitto controlla da sola un sistema di cui dipendono milioni di sviluppatori e applicazioni JavaScript, e che gestisce miliardi di download di pacchetti a settimana.
Una recente serie di licenziamenti, il cambio di leadership e le flertate di NPM Inc con gli investitori hanno creato un senso di incertezza riguardo al futuro di NPM e una sfiducia sul fatto che l'azienda difenderà gli interessi della comunità e non degli investitori. Secondo Silverio, non ci si può fidare di NPM Inc, poiché la comunità non ha strumenti per chiamarla a rispondere delle sue azioni. Inoltre, l'orientamento al profitto ostacola l'implementazione di opportunità che sono primarie per la comunità, ma che non generano denaro e richiedono risorse aggiuntive, come il supporto per la verifica tramite firma digitale.
Silverio dubita anche che NPM Inc sia interessata a ottimizzare l'interazione con il proprio backend, poiché ciò porterebbe a una riduzione del flusso di dati potenzialmente interessanti dal punto di vista della monetizzazione. Ogni volta che si esegue il comando «», viene restituito il contenuto del file , che contiene molte informazioni interessanti su cosa stia facendo lo sviluppatore. In risposta, diversi membri di spicco della comunità JavaScript/Node.js hanno iniziato a sviluppare un'alternativa, non controllata da aziende specifiche.
Il sistema Entropic utilizza il principio di una rete federativa, in cui lo sviluppatore può implementare un server con un repository dei pacchetti utilizzati e collegarlo a una rete distribuita comune, unendo in un tutto unico differenti repository privati. Entropic implica la coesistenza di molti repository, con cui l'interazione avviene nel contesto di un normale flusso di lavoro.
Tutti i pacchetti sono suddivisi utilizzando spazi dei nomi e includono informazioni sull'host in cui è ospitato il loro repository principale.
Lo spazio dei nomi rappresenta essenzialmente il nome del proprietario del pacchetto o di un gruppo di manutentori che hanno il diritto di rilasciare aggiornamenti. In generale, l'indirizzo del pacchetto appare come "namespace@repohost.com/pkg-name".
I metadati e le informazioni sulle dipendenze sono definiti nel formato .
Nel caso di un repository locale per un pacchetto che dipende 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. C'è uno strato per interagire con il repository classico NPM, che viene gestito come un archivio accessibile in sola lettura. È possibile installare pacchetti da NPM utilizzando ambienti Entropic implementati localmente.
Per la gestione è fornito un set di strumenti da riga di comando, che semplifica l'implementazione dei repository nella propria rete locale. Entropic offre un e un sistema di archiviazione che minimizza la quantità di dati scaricati attraverso la rete. Entropic viene presentato come un sistema universale, applicabile per la creazione di repository per pacchetti in qualsiasi linguaggio di programmazione, ma è sviluppato con particolare attenzione a JavaScript ed è particolarmente adatto per progetti in questo linguaggio.

Fonte: opennet.ru
