Gatsby JS stoji na ramenima tisuća

Prije mnogo godina osnivač Linuxa Linus Torvalds posudio je fraza Isaaca Newtona "stajanje na ramenima divova" kada je raspravljao o svom radu s otvorenim kodom s Linuxom. Iako je to lijep osjećaj - "Hej, uspio sam napraviti odličan posao samo zbog sjajnog rada nekolicine drugih" - koji se možda primijenio na Linux 1991. godine, ne radi dobro opisivanje otvorenog koda u 2020. Kad netko danas objavi otvoreni kod, na kraju ipak crpi mnogo više od malog skupa genijalnih programera.

Ne, kao što pokazuje najnovije izdanje Gatsby.js, moderni projekti otvorenog koda ovise o tisućama drugih projekata. Ili, kako je to rekao osnivač Gatsbyja Kyle Mathews u intervjuu, "Stojimo na ramenima tisuća [običnih] ljudi."

1000x brže izrade? Da molim!

Na početku (weba) bio je statički generator web stranica. Tijekom vremena, kako je Mathews opisao u svom postu, organizacije su se okrenule web stranicama koje vode baze podataka kako bi podržale sve dinamičnije značajke. Kako su web stranice rasle, generiranje statičnih web stranica rezultiralo je sporim brzinama izrade, čak i dok su alati bazirani na bazama podataka poput WordPressa rasli u korist marketinških ljudi koji se nisu htjeli zamarati kodiranjem u Markdownu. Prethodno prikazivanje pomoglo je generatorima web lokacija, ali nedovoljno da bi im se učinila preferiranom opcijom za velike web lokacije.

Ali to je tada bilo; ovo je sada.

Ranije u 2020. godini Gatsby je predstavio Gatsby Builds, koji je brzine izrade učinio 60X bržim od standardnih rješenja za kontinuiranu implementaciju pametnom kombinacijom distribuiranog računanja i sofisticiranih značajki predmemoriranja. Lijepo. No, s nedavnim izdanjem Incremental Builds, Gatsby dobiva gradnje kraće od 10 sekundi za uređivanje podataka, što može predstavljati poboljšanje od 1000 puta u odnosu na postojeća rješenja gradnje.

Kako? "Najveća stvar koju smo učinili", rekao je Mathews u intervjuu, "je stvoren sustav praćenja ovisnosti koji nam omogućuje da jeftino shvatimo što treba ažurirati između gradnji." Ako ovo zvuči kao pristup koji koriste alati za izgradnju poput Bazel ili alati za obradu podataka poput Apache Spark i Apache Flink, to je zato što je tako. "Gatsby tretira događaje promjene web stranice iz podataka / koda kao i drugi stream procesori - otkrivamo što se promijenilo i jeftino ih ažuriramo." Tradicionalni generatori statičkih web lokacija već dugo imaju pristup skupnoj obradi podataka, no Gatsbyev novi pristup je obrada toka u stvarnom vremenu.

Velika je stvar, čineći Gatsby pristup upotrebljivim na bilo kojem web mjestu umjesto na malom djeliću weba. Također ovisi o nevjerojatnoj tehnologiji otvorenog koda poput GraphQL-a, koja omogućuje Gatsbyju da prati ovisnost podataka između stranica i izvora podataka, tako da kad se neki dio podataka promijeni, mogu izračunati koje stranice trebaju ažurirati.

Stoga sam pitao Mathewsa koliko je Gatsby ovisan o drugim otvorenim izvorima ...

Stojeći na ramenima React, GraphQL, Webpack, Babel ...

"U velikoj smo mjeri ovisni o mnogim izvrsnim projektima", rekao je Matthews. A onda je nastavio:

Izraz bi se mogao ažurirati možda da umjesto da stojimo na ramenima divova, stojimo na ramenima tisuća ljudi. Što je jedna od cool stvari kod otvorenog koda - nije samo za genije! Obični ljudi mogu stvoriti i / ili pomoći u održavanju paketa veličine zalogaja koji još uvijek rješavaju kritične potrebe.

Neki od tih "običnih ljudi" izgradili su izvanredan kodeks o kojem ovisi Gatsby. S obzirom da se Gatsby temelji na Reactu, React nam očito odmah pada na pamet. Ali ima još toga. Mnogo više. Gatsby se također oslanja na Webpack i Babel koji će napraviti težak posao oko obrade i pripreme JavaScript-a, CSS-a i drugih sredstava koja će biti raspoređena. Ti su projekti "fenomenalni s godinama sjajnog rada tisuća inženjera", primijetio je Mathews.

Zapravo, ako provjerite stranicu paketa Babel NPM, pronaći ćete 136 ovisnosti, ali ovo izostavlja sve ovisnosti ostalih paketa koje Gatsby izdaje, a da ne spominjemo ovisnosti Gatsbyjevih ovisnosti. Sve u svemu, rekao je Mathews, "tipični projekt Gatsby mogao bi koristiti tisuće paketa koje održavaju deseci tisuća inženjera diljem svijeta, što je zapanjujuće."

Ta ovisnost o otvorenom izvoru "pomaže [Gatsbyju] da se tako brzo kreće i radi toliko stvari kao relativno mali tim." To je "nevjerojatno širok i dubok ekosustav Node.js koji ima gotovo sve što [Gatsby] treba", zaključio je. Niti je sam. Sljedeći put kada budete koristili Linux, doprinosili Kubernetesu ili se na neki drugi način bavili softverom otvorenog koda, imajte na umu da smo u današnjem svijetu svi beznadno (i nadamo se!) Ovisni o milijunima „običnih programera“ koji rade izvanredne stvari.