Gatsby JS steht auf den Schultern von Tausenden

Vor vielen Jahren hat sich Linux-Gründer Linus Torvalds Sir Isaac Newtons Satz „Auf den Schultern von Riesen stehen“ geliehen, als er über seine Open-Source-Arbeit mit Linux sprach. Es ist zwar ein nettes Gefühl - „Hey, ich konnte nur aufgrund der großartigen Arbeit einiger anderer großartige Arbeit leisten“ -, das möglicherweise 1991 auf Linux zutraf, aber es beschreibt Open Source nicht gut Wenn jemand heute Open Source Code veröffentlicht, greift er schließlich auf weit mehr als eine winzige Gruppe genialer Entwickler zurück.

Nein, wie die neueste Version von Gatsby.js zeigt, hängen moderne Open Source-Projekte von Tausenden anderer Projekte ab. Oder, wie Gatsby-Gründer Kyle Mathews es in einem Interview ausdrückte: „Wir stehen auf den Schultern von Tausenden von [normalen] Menschen.“

1000x schnellere Builds? Ja bitte!

Am Anfang (des Webs) stand der statische Site-Generator. Im Laufe der Zeit wandten sich Unternehmen, wie Mathews in seinem Beitrag beschrieb, datenbankgesteuerten Websites zu, um zunehmend dynamische Funktionen zu unterstützen. Als die Websites wuchsen, führte die Generierung statischer Websites zu langsamen Erstellungsgeschwindigkeiten, selbst wenn datenbankgesteuerte Tools wie WordPress zugunsten der Marketing-Leute wuchsen, die sich nicht um das Codieren in Markdown kümmern wollten. Das Pre-Rendering half den Site-Generatoren, reichte jedoch nicht aus, um sie zur bevorzugten Option für große Sites zu machen.

Aber das war dann; das ist jetzt.

Anfang 2020 führte Gatsby Gatsby Builds ein, mit denen die Build-Zeiten durch eine clevere Kombination aus verteiltem Computing und ausgefeilten Caching-Funktionen 60-mal schneller waren als bei Standardlösungen für die kontinuierliche Bereitstellung. Nett. Mit der jüngsten Version von Incremental Builds erhält Gatsby Builds für Datenbearbeitungen in weniger als 10 Sekunden, was eine 1000-fache Verbesserung gegenüber vorhandenen Build-Lösungen darstellen kann.

Wie? "Das Größte, was wir getan haben", sagte Mathews in einem Interview, "ist ein Abhängigkeits-Tracking-System, mit dem wir kostengünstig herausfinden können, was zwischen Builds aktualisiert werden muss." Wenn dies nach dem Ansatz von Build-Tools wie Bazel oder Datenverarbeitungstools wie Apache Spark und Apache Flink klingt, liegt das daran, dass dies der Fall ist. "Gatsby behandelt Website-Änderungsereignisse von Daten / Code wie andere Stream-Prozessoren - wir finden heraus, was geändert wurde, und aktualisieren sie kostengünstig." Herkömmliche statische Site-Generatoren verfolgen seit langem einen Stapelverarbeitungsansatz für Daten, aber Gatsbys neuer Ansatz ist die Echtzeit-Stream-Verarbeitung.

Es ist eine große Sache, den Gatsby-Ansatz für jede Website nutzbar zu machen, anstatt für einen winzigen Teil des Webs. Es hängt auch von einer erstaunlichen Open-Source-Technologie wie GraphQL ab, mit der Gatsby Datenabhängigkeiten zwischen Seiten und Datenquellen verfolgen kann, damit bei Änderungen einiger Daten berechnet werden kann, welche Seiten aktualisiert werden müssen.

Also fragte ich Mathews, wie abhängig Gatsby von anderen Open Source ist.

Stehend auf den Schultern von React, GraphQL, Webpack, Babel ...

"Wir sind stark von vielen großartigen Projekten abhängig", sagte Matthews. Und dann fuhr er fort:

Der Satz könnte vielleicht aktualisiert werden, dass wir nicht auf den Schultern von Riesen stehen, sondern auf den Schultern von Tausenden von Menschen. Welches ist eines der coolen Dinge an Open Source - es ist nicht nur für Genies! Normale Leute können mundgerechte Pakete bauen und / oder helfen, die noch immer kritische Anforderungen erfüllen.

Einige dieser „normalen Leute“ haben außergewöhnlichen Code erstellt, von dem Gatsby abhängt. Angesichts der Tatsache, dass Gatsby auf React basiert, fällt React offensichtlich sofort ein. Aber es gibt noch mehr. Viel mehr. Gatsby verlässt sich auch auf Webpack und Babel, um die Verarbeitung und Vorbereitung von JavaScript, CSS und anderen Assets für die Bereitstellung zu vereinfachen. Diese Projekte sind „phänomenal mit jahrelanger großartiger Arbeit von Tausenden von Ingenieuren“, bemerkte Mathews.

Wenn Sie die Babel NPM-Paketseite überprüfen, finden Sie 136 Abhängigkeiten. Dabei werden jedoch alle Abhängigkeiten anderer von Gatsby freigegebener Pakete weggelassen, ganz zu schweigen von den Abhängigkeiten der Gatsby-Abhängigkeiten. Alles in allem, sagte Mathews, "könnte ein typisches Gatsby-Projekt Tausende von Paketen verwenden, die von Zehntausenden von Ingenieuren auf der ganzen Welt gewartet werden, was erstaunlich ist."

Es ist diese Abhängigkeit von Open Source, die "[Gatsby] hilft, sich so schnell zu bewegen und so viele Dinge als relativ kleines Team zu tun". Es ist "das erstaunlich breite und tiefe Node.js-Ökosystem, das fast alles hat, was [Gatsby] braucht", schloss er. Er ist auch nicht allein. Wenn Sie das nächste Mal Linux verwenden, zu Kubernetes beitragen oder sich auf andere Weise mit Open Source-Software beschäftigen, denken Sie daran, dass wir in der heutigen Welt alle hoffnungslos (und hoffentlich!) Von Millionen „gewöhnlicher Entwickler“ abhängig sind, die außergewöhnliche Dinge tun.