Ohjelmointi

Gatsby JS seisoo tuhansien harteilla

Monta vuotta sitten Linuxin perustaja Linus Torvalds lainasi Sir Isaac Newtonin lauseen "seisominen jättiläisten harteilla", kun hän keskusteli avoimen lähdekoodin työstään Linuxin kanssa. Vaikka se on mukava mielipide - "Hei, olen pystynyt tekemään suurta työtä vain muutaman muun suuren työn takia" - joka on saattanut soveltua Linuxiin vuonna 1991, se ei kuitenkaan toimi hyvin kuvailemalla avointa lähdekoodia vuonna 2020. Kun joku julkaisee avoimen lähdekoodin tänään, hän käyttää loppujen lopuksi paljon muuta kuin pientä nerokkaita kehittäjiä.

Ei, kuten viimeisin Gatsby.js-julkaisu osoittaa, modernit avoimen lähdekoodin projektit riippuvat tuhansia muista hankkeista. Tai kuten Gatsbyn perustaja Kyle Mathews sanoi haastattelussa: "Seisomme tuhansien [tavallisten] ihmisten harteilla".

1000x nopeampi koontiversio? Kyllä kiitos!

Alussa (verkossa) oli staattinen sivustogeneraattori. Ajan myötä, kuten Mathews kirjoitti, organisaatiot kääntyivät tietokantapohjaisiin verkkosivustoihin tukemaan yhä dynaamisempia ominaisuuksia. Verkkosivustojen kasvaessa staattisten sivustojen luominen johti hitaaseen nopeuteen, vaikka WordPressin kaltaiset tietokantapohjaiset työkalut kasvaisivat niiden markkinointiyritysten puolesta, jotka eivät halunneet vaivautua koodaamaan Markdownissa. Esirenderöinti auttoi sivustogeneraattoreita, mutta ei tarpeeksi, jotta niistä tulisi ensisijainen vaihtoehto suurille sivustoille.

Mutta se oli silloin; tämä on nyt.

Aiemmin vuonna 2020 Gatsby esitteli Gatsby Buildsin, joka teki rakennusajoista 60 kertaa nopeampaa kuin tavalliset jatkuvan käyttöönoton ratkaisut hajautetun tietojenkäsittelyn ja hienostuneiden välimuistitoimintojen älykkään yhdistelmän avulla. Kiva. Äskettäisen Incremental Builds -julkaisun myötä Gatsby saa alle 10 sekunnin koontiversioita tietojen muokkauksille, mikä voi olla 1000x parannus nykyisiin rakennusratkaisuihin verrattuna.

Miten? "Suurin asia, jonka olemme tehneet", Mathews sanoi haastattelussa, "luo riippuvuuden seurantajärjestelmän, jonka avulla voimme edullisesti selvittää, mitä päivityksiä tarvitaan rakennusten välillä." Jos tämä kuulostaa Bazelin kaltaisten rakennustyökalujen tai Apache Sparkin ja Apache Flinkin kaltaisten tietojenkäsittelytyökalujen lähestymistavasta, se johtuu siitä. "Gatsby kohtelee verkkosivuston muutostapahtumia datasta / koodista kuten muut suoratoistoprosessorit - selvitämme muutoksen ja päivitämme sen edullisesti." Perinteisillä staattisilla sivustogeneraattoreilla on jo pitkään ollut eräkäsittelymenetelmä dataan, mutta Gatsbyn uusi lähestymistapa on reaaliaikainen suorakäsittely.

Se on iso juttu, jolloin Gatsby-lähestymistapa on käyttökelpoinen millä tahansa verkkosivustolla pienen murto-osan verkon sijasta. Se riippuu myös hämmästyttävästä avoimen lähdekoodin tekniikasta, kuten GraphQL, jonka avulla Gatsby voi seurata sivujen ja tietolähteiden välisiä tietojen riippuvuuksia, jotta kun jokin tieto muuttuu, he voivat laskea päivitettävät sivut.

Joten kysyin Mathewsilta kuinka riippuvainen Gatsby on muista avoimen lähdekoodin….

React, GraphQL, Webpack, Babel harteilla ...

"Olemme erittäin riippuvaisia ​​monista upeista projekteista", Matthews sanoi. Ja sitten hän jatkoi:

Lausetta voitaisiin päivittää ehkä siten, että seisomme jättiläisten harteilla, vaan seisomme tuhansien ihmisten harteilla. Mikä on avoimen lähdekoodin hienoja asioita - se ei ole vain neroille! Tavalliset ihmiset voivat rakentaa ja / tai auttaa ylläpitämään puremankokoisia paketteja, jotka ratkaisevat edelleen kriittiset tarpeet.

Jotkut noista ”tavallisista ihmisistä” ovat rakentaneet ylimääräisen koodin, josta Gatsby riippuu. Koska Gatsby perustuu Reactiin, React tulee heti mieleen. Mutta on enemmän. Paljon enemmän. Gatsby luottaa myös Webpackiin ja Babeliin tekemään raskaita töitä JavaScriptien, CSS: n ja muiden käyttöönotettavien resurssien käsittelyn ja valmistelun ympärillä. Nämä projektit ovat ”ilmiömäisiä, ja tuhannet insinöörit ovat työskennelleet vuosien varrella”, Mathews totesi.

Itse asiassa, jos tarkastat Babel NPM -pakettisivun, löydät 136 riippuvuutta, mutta tämä jättää pois kaikki muiden Gatsbyn julkaisemien pakettien riippuvuudet, puhumattakaan Gatsbyn riippuvuuksien riippuvuuksista. Kaiken kaikkiaan Mathews sanoi: "Tyypillinen Gatsby-projekti saattaa käyttää tuhansia paketteja, joita kymmenet tuhannet insinöörit ylläpitävät ympäri maailmaa, mikä on hämmästyttävää."

Juuri tämä riippuvuus avoimesta lähdekoodista "auttaa [Gatsbyä] liikkumaan niin nopeasti ja tekemään niin monia asioita kuin suhteellisen pieni joukkue". Se on "hämmästyttävän laaja ja syvä Node.js-ekosysteemi, jolla on melkein kaikki [Gatsbyn] tarvitsema", hän totesi. Eikä hän ole yksin. Kun seuraavan kerran käytät Linuxia, osallistut Kubernetesiin tai muuten olet tekemisissä avoimen lähdekoodin ohjelmistojen kanssa, muista, että nykymaailmassa olemme kaikki toivottomasti (ja toivottavasti!) Riippuvaisia ​​miljoonista "tavallisista kehittäjistä", jotka tekevät ylimääräisiä asioita.