L'ex CTO di NPM sviluppa il repository di pacchetti distribuiti Entropic

CJ Silverio, che ha lasciato il suo incarico di CTO di NPM Inc alla fine dello scorso anno, presentato nuovo repository di pacchetti Entropico, che viene sviluppato come alternativa distribuita a NPM, non controllata da una società specifica. Il codice di Entropic è scritto in JavaScript e distribuito da concesso in licenza con Apache 2.0. Il progetto è in sviluppo solo da un mese ed è nella fase iniziale di prototipo, ma supporta già operazioni di base come la connessione, la pubblicazione e l'installazione di pacchetti.

Il motivo della creazione di Entropic è la completa dipendenza dell'ecosistema JavaScript/Node.js da NPM Inc, che controlla lo sviluppo del gestore pacchetti e la manutenzione del repository NPM. È qui che un'azienda in cerca di profitto ha il controllo esclusivo di un sistema da cui dipendono milioni di sviluppatori e applicazioni JavaScript e che elabora miliardi di download di pacchetti a settimana.

Una recente serie di licenziamenti di dipendenti, cambiamenti di gestione e il flirt di NPM Inc con gli investitori hanno creato un senso di incertezza sul futuro di NPM e una mancanza di fiducia nel fatto che la società difenderà gli interessi della comunità piuttosto che degli investitori. Secondo Silverio, non ci si può fidare dell’attività di NPM Inc perché la comunità non ha la leva per ritenerla responsabile delle proprie azioni. Inoltre, l’attenzione al profitto impedisce la realizzazione di opportunità che sono primarie dal punto di vista della comunità, ma che non portano denaro e richiedono risorse aggiuntive, come il supporto per la verifica della firma digitale.

Silverio dubita inoltre che NPM Inc sia interessata a ottimizzare le interazioni con il proprio backend, poiché ciò comporterà una diminuzione dei flussi di dati potenzialmente interessanti dal punto di vista della monetizzazione. Ogni volta che esegui il comando "controllo npm» il contenuto del file viene inviato all'esterno blocco del pacchetto, che include molte informazioni interessanti su ciò che fa lo sviluppatore. In risposta, diversi membri di spicco della comunità JavaScript/Node.js hanno iniziato a sviluppare un’alternativa non controllata dalle singole aziende.

Il sistema entropico utilizza il principio di una rete federata, in cui uno sviluppatore, utilizzando le proprie risorse, può distribuire un server con un repository di pacchetti che utilizza e collegarlo a una rete distribuita comune che unisce diversi repository privati ​​in un unico insieme. Entropic prevede la coesistenza di molti repository, interagendo con essi come parte di un normale flusso di lavoro.

Tutti i pacchetti sono separati utilizzando gli spazi dei nomi e includono informazioni sull'host che ospita il loro repository primario.
Uno spazio dei nomi è essenzialmente il nome del proprietario del pacchetto o del gruppo di manutentori che hanno il diritto di rilasciare aggiornamenti. In generale, l'indirizzo del pacchetto è simile a "[email protected]/nome-pacchetto".
I metadati e le informazioni sulle dipendenze sono definiti nel formato TOML.

Se un pacchetto viene inserito in un repository locale collegato tramite dipendenze da altri repository, questi pacchetti vengono rispecchiati nel repository locale. Ciò rende il repository locale autonomo e include copie di tutte le dipendenze necessarie. Esiste un livello per interagire con il classico repository NPM, che viene trattato come un archivio di sola lettura. È inoltre possibile installare pacchetti da NPM utilizzando ambienti entropici distribuiti localmente.

Per la gestione, vengono forniti strumenti da riga di comando che semplificano la distribuzione dei repository sulla rete locale. Offerte entropiche completamente nuove API orientata ai file e un sistema di archiviazione che riduce al minimo la quantità di dati scaricati sulla rete. Entropic è pubblicizzato come un sistema universale che può essere utilizzato per creare repository per pacchetti in qualsiasi linguaggio di programmazione, ma Entropic è comunque sviluppato pensando a JavaScript ed è più adatto per progetti in quel linguaggio.

Fonte: opennet.ru

Aggiungi un commento