Po dwóch latach pracy wreszcie możemy podziwiać pierwsze efekty projektu Rome – nowy formater. Poza tym w minionym tygodniu doczekaliśmy się sporego ataku na npm i nowego wydania React Native. Rozsiądźcie się wygodnie i zapraszamy do lektury!
1. Rome Formatter
Nie od razu Rzym zbudowano i podobnie jest z narzędziem Rome (wiem, straszny suchar – możecie nawilżyć gardło odrobiną wody). Po prawie półtora roku developmentu zespół odpowiedzialny za rozwój projektu podzielił się ze światem pierwszymi efektami swojej pracy, czyli formaterem JavaScript i TypeScript. Zanim przejdziemy do szczegółów, cofnijmy się jednak o krok i przyjrzymy czym właściwie jest projekt Rome.
Historia Rome zaczyna się początkiem 2020 roku, kiedy to sieć obiegły pierwsze informacje o projekcie. Zgodnie z deklaracjami twórców, projekt miał połączyć w jednym narzędziu funkcjonalności oferowane przez Babela, ESLinta, webpacka, Prettiera i Jest. Nowe rozwiązanie miało być szybsze, łatwiejsze w użyciu i wymagać minimalnej początkowej konfiguracji. Cały frontendowy świat czekał z niecierpliwością na pierwsze efekty, bo gdyby obietnice udało się spełnić to mogłaby to być prawdziwa rewolucja.
Atmosferę wokół projektu podkręcał fakt, że stały za nim znane nazwiska i duże marki. Głównym deweloperem odpowiedzialnym za rozwój był Sebastian McKenzie, czyli twórca Babela i współtwórca Yarna oraz Lerny. Za projektem stał również jeden z gigantów technologicznych: Facebook. Z takim połączeniem projekt wręcz skazany był na sukces. Jak się jednak okazało bajka nie trwała długo.
W maju 2020 roku Sebastian McKenzie odszedł z Facebooka i dołączył do zespołu Discorda. Przez krótką chwilę przyszłość projektu stała pod znakiem zapytania, ale szybko ogłoszone zostało, że projekt opuszcza skrzydła giganta Social Mediów i pozostaje w rękach Sebastiana. Rok później McKenzie opuścił również szeregi Discorda i ogłosił założenie firmy Rome Inc. W pierwszej rundzie finansowania zgromadziła ona 4.5 miliona dolarów, co zwiastowało szybki rozwój produktu.
W międzyczasie na popularności zaczęły zyskiwać narzędzia takie jak esbuild czy swc, napisane w niskopoziomowych językach. Rome napisany w TypeScript pod względem wydajności zaczął zostawać w tyle za konkurencją. Wtedy to Sebastian McKenzie ogłosił, że cały projekt zostanie przepisany do Rust. Rzecz jasna oznaczało to spore spowolnienie rozwoju produktu, ale długoterminowo miało zapewnić duże zyski wydajności.
Przez kolejne pół roku nad projektem spuszczona została zasłona milczenia i w ten sposób docieramy do dnia dzisiejszego. Formater napisany w całości w Rust trafił do npm. Jeśli chodzi o JavaScriptowe formatery to nie sposób uniknąć odniesień do najpopularniejszego obecnie rozwiązania na rynku, czyli Prettiera. Z wykresów zamieszczonych w notatce towarzyszącej wydaniu, możemy dowiedzieć się, że Rome jest prawie 10x szybszy od swojego konkurenta. Wyróżnia go też możliwość formatowania niepoprawnego składniowo kodu. Mimo wszystko Prettier nadal pozostaje o krok przed konkurencją, bo Rome na ten moment nie wspiera jeszcze formatowania JSX oraz TypeScriptowych dekoratorów.
Przeglądając internet w poszukiwaniu opinii na temat Rome, widać, że pomimo upływu czasu społeczność pokłada w projekcie duże nadzieje. Ja osobiście podchodzę do tematu trochę bardziej sceptycznie. Po dwóch latach rozwoju i sporym zastrzyku gotówki w międzyczasie, Rome rozwiązał nieistniejący problem wolnego formatowania plików. Większość deweloperów podpina Prettiera jako zależność Ctrl+S lub git commit i do tej pory nie dotarły do mnie głosy narzekające na wydajność takiego rozwiązania. Pozostaje trzymać kciuki, że rozwój Rome w najbliższym czasie znacząco przyśpieszy i zacznie on spełniać obietnice złożone lata temu.
Źródła:
https://rome.tools/blog/2020/08/08/introducing-rome
https://rome.tools/blog/announcing-rome-tools-inc/
https://rome.tools/blog/2021/09/21/rome-will-be-rewritten-in-rust
https://rome.tools/blog/2022/04/05/rome-formatter-release
https://www.crunchbase.com/organization/rome-labs/company_financials
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Kolejna fala złośliwych paczek w npm
Ten rok nie jest najlepszy jeśli chodzi o security w npm. Ciężko znaleźć miesiąc, w którym internetu nie odbiegałby informacja o pojawieniu się złośliwych paczek. Kilka tygodni temu Artur w 80 sobotniej edycji naszego przeglądu raportował Wam o ataku Supply-Chain na paczkę node-icp, na którym ucierpiał między innymi Vue. Niewiele wcześniej internet obiegła informacja o milionie pobrań paczki ‘-’. W tym przypadku na szczęście nie mieliśmy do czynienia z atakiem, a z deweloperem zaciekawionym polityką nazewnictwa paczek w npm.
Jak się pewnie domyślacie piszę o tym nie bez przyczyny. W minionym tygodniu wykryty został atak na pakiety npm umieszczone w scope @azure. Hakerzy wykorzystali skrypt automatycznie tworzy nowe konta npm i za ich pomocą opublikowali w repozytorium 218 paczek o takich samych nazwach jak te umieszczone w scope @azure, ale pozbawionych odpowiedniego przedrostka (np. @azure/core-tracing vs. core-tracing). Złośliwe paczki miały na celu pozyskanie informacji personalnych użytkowników. Przez nieuwagę programistów każda z paczek posiadała około 50 pobrań. Po wykryciu ataku npm podjął decyzję o wycofaniu paczek.
Źródła:
https://thehackernews.com/2022/03/over-200-malicious-npm-packages-caught.html
https://www.bleepingcomputer.com/news/software/empty-npm-package-has-over-700-000-downloads-heres-why/
https://security.snyk.io/vuln/SNYK-JS-NODEIPC-2426370
3. RedwoodJS zgarnia milion dolarów
Słyszeliście kiedyś o RedwoodJS? Ja również nigdy o nim nie słyszałem, więc kiedy zobaczyłem że post na Reddicie dotyczący finansowania projektu zbiera masę łapek w górę byłem mocno zdziwiony. Od razu obudziła się we mnie nutka detektywa i rozpocząłem śledztwo.
Właściwie od razu udało mi się zweryfikować, że informacja o zagarnięciu finansowania w wysokości miliona dolarów jest lekko przesadzona. Sama kwota jest prawdziwa, ale finansowanie pochodzi od autora frameworka – Toma Preston-Werner. Nie mówimy tu więc o zewnętrznych inwestorach, którzy dostrzegli w projekcie potencjał, a o bogatym deweloperze, który najwidoczniej wierzy w swój produkt. O komfortowej pozycji projektu najlepiej świadczy fakt, że nie posiada on żadnego planu biznesowego i zamierza skupić się na stworzeniu możliwie najlepszego rozwiązania dla startupów.
Skąd Tom Preston-Werner posiada fundusze, które pozwalają mu z czystą głową zainwestować taką kwotę w swój pet project? Na przestrzeni lat Tom zaangażowany był w wiele startupów, które odniosły sukces. Najbardziej znanym ze wszystkich jest GitHub, gdzie w latach 2008-2014 pełnił on rolę CEO. Niestety przygoda z najpopularniejszym repozytorium Git nie miała szczęśliwego zakończenia. W 2014 roku wobec Toma i jego żony wytoczone zostały zarzuty o nękanie jednej z pracownic. Wewnętrzne śledztwo wykazało, że zarzuty nie były bezpodstawne i CEO zmuszony został złożyć wypowiedzenie.
Na przestrzeni swojej kariery Tom Preston-Werner zgromadził pokaźną sumę. W 2016 roku znalazł się na 36. miejscu listy America’s Richest Entrepreneurs Under 40 magazynu Forbes, z majątkiem o wartości 310 milionów dolarów. Po opuszczeniu GitHuba były CEO zajął się rozwojem aplikacji do nauki języków, która w 2018 roku zgarnęła 8 milionów dolarów finansowania (tym razem od zewnętrznych inwestorów).
Śledztwo zakończone sukcesem, wróćmy więc teraz do RedwoodJS. W telegraficznym skrócie jest to kolejny fullstackowy framework, który ma znacząco przyspieszyć rozwój produktów. Tym razem nie mamy jednak do czynienia z nowym narzędziem napisanym od podstaw, a z interesującą konfiguracją już istniejących narzędzi. W skład frameworku wchodzi więc React, GraphQL, Prisma, TypeScript, Jest i Storybook. Wisienką na torcie jest narzędzie CLI, które pozwala automatycznie generować komponenty i inne składowe projektu.
Osobiście w RedwoodJS nie dostrzegam nic innowacyjnego, ale chętnie usłyszę głos obrońców tego frameworku. Ot kolejny framework, którego miłośnicy złośliwych żartów będą używać jako przykładu dla rosnących jak grzyby po deszczu JavaScriptowych bibliotek.
Źródła:
https://tom.preston-werner.com/2022/04/04/redwood-v1-and-funding.html
https://www.reddit.com/r/javascript/comments/tw6vxq/announcing_redwoodjs_10_and_1m_funding/
https://redwoodjs.com/docs/introduction
https://en.wikipedia.org/wiki/Tom_Preston-Werner
Zainstaluj teraz i czytaj tylko dobre teksty!
4. React Native 0.68
Poprzednią edycję naszego przeglądu zdominowała informacja o wydaniu React 18 (jeśli jeszcze nie wiecie co nowego przyniósł nowy React to odsyłam Was do poprzedniej edycji przeglądu), dlatego kolejne wydanie React Native przeszło trochę poza naszym radarem. Było to jednak wydanie na tyle istotne, że mój dziennikarski obowiązek nie pozwala mi całkowicie pominąć tego tematu
Największą nowością w React Native 0.68 jest opcjonalne wsparcie dla całkowicie nowego silnika renderowania Fabric. Prace nad silnikiem trwały od 2018 roku i obecna aplikacja Facebooka w całości korzysta już właśnie z niego. Oprócz zwiększenia wydajności motywacją do przepisania silnika było odblokowanie wsparcia dla suspend i współbieżnego renderowania. Co prawda na razie nowości z React 18 nie są jeszcze wspierane, ale możemy spodziewać się, że trafią one do najbliższych wydań React Native. Jeśli jesteście ciekawi jak dokładnie działa nowy silnik, to odsyłam Was do dokumentacji, którą znajdziecie w źródłach. Znajdziecie w niej detale każdego z etapów renderowania i całą masę schematów przedstawiających sposób pracy silnika.
Źródła:
https://reactnative.dev/architecture/overview
https://reactnative.dev/blog/2022/03/30/version-068
https://reactnative.dev/blog/2022/03/15/an-update-on-the-new-architecture-rollout