Piekło programistów, czyli jak jeden człowiek zepsuł tysiące aplikacji kasując skrypt na 11 linijek kodu
W rozwoju oprogramowania można zaobserwować trend korzystania z modułów, o które można elastycznie wzbogacać swoje projekty. Rozwiązania takie jak NuGet dla projektów .NET czy NPM dla projektów pisanych w Node.js w JavaScript stały się codziennym narzędziem pracy programisty.
Za pomocą pakietów tego typu nie tylko wzbogacamy fragmenty pisanej aplikacji, ale uczestniczą one również w procesie testowania, publikacji i budowania programów. Gdy któryś z pakietów zapewnia funkcję, która przydaje się dużej rzeczy developerów, staje się standardem i jest coraz powszechniej używany w wielu projektach. Prym w tym wiodą zależności projektów pisanych w środowisku Node.js - potrafią one dostarczać bardzo małej, modularnej funkcjonalności, i może ich być w projekcie kilkaset. Nic dziwnego, gdy istnieją pakiety typu isArray, składające się z jednej linijki, sprawdzającej, czy obiekt jest tablicą - coś, co każdy programista napisałby sobie sam w minutę.
Takim właśnie narzędziem jest biblioteka left-pad, która umożliwia dodanie do łańcucha znaków odpowiedniej liczby spacji lub zer (i w sumie dowolnego podanego w parametrze innego znaku). Zagadnienie znane i na tyle sztampowe, że lepiej użyć gotowca niż pisać samemu. Left-pad jest jednym z rekordzistów wśród tych programistycznych klocków Lego: w samym lutym pobrany został z repozytorium NPM (Node.js Package Manager) ponad 2 miliony razy!
Autor biblioteki left-pad, Azer Koçulu, jest programistą, który ma na swoim koncie ponad 250 tego typu prostych modułów, używanych przez innych programistów na całym świecie. Oprócz left-pad, jednym z jego dzieł jest przydatny pakiet kik, umożliwiający łatwe rozpoczynanie projektów według znanych szablonów. Tak się składa, że w sprawie znaku towarowego kik zgłosili się do niego prawnicy producenta programu o tej samej nazwie. Azer nie chciał zrezygnować z nazwy, więc zwrócili się do administratorów NPM, którzy… zabrali mu prawa do jego własnego pakietu.
I wtedy rozpętało się piekło
Wściekły na administrację repozytorium programista usunął wszystkie z 250 swoich pakietów z menadżera pakietów NPM. Ponieważ niektóre z nich, na przykład left-pad, były tak popularne, Internet zaroił się od pytań, i raportów o błędach. Mnóstwo z automatycznych systemów budowania nowych wersji oprogramowania zaczęło raportować porażkę przy tworzeniu nowych wersji, mimo, że pozornie nic nie zostało zepsute.
Współzałożyciel NPM, Laurie Voss, postanowił wtedy pójść pod prąd decyzji autora pakietu, i opublikować go ponownie. Wszystko niby wróciło do normy, ale prawa autora zostały pogwałcone. W późniejszej wypowiedzi Voss usprawiedliwiał się, parafrazując słynną kwestię Spocka z filmu Star Trek: Gniew Khana: The needs of the many outweigh the needs of the few (czyli: potrzeby zbiorowości są ważniejsze niż potrzeby jednostki).
Czy Voss miał prawo do takiej decyzji? Napisany przez Azera fragment left-pad był banalny, ale jako autor miał prawo decydować o swoim dziele. A może to on źle zrobił, dając się unieść emocjom, i psując środowisko pracy tysięcy programistów?