TeamQuest Blog

Moduł Request nie ma przyszłości, deweloperzy JavaScriptu muszą szukać alternatyw

Moduł Request nie ma przyszłości, deweloperzy JavaScriptu muszą szukać alternatyw News!

Adam Golański , 12.02.2020 r.

W czasach gdy liczy się przede wszystkim czas budowy oprogramowania, nikt nie chce wynajdywać prochu na nowo. Nawet we własnościowych projektach notorycznie używane są gotowe opensource’owe moduły i biblioteki (tajemnicą poliszynela jest, że nierzadko nie do końca zgodnie z ich licencją). A co się dzieje, jeśli taki gotowy moduł nagle przestanie być rozwijany? Konsekwencje może wówczas odczuć cały ekosystem. Deweloperzy JavaScriptu/Node.js mogą się teraz o tym przekonać, obserwując los ogromnie popularnego modułu request.

11 lat temu, u samych początków Node.js, programista Mikeal Rogers napisał prostego klienta HTTP, mającego w założeniu być najprostszym sposobem wykonywania żądań po tym protokole (oraz po HTTPS). Jako że w tym samym czasie tworzył on też Node.js Core, w swoim module wykorzystał wiele charakterystycznych dla wczesnego Node.js wzorców, takich jak standardowe callbacki czy strumienie.

Zobacz też: JetBrains prezentuje JetBrains Mono – świetną nową czcionkę dla programistów

Dziś wydany na licencji Apache 2.0 moduł Request znajduje się na liście zależności niemal 48 tysięcy innych modułów menedżera pakietów npm i jest pobierany za jego pomocą ponad 65 mln razy w ciągu miesiąca. Na liście kontrybutorów przez te 11 lat znalazło się ponad 280 programistów. I dziś właśnie, mimo tej ogromnej popularności, Request trafia do lamusa. Nie będzie już dalszych ulepszeń, projekt doszedł do swojego kresu.

Czasy się zmieniają, Node.js wraz z nimi

Mikael Rogers twierdzi, że próbował coś z tym zrobić jeszcze w 2018 roku, kiedy zauważył, jak bardzo zmienił się ekosystem JavaScriptu i jak bardzo wzorce stosowane w jego module się zdezaktualizowały. Dziś, gdy korzysta się powszechnie z takich wzorców jak async/await czy fetch, wprowadzenie Request do projektów najczęściej prowadzi do dołożenia kolejnych warstw, mających przenieść te stare wzorce na nowe. A to prowadzi do problemów z debugowaniem, spadkiem wydajności, nie mówiąc już o rosnących rozmiarach kodu.

Dlatego w 2019 roku podjął decyzję, by Request wysłać na emeryturę. Pozostanie on w takiej formie jakiej był, ekosystem JavaScriptu jest dziś zbyt duży i zbyt współzależny od siebie, by po prostu moduł wycofać z npm. Nawet jeśli nie pojawią się żadne zależne nowe moduły, jeśli nawet żadne aktualne wersje istniejących modułów nie będą zależały od Requesta, to wciąż będzie on niezbędny dla działania starszych wersji dziś używanych modułów. Inercja jest po prostu ogromna.

Zobacz również: Mozilla, Intel i Red Hat i Fastly jednoczą siły, by WebAssembly było wszędzie

Request w wersji 2.88.2 pozostanie więc na zawsze w trybie konserwacji, z oznaczeniem dla programistów JavaScript, że już jest modułem przestarzałym. Autorzy modułów zależnych od Requesta powinni zacząć się rozglądać za lepszymi zamiennikami. Sam Rogers oferuje następcę Requesta o nazwie bent, ale pojawiły się też niezależne klienty HTTP, takie jak axiosgot.

Płakać chyba za modułem z poprzedniej dekady nikt nie będzie – po prostu ekosystem JavaScriptu rozwija się tak szybko, że nikt już nie jest w stanie ogarnąć całości. Dobrze jest, że kontrybutorzy przynajmniej dbają o to, by rozwój ten nie prowadził do takich problemów, jak np. zobaczyć możemy w świecie Pythona.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej