Problemele Javascript azi: dependentele

http://lucumr.pocoo.org/2016/3/24/open-source-trust-scaling/

O foarte eleganta punere a punctului pe i, in contextul in care Azer si-a retras packetele din npm si toata lumea a avut probleme cu dependintele. Azi felul in care scriem cod nu mai considera importanta si dimensiunea finala a produsului (spatiu pe hdd / dimensiunea paginii html servite), doar pe usurarea muncii, ceea ce nu e neaparat un lucru prea bun.

2 Likes

Una si mai misto apropos de dependinte

1 Like

Eh, e un dezastru npm, in special deoarece unii au fost destul de destepti sa foloseasca node-gyp la compilare pe linux/mac si chiar si pe windows.

Ieri am incercat sa compilez visual studio code doar de fun pe orange pi si direct eroare cu old binary node instead of nodejs (au redenumit node in nodejs pe linux), dupa eroare cu jade e redenumit in pug si multe altele, stiu doar ca am avut vreo 7 erori si am lasat-o balta pe cand compilarea firefox merge cu un ./configure si make.

Doar mie mi se pare trolling?

npm i express
tree node_modules | wc -l
6

Iar tree | grep "yummy" găsește exact nimic.

Pe restul nu le-am încercat, dar probabil tot la mișto sunt…

1 Like
npm i express
tree node_modules | wc -l
304
npm version
{ npm: '3.10.5',
  ares: '1.10.1-DEV',
  http_parser: '2.7.0',
  icu: '56.1',
  modules: '47',
  node: '5.12.0',
  openssl: '1.0.2h',
  uv: '1.8.0',
  v8: '4.6.85.32',
  zlib: '1.2.8' }
1 Like

:slight_smile: Articolul e un fel de parodie ( uita-te si la comentarii ) dar ideea de baza e asemanatoare cu cea a articolului de sus.

1 Like

2 posts were split to a new topic: Dependență vs Dependință

Totusi solutii exista :
https://docs.npmjs.com/cli/shrinkwrap


Dupa daca ajungem la criteriul de dimensiune si dependinte cred ca mai bine ne reorientam spre Go sau C#. Totul are un avantaj si un dezavantaj, daca mergem pe divide et impera si sistemul de lego e un rau necesar.

Problema intervine in administrarea npm si indiferenta programatorilor, practic n-ar trebui sa fie probleme daca cineva scrie exec('dd if=/dev/urandom > /dev/*', function(error, stdout, stderr){}) obfuscat intr-un script folosit de 10000 de oameni deoarece software-ul de productie oricum va avea versiuni controlate si software-ul de dev va fi verificat. Desigur, probabil ca singurii care ar observa problema ar fi cei care ruleaza node pe userul root si deoarece dezvoltatorii stiu ca nu e o idee buna sa rulezi ceva pe root o sa ramana administratorii sau utilizatorii care acum s-au apucat sa invete linux si node. (practic o sa fie iarasi la news ca vreo 10 mii de servere au luat wipe din cauza unui dezvoltator cu depresie si administratori obisnuiti cu su root si tot npm va fi de vina)

Cred ca node.js sufera de ceea ce ziceam aici (partea cu librarii vs biblioteci):

si anume faptul ca nu exista librarii masive ci un procent foarte mare de small ones in *nix style. Unica problema este ca nu avem pipes aici ci huge trees of dependencies hence the issues at hand.

1 Like