Hype driven development

Daniel Chmielowiec

Kiedy zaczynałem pracę z JavaScript, nie miałem pojęcia o zagrożeniach wynikających z czegoś co dzisiaj nazywam hype driven development. Żyłem w wyidealizowanym świecie pól malowanych zbożem rozmaitem, gdzie twórcy oprogramowania to wszechwiedzący guru, którzy czasami udostępniają swój wspaniale działający kod dla szerszego świata open-source.

Najczęściej zakładałem, że ktoś kto zdobył się na wysiłek wypuszczenia paczki, na pewno zrobił wszystko najlepiej jak tylko się da. A jeśli czegoś w ogóle można być pewnym na 100%, to są to paczki mające wiele gwiazdek w na githubie. W takim układzie moim jedynym zmartwieniem jest znajdowanie takich paczek i integrowanie ich do mojego kodu będącego zlepkiem zależności.

Rzeczywistość szybko sprowadziła mnie na ziemię kiedy odkryłem kilka istotnych mankamentów takiego podejścia.

Młotki

Gdy twoim jedynym narzędziem jest młotek, wszystko zaczyna ci przypominać gwoździe.
~ Abraham Maslow

To stwierdzenie jest podobne do pewnego podejścia jakie widuję od czasu do czasu w projektach. Dany programista używa jakiegoś podejścia niezależnie okoliczności i tego jak dane narzędzie/biblioteka sprawdzi się w konkretnym przypadku. Słyszałem od takich osób: "Po prostu wszyscy tak robią" lub "To jedyne podejście jakie znam", czasem oba jednocześnie.

Narzędzia jakich używa programista muszą odpowiadać na potrzeby sytuacji, a nie na potrzeby użycia danego narzędzia.

No i co w tym złego?

Problemów z takim podejściem jest kilka. Mogą one obejmować takie kwestie jak:

  1. większa płaszczyzna ataków na potencjalne podatności,
  2. nieintencjonalne zachowanie kodu,
  3. ogromna sieć zależności,
  4. nieczytelny kod,
  5. słaba skalowalność.

Nie chciałbym każdej z tych rzeczy omawiać bardzo szczegółowo, ale w temacie płaszczyzny ataku, ostatnio natknąłem się na taki twitter'owy wpis:

Autor twierdzi, że był w stanie przejąć paczkę foreach z rejestrów npm. Niby nic szczególnego, cała paczka ma zaledwie 21 linijek [1] i zapewne nigdy o niej nie słyszałeś_aś. Otóż nie w tym problem. Problem w tym, że paczka foreach jest używana baaaaaardzo szeroko. Tygodniowo pobierana jest ponad 6.5 miliona razy w ponad 36 tysiącach projektów w ogromnej sieci zależności.

Jak widać z powyższego przykładu, bardzo łatwo można nieświadomie zaprosić kogokolwiek do swojego kodu. Tym ktosiem niekoniecznie musi być ktoś taki jak autor tweet'a i może chcieć użyć tego wpływu do swoich mniej lub bardziej legalnych celów.

Jak uniknąć takich problemów? Czy w twoim projekcie spotkałeś_aś się z podobnymi sytuacjami? Czy uważasz, że powinniśmy mieć jakieś prawo regulujące zależności oprogramowania? A ile waży Twoje node_modules i kiedy ostatnio podnosiłeś wersje?


  1. https://github.com/manuelstofer/foreach/blob/master/index.js ↩︎

Udostępnij twitter/ facebook/ skopiuj link
Twój link wygasł
Sukces! Sprawdź swój e-mail i kliknij link, aby zakończyć logowanie.