Programmering

Gatsby JS står på tusenvis av skuldre

For mange år siden lånte Linux-grunnlegger Linus Torvalds Sir Isaac Newtons uttrykk "stående på skuldrene til giganter" når han diskuterte sitt open source-arbeid med Linux. Selv om det er en hyggelig følelse - "Hei, jeg har bare vært i stand til å gjøre et stort arbeid på grunn av noen få andres flotte arbeid" - som kanskje har brukt Linux i 1991, men det gjør ikke en god jobb med å beskrive åpen kildekode. i 2020. Når noen slipper åpen kildekode i dag, trekker de tross alt mye mer enn et lite sett med geniale utviklere.

Nei, som den siste utgivelsen av Gatsby.js viser, er moderne open source-prosjekter avhengig av tusenvis av andre prosjekter. Eller som Gatsby-grunnlegger Kyle Mathews uttrykte det i et intervju: "Vi står på skuldrene til tusenvis av [vanlige] mennesker."

1000 ganger raskere bygg? Ja takk!

I begynnelsen (på nettet) var den statiske nettstedgeneratoren. Over tid, som Mathews beskrev i innlegget sitt, henvendte organisasjoner seg til databasedrevne nettsteder for å støtte stadig mer dynamiske funksjoner. Etter hvert som nettsteder vokste, resulterte generering av statiske nettsteder i lave byggehastigheter, til og med da databasedrevne verktøy som WordPress vokste til fordel for markedsføringsfolkene som ikke ville bry seg om koding i Markdown. Pre-rendering hjalp nettstedgeneratorene, men ikke nok til å gjøre dem til det foretrukne alternativet for store nettsteder.

Men det var da; dette er nå.

Tidligere i 2020 introduserte Gatsby Gatsby Builds, som gjorde byggetider 60 ganger raskere enn standard kontinuerlige distribusjonsløsninger gjennom en smart kombinasjon av distribuert databehandling og sofistikerte cachefunksjoner. Hyggelig. Men med den nylige utgivelsen av Incremental Builds, får Gatsby bygg under 10 sekunder for dataredigering, noe som kan representere en 1000 ganger forbedring i forhold til eksisterende byggeløsninger.

Hvordan? "Det største vi har gjort," sa Mathews i et intervju, "er opprettet et avhengighetssporingssystem som lar oss billig finne ut hva som må oppdateres mellom bygg." Hvis dette høres ut som tilnærmingen fra byggverktøy som Bazel, eller databehandlingsverktøy som Apache Spark og Apache Flink, er det fordi det er det. "Gatsby behandler endringshendelser på nettsteder fra data / kode som andre strømprosessorer - vi finner ut hva som er endret og oppdaterer det billig." Tradisjonelle statiske nettstedsgeneratorer har lenge hatt en batchbehandlingsmetode for data, men Gatsbys nye tilnærming er sanntids strømbehandling.

Det er en stor avtale, noe som gjør Gatsby-tilnærmingen brukbar av ethvert nettsted i stedet for en liten brøkdel av nettet. Det er også avhengig av fantastisk åpen kildekode-teknologi som GraphQL, som gjør at Gatsby kan spore datavhengighet mellom sider og datakildene, slik at når noen data endres, kan de beregne hvilke sider som må oppdateres.

Så jeg spurte Mathews hvor avhengig Gatsby er av annen åpen kildekode….

Står på skuldrene til React, GraphQL, Webpack, Babel ...

"Vi er sterkt avhengige av mange flotte prosjekter," sa Matthews. Og så fortsatte han:

Uttrykket kan oppdateres kanskje at i stedet for å stå på skuldrene til giganter, står vi på skuldrene til tusenvis av mennesker. Som er en av de kule tingene med åpen kildekode - det er ikke bare for genier! Vanlige mennesker kan bygge og / eller bidra til å opprettholde bitstore pakker som fremdeles løser kritiske behov.

Noen av disse "vanlige menneskene" har bygget ekstraordinær kode som Gatsby er avhengig av. Gitt at Gatsby er basert på React, kommer React åpenbart umiddelbart til hjernen. Men det er mer. Mye mer. Gatsby er også avhengig av Webpack og Babel for å gjøre tungt løft rundt behandling og klargjøring av JavaScript, CSS og andre eiendeler som skal distribueres. Disse prosjektene er ”fenomenale med mange års stort arbeid av tusenvis av ingeniører,” bemerket Mathews.

Faktisk, hvis du sjekker Babel NPM-pakkesiden, finner du 136 avhengigheter, men dette utelater alle avhengighetene til andre pakker som Gatsby frigjør, for ikke å nevne avhengighetene til Gatsbys avhengigheter. Alt i alt, sa Mathews, "Et typisk Gatsby-prosjekt kan bruke tusenvis av pakker vedlikeholdt av titusenvis av ingeniører over hele verden, noe som er utrolig."

Det er denne avhengigheten av åpen kildekode som "hjelper [Gatsby] til å bevege seg så raskt og gjøre så mange ting som et relativt lite team." Det er "det utrolig brede og dype Node.js-økosystemet som har nesten alt [Gatsby] trenger," konkluderte han. Han er heller ikke alene. Neste gang du bruker Linux, bidrar til Kubernetes eller på annen måte driver med åpen kildekode, må du huske at vi i dag er håpløst (og forhåpentligvis!) Avhengige av at millioner av "vanlige utviklere" gjør ekstraordinære ting.

$config[zx-auto] not found$config[zx-overlay] not found