Gatsby JS è sulle spalle di migliaia di persone

Molti anni fa il fondatore di Linux Linus Torvalds ha preso in prestito la frase di Sir Isaac Newton "stare sulle spalle dei giganti" quando ha discusso il suo lavoro open source con Linux. Sebbene sia un bel sentimento - "Ehi, sono stato in grado di fare un ottimo lavoro solo grazie al grande lavoro di pochi altri" - che potrebbe essere applicato a Linux nel 1991, non fa un buon lavoro nel descrivere l'open source nel 2020. Quando oggi qualcuno rilascia codice open source, dopotutto, attinge a molto più di un piccolo gruppo di sviluppatori geniali.

No, come mostra l'ultima versione di Gatsby.js, i progetti open source moderni dipendono da migliaia di altri progetti. Oppure, come ha affermato il fondatore di Gatsby Kyle Mathews in un'intervista, "Siamo sulle spalle di migliaia di persone [comuni]".

Build 1000 volte più veloci? Sì grazie!

All'inizio (del web) era il generatore di siti statici. Nel tempo, come ha descritto Mathews nel suo post, le organizzazioni si sono rivolte a siti Web basati su database per supportare funzionalità sempre più dinamiche. Con la crescita dei siti Web, la generazione di siti statici ha portato a velocità di compilazione lente, anche se gli strumenti basati su database come WordPress sono cresciuti a favore degli addetti al marketing che non volevano preoccuparsi della codifica in Markdown. Il pre-rendering ha aiutato i generatori di siti, ma non abbastanza da renderli l'opzione preferita per i siti di grandi dimensioni.

Ma quello era allora; questo è ora.

All'inizio del 2020 Gatsby ha introdotto Gatsby Builds, che ha reso i tempi di compilazione 60 volte più veloci rispetto alle soluzioni di distribuzione continua standard attraverso una combinazione intelligente di elaborazione distribuita e sofisticate funzionalità di memorizzazione nella cache. Bello. Ma con la recente versione di Incremental Builds, Gatsby sta ottenendo build in meno di 10 secondi per la modifica dei dati, il che può rappresentare un miglioramento 1000 volte rispetto alle soluzioni di build esistenti.

Come? "La cosa più importante che abbiamo fatto", ha detto Mathews in un'intervista, "è stata la creazione di un sistema di monitoraggio delle dipendenze che ci consente di capire a basso costo cosa deve essere aggiornato tra le build". Se questo suona come l'approccio adottato da strumenti di compilazione come Bazel o strumenti di elaborazione dati come Apache Spark e Apache Flink, è perché lo è. "Gatsby tratta gli eventi di modifica del sito Web da dati / codice come altri processori di flusso: scopriamo cosa è cambiato e lo aggiorniamo a basso costo." I generatori di siti statici tradizionali hanno a lungo adottato un approccio di elaborazione batch ai dati, ma il nuovo approccio di Gatsby è l'elaborazione di flussi in tempo reale.

È un grosso problema, rendere l'approccio Gatsby utilizzabile da qualsiasi sito Web anziché da una piccola parte del Web. Dipende anche da una straordinaria tecnologia open source come GraphQL, che consente a Gatsby di tenere traccia delle dipendenze dei dati tra le pagine e le sorgenti di dati in modo che quando alcuni dati cambiano, possono calcolare quali pagine devono essere aggiornate.

Così ho chiesto a Mathews quanto fosse dipendente Gatsby da altri open source….

In piedi sulle spalle di React, GraphQL, Webpack, Babel ...

"Siamo fortemente dipendenti da molti grandi progetti", ha detto Matthews. E poi ha proseguito:

La frase potrebbe essere aggiornata forse che invece di stare sulle spalle dei giganti, stiamo sulle spalle di migliaia di persone. Che è una delle cose interessanti dell'open source: non è solo per i geni! Le persone comuni possono creare e / o aiutare a mantenere piccoli pacchetti che ancora risolvono esigenze critiche.

Alcune di quelle "persone normali" hanno costruito un codice straordinario da cui dipende Gatsby. Dato che Gatsby è basato su React, React viene ovviamente subito in mente. Ma c'è di più. Molto di piu. Gatsby si affida anche a Webpack e Babel per eseguire il lavoro pesante intorno all'elaborazione e alla preparazione di JavaScript, CSS e altre risorse da distribuire. Questi progetti sono "fenomenali con anni di ottimo lavoro da parte di migliaia di ingegneri", ha osservato Mathews.

In effetti, se controlli la pagina del pacchetto Babel NPM, troverai 136 dipendenze, ma questo omette tutte le dipendenze degli altri pacchetti rilasciati da Gatsby, per non parlare delle dipendenze delle dipendenze di Gatsby. Tutto sommato, ha affermato Mathews, "Un tipico progetto Gatsby potrebbe utilizzare migliaia di pacchetti gestiti da decine di migliaia di ingegneri in tutto il mondo, il che è sbalorditivo".

È questa dipendenza dall'open source che "aiuta [Gatsby] a muoversi così rapidamente ea fare tante cose come un team relativamente piccolo". È "l'ecosistema Node.js incredibilmente ampio e profondo che ha quasi tutto ciò di cui [Gatsby] ha bisogno", ha concluso. Né è solo. La prossima volta che utilizzerai Linux, contribuisci a Kubernetes o ti impegni in altro modo con software open source, ricorda che nel mondo di oggi siamo tutti irrimediabilmente (e si spera!) Dipendenti da milioni di "sviluppatori ordinari" che fanno cose straordinarie.