Přidat aktualitu mezi oblíbenéZasílat nové komentáře e-mailem Zlyhanie NPM: kauza left-pad

Kto sleduje dianie vo svete programovania, určite zachytil kauzu posledných dní. Tá pred 2 dňami vyvrcholila tým, že vývojárom a softvérovým spoločnostiam zlyhávali automatické buildy. V tejto správičke zhrniem, čo sa vlastne stalo pre tých, ktorým sa informácie o tejto pomerne vtipnej kauze vyhli.

Začalo to tým, že vývojár Azer Koçulu napísal modul kik a nahral ho do NPM (node package manager), čo je balíčkovací systém pre node.js. Po čase sa mu ozvala spoločnosť Kik, ktorá ho požiadala, aby premenoval svoj modul. Vývojár odpovedal, že to meno používa pre open source projekt. Následne sa táto spoločnosť začala vyhrážať právnikmi, na čo s nimi vývojár krátko a stručne ukončil komunikáciu.

Spoločnosť Kik sa obrátila na NPM. Spoločnosť NPM ako vlastník a prevádzkovateľ rozhodla, že vlastníctvo modulu kik presunie na spoločnosť Kik. Odvoláva sa pritom na svoje pravidlá, ktoré vysvetľujú, ako sa riešia takéto prípady. Pravidlo je jednoduché - meno bude pridelené tak, aby používatelia pod ním našli to, čo očakávajú. Rozhodli sa, že používatelia pod názvom kik očakávajú produkt spoločnosti Kik a podľa toho upravili vlastníctvo.

Toto rozhodnutie pobúrilo vývojára a zmazal všetkých svojich 273 balíkov. Jedným z nich bol left-pad - 11 riadkov kódu v JavaScripte pre dopĺňanie reťazca znakmi zľava do určeného počtu znakov. Na tomto balíku bolo priamo alebo nepriamo závislých niekoľko tisíc projektov. Medzi týmito projektami boli aj veľké projekty ako Node, Babel, React, JSCS, ale aj malé a bezvýznamné a dokonca aj projekty samotnej firmy Kik. A buildy všetkých týchto projektov začali zlyhávať, pretože nebolo možné stiahnuť závislé balíky.

Keďže mená zmazaných balíkov boli dostupné, v krátkom čase ďalší vývojári tieto mená zabrali a nahrali tam pôvodné balíky. Toto bolo v poriadku, keďže licencia, pod ktorou ich vývojár Azer uvoľnil, umožňovala s kódom robiť v podstate čokoľvek. Čo nebolo v poriadku je to, že ich nebolo možné bez zásahu NPM obnoviť s rovnakým číslom verzie - npm používa sémantické verziovanie a pri zmene vlastníka sa musí zmeniť aj verzia tak, aby bolo jasné, že ide veľkú zmenu (breaking change). Vo všetkých závislých projektoch by tak bolo potrebné upraviť číslo verzie závislosti.

Nakoniec zasiahla spoločnosť NPM, ktorá obnovila pôvodný balík s rovnakým číslom verzie. To vyriešilo technický problém s buildovaním projektov a všetko začalo fungovať ako predtým. Obnovenie zmazaného balíka bol pre NPM bezprecedentný krok. Aby zabránili takýmto zlyhaniam v budúcnosti, nebude zmazanie balíkov také jednoduché ako doteraz.

Zažehnaný problém ale otvoril niekoľko zaujímavých otázok o spôsobilosti webových programátorov, ktorí akoby zabudli programovať. Tým sme sa dostali k tej vtipnej časti, keď kvôli závislosti na jednoduchej funkcii niekto zahrnie do svojho programu knižnicu. V NPM bol dokonca balík pre zistenie, či je vstup kladné celé číslo. Tento modul pozostával zo 4 riadkov, pričom prvé 3 nahrávali ďalšie závislosti (is-integer, is-positive a 101/pass-all) a posledný riadok bola samotná implementácia pozostávajúca z ich kombinácie.

A preto, keď budete niečo programovať, rozmýšľajte trochu, pretože Never Invented Here syndróm je horší ako Not Invented Here.

Předmět Autor Datum
vtipné jsou obě dvě části. tohle nemůže dopadnout dobře. není lepší uzavřený kód? poslední
kmochna 25.03.2016 16:05
kmochna

Zpět na aktuality Přidat komentář k aktualitě Nahoru