Абяцанне npm гэта дробныя кубікі. Напішы модуль, які робіць 1 рэч, апублікуй, дай іншым збіраць. Я паўтараю гэтае абяцанне ўжо некалькі месяцаў і ніводнага разу не палічыў, што адна ўсталёўка на самай справе кладзе мне на дыск.
Рэестр захоўвае дату публікацыі кожнай версіі, таму можна спытаць, як пакет выглядае на сёння, а не на той момант, калі я гэта запускаю. Я ўзяў 6 каранёў, якімі карыстаюся, звёў кожны да апошняй версіі, што выйшла не пазней за сённяшні дзень, і абышоў імёны залежнасцей да самага нізу.
Grunt вылучаецца: 51 пакет ад 32 чалавек. Express, пра які я б падумаў, што ён цяжкі, прыносіць 8. Request не прыносіць увогуле нічога. Гэта 1 пакет без залежнасцей і з адным суправаджальнікам, тое, за чым я цягнуся кожны раз, калі праграме трэба схадзіць па HTTP.
Абяцанне слушнае
Па шасці дрэвах набіраецца 67 розных пакетаў. У 40 з іх, то бок у яўнай большасці, не аб’яўлена ніводнай залежнасці. Медыянны пакет гэтага графа не залежыць ні ад чаго, найцяжэйшы залежыць ад 16 іншых.
Гэта і ёсць ідэя дробных кубікаў, якая працуе роўна так, як абяцана. Большая частка таго, што кладзецца мне на дыск, гэта чыйсьці адзіночны файл, які разбірае радок запыту або абыходзіць каталог. Свету за сабой ён не цягне.
Частка, якую на слайд не выносяць
У 56 пакетаў з 67 роўна адзін суправаджальнік. Другога чалавека з правам публікаваць няма, а значыць пакет адстаіць на адзін згублены пароль або адзін згублены інтарэс ад таго, каб захраснуць. Гэта не гіпатэтычная ўласцівасць схемы. Гэта бягучы стан графа пад шасцю звычайнымі ўсталёўкамі.
І разнастайнасці ў графе менш, чым абяцаюць 40 імёнаў. isaacs стаіць на 10 пакетах з 67, tjholowaychuk на 8, substack на 8. Утрох яны трымаюць 26 пакетаў з 67, то бок 39 адсоткаў усяго, што шэсць усталёвак паклалі мне на дыск.
Скандалу я тут не бачу. Гэтыя трое напісалі слой, які спатрэбіўся ўсім, і апублікавалі яго замест таго, каб пакінуць сабе. Значыць канцэнтрацыя апісвае, хто зрабіў працу. Яна ж апісвае маю залежнасць ад іх.
Чаго я не правяраў
Дыяпазоны версій. Я абыходзіў імёны пакетаў, а не дыяпазоны са спісаў залежнасцей, таму палічанае дрэва гэта форма графа, а не дакладны набор архіваў, якія сцягне канкрэтная ўсталёўка. Для ліку розных пакетаў і розных людзей гэта нічога не мяняе. Для чагосьці іншага памяняла б.
Спісы суправаджальнікаў таксама не ідэальна гістарычныя. У 63 пакетаў з 67 спіс ляжыць унутры апублікаванай версіі, то бок гэта здымак таго дня. У астатніх 4 яго няма, таму там падстаўлены спіс, які рэестр паказвае зараз, а ён мог з таго часу памяняцца.
І я не адкрыў ніводнага архіва. То бок ведаю, колькі пакетаў прыязджае і ад каго, і не ведаю нічога пра тое, колькі гэта кода.
Вузкае сцвярджэнне ў тым, што абедзве паловы абяцання цяпер памераныя. Дробныя кубікі сапраўдныя: большасць гэтых пакетаў не залежыць ні ад чаго. Цана дробных кубікаў таксама сапраўдная: 6 усталёвак прыносяць 67 пакетаў, і за 84 адсоткамі з іх стаіць роўна адзін чалавек.